自定义技能协议
更新时间:2020-05-27
当为自定义技能配置了Web Service或代码编辑模块,就可以处理技能回复逻辑。在多轮对话填槽完毕后,这些模块会收到机器人平台的请求,请求中带有语义理解后的意图和槽位信息,Web Service或代码编辑模块根据这些请求信息进行具体的业务处理,并返回符合机器人平台格式要求的响应。下面介绍请求和响应的具体内容。
请求参数
机器人平台以POST方式将意图和槽位信息发送给Web Service或代码编辑模块。请求参数的格式如下:
请求说明
说明
参数名 | 参数类型 | 参数含义 |
---|---|---|
logId | STRING | 本次请求的唯一标示,用于查日志 |
intentAndSlotsInfo | 语义处理结果 | |
intentAndSlotsInfo.intentName | STRING | 意图名 |
intentAndSlotsInfo.intentId | STRING | 意图id |
intentAndSlotsInfo.confidence | DOUBLE | 置信度 |
intentAndSlotsInfo.slots | 具体的槽位值列表 | |
intentAndSlotsInfo.slots.slotName | STRING | 槽位名 |
intentAndSlotsInfo.slots.slotValue | STRING | 槽位值原始值归一化后的值 |
intentAndSlotsInfo.slots.originalValue | STRING | 槽位原始值 |
intentAndSlotsInfo.slots.slotId | STRING | 槽位id |
intentAndSlotsInfo.slots.offset | INT | 该槽位值填槽的轮数 |
deviceTags | STRING | 当前对话设备关联的标签名称,多个标签名称使用","分割,可能为空 |
deviceId | STRING | 当前对话设备ID |
请求示例
Plain Text
1 {
2 "logId":"{{STRING}}",
3 "intentAndSlotsInfo":
4 {
5 "intentName":"{{STRING}}",
6 "intentId":"{{STRING}}",
7 "confidence":"{{DOUBLE}}",
8 "slots":[
9 {
10 "slotName":"{{STRING}}",
11 "slotValue":"{{STRING}}",
12 "originalValue":"{{STRING}}",
13 "slotId":"{{STRING}}",
14 "offset":"{{INT}}"
15
16 }
17 ]
18 }
19 "deviceTags":"{{STRING}}",
20 "deviceId":"{{STRING}}"
21 }
响应参数
Web Service或代码编辑模块按具体的业务逻辑处理意图和槽位后,返回符合机器人平台格式要求的响应。响应参数的格式如下:
响应说明
参数名 | 参数类型 | 参数含义 |
---|---|---|
logId | STRING | 建议与接收到request中的logId一致 |
directives | 返回给机器人的指令列表 | |
directives.header.namespace | STRING | 指令namespace |
directives.header.name | STRING | 指令name |
directives.payload | 指令payload |
响应示例
Plain Text
1{
2 "logId":"{{STRING}}",
3 "directives":[
4 {
5 "header":{
6 "namespace":"baidu.abcrobot.directive.directive_namespace_sample",
7 "name":"directive_name_sample"
8 },
9 "payload":{
10
11 }
12 }
13 ]
14}
可选指令列表
您可以通过返回不同的指令对机器人端进行控制,以下是机器人平台支持的指令列表: 1. 语音播报指令 用途: 语音播报
Plain Text
1{
2 "header": {
3 "name": "Speak",
4 "namespace": "baidu.abcrobot.directive.voice_output"
5 },
6 "payload": {
7 "content": "今天天气晴朗"
8 }
9}
2. 纯文本展示指令 用途: 纯文本展示,一般用于播报时播报语的显示
Plain Text
1{
2 "header": {
3 "name": "Text",
4 "namespace": "baidu.abcrobot.directive.text_output"
5 },
6 "payload": {
7 "content": "今天天气晴朗"
8 }
9}
3. 卡片展示指令 用途: 屏幕主体部分的信息展示
注:卡片展示指令有五种子卡片类型,分别是图片卡片,文本卡片,列表卡片,简单图片列表卡片,视频列表卡片
- 图片卡片
Plain Text
1{
2 "header": {
3 "name": "RenderCard",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "type": "ImageCard",
8 "title": "图片卡片标题",
9 "image": "图片地址",
10 "content": "描述信息",
11 "url": "可选,如果图片可以点击,点击图片的跳转地址"
12 }
13 }
- 文本卡片
Plain Text
1{
2 "header": {
3 "name": "RenderCard",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "type": "TextCard",
8 "content": "文本信息",
9 "url": "可选,如果文本可以点击,点击文本的跳转地址"
10 }
11 }
- 列表卡片
Plain Text
1{
2 "header": {
3 "name": "RenderCard",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "type": "ListCard",
8 "list": [
9 {
10 "title": "图片卡片标题1",
11 "image": "图片地址1",
12 "content": "描述信息1",
13 "url": "可选,如果图片可以点击,点击图片的跳转地址"
14 },
15 {
16 "title": "图片卡片标题2",
17 "image": "图片地址2",
18 "content": "描述信息2",
19 "url": "可选,如果图片可以点击,点击图片的跳转地址"
20 }
21 ]
22 }
23 }
- 简单图片列表卡片
Plain Text
1{
2 "header": {
3 "name": "RenderCard",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "type": "SimpleImageListCard",
8 "list": [
9 {
10 "image": "图片地址1",
11 "url": "可选,如果图片可以点击,点击图片的跳转地址"
12 },
13 {
14 "image": "图片地址2",
15 "url": "可选,如果图片可以点击,点击图片的跳转地址"
16 }
17 ]
18 }
19 }
- 视频列表卡片
Plain Text
1{
2 "header": {
3 "name": "RenderCard",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "type": "SimpleImageListCard",
8 "list": [
9 {
10 "video": "视频地址1",
11 "thumbnail": "可选,视频缩略图1"
12 },
13 {
14 "video": "视频地址2",
15 "thumbnail": "可选,视频缩略图2"
16 }
17 ]
18 }
19 }
4. 页面渲染指令
Plain Text
1{
2 "header": {
3 "name": "RenderHtml",
4 "namespace": "baidu.abcrobot.directive.screen"
5 },
6 "payload": {
7 "url": "需要渲染的url地址"
8 }
9}