自定义技能协议
更新时间: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 |
请求示例
{
"logId":"{{STRING}}",
"intentAndSlotsInfo":
{
"intentName":"{{STRING}}",
"intentId":"{{STRING}}",
"confidence":"{{DOUBLE}}",
"slots":[
{
"slotName":"{{STRING}}",
"slotValue":"{{STRING}}",
"originalValue":"{{STRING}}",
"slotId":"{{STRING}}",
"offset":"{{INT}}"
}
]
}
"deviceTags":"{{STRING}}",
"deviceId":"{{STRING}}"
}
响应参数
Web Service或代码编辑模块按具体的业务逻辑处理意图和槽位后,返回符合机器人平台格式要求的响应。响应参数的格式如下:
响应说明
参数名 | 参数类型 | 参数含义 |
---|---|---|
logId | STRING | 建议与接收到request中的logId一致 |
directives | 返回给机器人的指令列表 | |
directives.header.namespace | STRING | 指令namespace |
directives.header.name | STRING | 指令name |
directives.payload | 指令payload |
响应示例
{
"logId":"{{STRING}}",
"directives":[
{
"header":{
"namespace":"baidu.abcrobot.directive.directive_namespace_sample",
"name":"directive_name_sample"
},
"payload":{
}
}
]
}
可选指令列表
您可以通过返回不同的指令对机器人端进行控制,以下是机器人平台支持的指令列表: 1. 语音播报指令 用途: 语音播报
{
"header": {
"name": "Speak",
"namespace": "baidu.abcrobot.directive.voice_output"
},
"payload": {
"content": "今天天气晴朗"
}
}
2. 纯文本展示指令 用途: 纯文本展示,一般用于播报时播报语的显示
{
"header": {
"name": "Text",
"namespace": "baidu.abcrobot.directive.text_output"
},
"payload": {
"content": "今天天气晴朗"
}
}
3. 卡片展示指令 用途: 屏幕主体部分的信息展示
注:卡片展示指令有五种子卡片类型,分别是图片卡片,文本卡片,列表卡片,简单图片列表卡片,视频列表卡片
- 图片卡片
{
"header": {
"name": "RenderCard",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"type": "ImageCard",
"title": "图片卡片标题",
"image": "图片地址",
"content": "描述信息",
"url": "可选,如果图片可以点击,点击图片的跳转地址"
}
}
- 文本卡片
{
"header": {
"name": "RenderCard",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"type": "TextCard",
"content": "文本信息",
"url": "可选,如果文本可以点击,点击文本的跳转地址"
}
}
- 列表卡片
{
"header": {
"name": "RenderCard",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"type": "ListCard",
"list": [
{
"title": "图片卡片标题1",
"image": "图片地址1",
"content": "描述信息1",
"url": "可选,如果图片可以点击,点击图片的跳转地址"
},
{
"title": "图片卡片标题2",
"image": "图片地址2",
"content": "描述信息2",
"url": "可选,如果图片可以点击,点击图片的跳转地址"
}
]
}
}
- 简单图片列表卡片
{
"header": {
"name": "RenderCard",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"type": "SimpleImageListCard",
"list": [
{
"image": "图片地址1",
"url": "可选,如果图片可以点击,点击图片的跳转地址"
},
{
"image": "图片地址2",
"url": "可选,如果图片可以点击,点击图片的跳转地址"
}
]
}
}
- 视频列表卡片
{
"header": {
"name": "RenderCard",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"type": "SimpleImageListCard",
"list": [
{
"video": "视频地址1",
"thumbnail": "可选,视频缩略图1"
},
{
"video": "视频地址2",
"thumbnail": "可选,视频缩略图2"
}
]
}
}
4. 页面渲染指令
{
"header": {
"name": "RenderHtml",
"namespace": "baidu.abcrobot.directive.screen"
},
"payload": {
"url": "需要渲染的url地址"
}
}