文档简介:
这套协议是客户端和ABC Robot云端的通信协议,客户端借助此协议,实现端云交互,完成请求发送和返回值处理。我们将端云交互抽象成事件、指令和端状态的形式,客户端的请求由事件和端状态组合而成,云端处理客户端传输的事件和端状态,将处理结果以指令集的形式下发给机器人,客户端执行收到的指令集,完成交互逻辑。
ClientContext(端状态)
ClientContext(端状态)反映的是客户端发起请求时的状态,客户端把端状态告知云端,云端可以根据设备端当前状态做出不同的逻辑决策,从而下发不同的指令集。例如,当前设备端正在语音播报,客户端收音并发起请求时将语音播报状态带上,这样云端就可以智能选择是否要求客户端打断当前语音播报。
示例
{ "clientContextV2":{ "TTS_PLAYING": "true", "APP_VERSION": "2", "WAKEUP_TYPE":
"easyTalk|wakeupWord|touchBody|touchScreen", "MANUAL_REPLY": "true|false", "DIRECTION_INVALID":
"0", "NAV_RUNNING":"true|false", "GUIDE_RUNNING":"true|false", "CHAT_IN_GUIDING":"true|false",
"KNOW_ME_RUNNING":"true|false", }, "event": { ... } }
参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
TTS_PLAYING | string | 否 | 客户端语音播报状态,取值为 "true" 和 "false",表示是否在语音播报 |
APP_VERSION | string | 否 | 客户端Base App版本,目前取值为 "2" |
WAKEUP_TYPE | string | 否 | 唤醒方式,取值为easyTalk、wakeupWord、touchBody、touchScreen |
MANUAL_REPLY | string | 否 | 人工回复是否开启, 取值为 "true" 和 "false" |
DIRECTION_INVALID | string | 否 | 语音角度,0表示角度内,其它表示角度外 |
NAV_RUNNING | string | 否 | 是否处于导航状态,取值为 "true" 和 "false" |
GUIDE_RUNNING | string | 否 | 是否处于导览状态,取值为 "true" 和 "false" |
CHAT_IN_GUIDING | string | 否 | 导览状态下是否支持聊天,取值为 "true" 和 "false"。当用户通过“开始导览”等话术触发导览,请注意对话接口Playload中的chatInGuiding字段的值。在导览过程中,将chatInGuiding字段的值进行回传即可;如果CHAT_IN_GUIDING没有回chatInGuiding的值,那么服务端将以客户端传值为准进行业务逻辑判断 |
KNOW_ME_RUNNING | string | 否 | 是否处于熟人识别状态,取值为 "true" 和 "false"。在项目支持熟人识别的情况下,用户通过“你认识我吗?”等话术触发熟人识别流程,在熟人识别过程中,需要将该字段的值设置为"true",其他情况下可以不传该字段的值或传"false" |
Event(事件)
我们把客户端和云端交互的请求数据组装成Event(事件)发给云端,常见的事件例如:人脸识别事件等。
TextInput事件
TextInput事件是以文本的方式请求ABC Robot对话接口,这个过程不包含ASR。
示例
{ "header": { "namespace": "baidu.abcrobot.event.text_input", "name":
"TextInput" }, "payload": { "query": "今天天气怎么样" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
query | string | 是 | 请求文本 |
FaceRecognition事件
人脸识别事件,整个人脸识别请求由两部分组成:人脸识别事件和人脸图片。
{ "header": { "namespace": "baidu.abcrobot.event.face_recognition", "name": "FaceRecognition" },
"payload": { "group":"face group id" } }
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
group | string | 否 | 人脸库ID。若不填写,则云端会默认使用default人脸库进行人脸识别。 |
二进制图片附件
--this-is-a-boundary
Content-Disposition: form-data; name="image"; filename="image"
Content-Type: application/octet-stream
{{binary image attachment}}
--this-is-a-boundary
FaceComparison事件
人脸1:1比对事件,整个人脸1:1比对请求由两部分组成:人脸1:1比对事件和两张人脸图片。
{ "header": { "namespace": "baidu.abcrobot.event.face_recognition", "name": "FaceComparison" },
"payload": { "imageTypes":[ 1, 2 ] } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
imageTypes | list of int | 是 | 图片类型值,取值范围详见下面说明。 |
imageTypes参数说明
图片类型值 | 类型 | 是否必需 |
---|---|---|
1 | 生活照 | 通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等 |
2 | 身份证芯片照 | 二代身份证内置芯片中的人像照片 |
3 | 带水印证件照 | 一般为带水印的小图,如公安网小图 |
4 | 证件照片 | 如拍摄的身份证、工卡、护照、学生证等证件图片,注:需要确保人脸部分不可太小,通常为100px*100px |
二进制图片附件
--this-is-a-boundary
Content-Disposition: form-data; name="image"; filename="image"
Content-Type: application/octet-stream
{{binary image 1 attachment}}
--this-is-a-boundary
--this-is-a-boundary
Content-Disposition: form-data; name="image"; filename="image"
Content-Type: application/octet-stream
{{binary image 2 attachment}}
--this-is-a-boundary
FaceImageInput事件
人脸图片上传事件,人脸图片上传请求由两部分组成:人脸图片上传事件和人脸图片。
{ "header": { "namespace": "baidu.abcrobot.event.image_input", "name": "FaceImageInput" }, "payload": {} }
二进制图片附件
--this-is-a-boundary
Content-Disposition: form-data; name="image"; filename="image"
Content-Type: application/octet-stream
{{binary image attachment}}
--this-is-a-boundary
RobotConfig事件
客户端拉取配置事件,云端收到这个事件后,会将云端配置下发给客户端。
{ "header": { "namespace": "baidu.abcrobot.event.system", "name": "RobotConfig" }, "payload": {} }
Directive(指令)
云端把下发给客户端的操作封装成指令的格式,客户端收到指令后,依据指令的namespace、name和payload做出相应的响应。比如,Text指令,客户端收到这个指令后显示指令里的文本内容。
header参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
namesace | string | 是 | 指令的命名空间 |
name | string | 是 | 指令的名字 |
interactionId | string | 是 | 客户端生成的,本次请求的交互ID |
messageId | string | 是 | 云端生成的消息ID |
常规指令
Speak指令
语音播报指令,客户端将指令的文本内容转换成语音并播报。
{ "header": { "namespace": "baidu.abcrobot.directive.voice_output", "name": "Speak",
"interactionId": "", "messageId": "" }, "payload": { "content": "今天晴,天气不错!" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
content | string | 是 | 用于语音播报的文本内容 |
Text指令
文本显示指令,一般用于显示语音播报对应的文本,长文本的显示请使用卡片显示中的TextCard指令。
{ "header": { "namespace": "baidu.abcrobot.directive.text_output", "name": "Text", "interactionId":
"", "messageId": "" }, "payload": { "content": "为您找到长城的介绍" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
content | string | 是 | 用于显示的文本内容 |
Hints指令
提示信息指令,用于引导用户进行下一轮交互。如用户问“天气怎么样”,云端在返回天气答案的同时,会下发Hints指令,如“明天呢”、“天津呢”,引导用户进行多轮对话。
{ "header": { "namespace": "baidu.abcrobot.directive.hint", "name": "Hints",
"interactionId": "", "messageId": "" }, "payload": { "hints": [ "我要办理值机" ] } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
hints | list of string | 是 | 提示信息列表 |
Text指令和Hints指令排版示例如下,其中“为您找到长城的介绍”为Text指令,“我要办理值机”为Hints指令。
卡片显示
下面介绍的指令都是涉及客户端卡片显示的,客户端收到这些指令后,根据不同的类型展示不同的卡片。卡片显示指令统一使用RenderCard指令header,通过不同的payload来区分不同的卡片。
{ "header": { "namespace": "baidu.abcrobot.directive.screen", "name": "RenderCard",
"interactionId": "", "messageId": "" }, "payload": { {{不同的payload}} } }
TextCard类型卡片
文本卡片。参考排版方式:标题、内容上下排列,左对齐。
{ "type": "TextCard", "title": "长城", "content": "${{长城|link0}}(The Great Wall),
又称万里长城...", "url": "https://baike.baidu.com/item/%E9%95%BF%E5%9F%8E/14251", "links":
{ "link0": { "type": "renderHtml", "url": "http://robot.baidu.com/" } } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为TextCard |
title | string | 否 | 标题 |
content | string | 是 | 内容 |
url | string | 否 | 点击卡片的跳转 |
links | json | 否 | 详见links说明 |
ImageCard类型卡片
图片卡片,包含图片和对应的文本信息。参考排版方式:图片在左侧,标题、内容上下排列,三者左对齐。
{ "type": "ImageCard", "title": "长城", "image": "https://timgsa.baidu.com/timg?
20100603_96286_1.jpg", "content": "Great Wall)又称${{万里长城|link0}},是中国古代的军事防御工程,
是...", "url": "https://baike.baidu.com/item/长城/14251", "links": { "link0": { "type":
"renderHtml", "url": "http://robot.baidu.com/" } } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为ImageCard |
title | string | 否 | 标题 |
content | string | 是 | 内容 |
image | string | 是 | 图片 |
url | string | 否 | 点击卡片的跳转 |
links | json | 否 | 详见links说明 |
ListCard类型卡片
列表卡片格式一,参考排版方式:列表包行多项,上下依次排列。每一项的排列方式和ImageCard的相同。
{ "type":"ListCard", "links":{ "link0":{ "speak":"播报话术", "type":"sendTextEvent",
"query":"防御工程" }, "link1":{ "speak":"播报话术", "type":"sendTextEvent", "query":"防御工程" }
} "title": "", "list":[ { "title": "柳宗元", "content":"${{防御工程|link0}}", "image":
"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2541339440,4048181160&fm=58", "url": "" },
{ "title": "曾巩", "content":"${{防御工程|link1}}", "image": "https://ss2.baidu.com/6ONYsj
ip0QIZ8tyhnq/it/u=2541339440,4048181160&fm=58", "url": "" }, ... ] }
列表卡片格式二,参考排版方式:卡片主标题和列表项上下依次排列,左对齐。
{ "type":"ListCard", "links":{ "link0":{ "speak":"播报话术", "type":"sendTextEvent",
"query":"里程查询" }, "link1":{ "speak":"播报话术", "type":"sendTextEvent", "query":"里程补登" },
"link1":{ "speak":"播报话术", "type":"sendTextEvent", "query":"里程兑换" } } "title":
"请选择您所需要办理的业务类型", "list":[ { "content":"${{1.里程查询|link0}}", },
{ "content":"${{2.里程补登|link1}}", }, { "content":"${{3.里程兑换|link2}}", } ] }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为ListCard |
title | string | 否 | 标题 |
list | json | array | 是 |
links | json | 否 | 详见links说明 |
列表项
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
title | string | 否 | 标题 |
content | string | 是 | 内容 |
image | string | 否 | 图片 |
url | string | 否 | 点击列表项的跳转 |
SimpleImageListCard类型卡片
简单图片列表卡片,为多个图片的集合,在仅展示图片的场景下,建议用此卡片。参考排版方式:这种类型只包含图片列表,图片排列依据屏幕宽度换行排列。
{ "type": "SimpleImageListCard", "list": [ { "image": "image_src", "url": "http://robot.baidu.com/" },
{ "image": "image_src", "url": "http://robot.baidu.com/" } ] }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为SimpleImageListCard |
list | json | array | 是 |
列表项
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
image | string | 否 | 图片 |
url | string | 否 | 点击列表项的跳转 |
InputCard类型卡片
输入卡片,参考排版格式:标题、内容、输入说明列表项上下依次排列,左对齐。
{ "type": "InputCard", "content" : "请您输入需查询的完整的城市对信息,例如广州飞北京',
"inputList" : [ "出发城市:", "到达城市:" ] "queryFormat": "${{input0}}飞${{input1}}" }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为InputCard |
title | string | 否 | 标题 |
content | string | 是 | 内容 |
inputList | string array | 是 | 输入列表说明,inputList的数量,对应输入框数量。 |
queryFormat | string | 是 | 输入内容编排格式,对应格式为 ${{input0}} ${{input1}},input的序号对应inputList数组的index。 |
HintsCard类型卡片
信息提示卡片,list中为提示内容列表信息。
{ "type": "HintsCard", "content" : "小度能带你到这些地方', "list": [ { "content": "带我去第七展厅" },
{ "content": "带我去7号楼" }, { "content": "带我去卫生间" },
{ "content": "带我去电梯口" }, { "content": "带我去净化器" } ] }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 模板类型,固定取值为HintsCard |
content | string | 否 | 标题 |
list | string | 是 | 内容 |
复合类型卡片
复合类型卡片支持更复杂的卡片点击、卡片间跳转等操作,目前我们为用户航班信息查询场景,提供里程查询、消费查询等卡片间的跳转。如果开发者有接入需求,请提交工单联系我们。
links字段说明
文本点击操作,文本整段或部分显示可点击。自定义协议:${{长城|link0}},link0为links json里的key。
字段名 | 类型 | json key | json value类型 | json value具体内容 | 说明 |
---|---|---|---|---|---|
links | json | ||||
link0 | json | {"type": "renderHtml","url": "http://xxxx"} | renderHtml点击获取网页。link0为点击文本对应的ID,实际使用时取值不定。type和url都是必须的。 | ||
link1 | json | {"type": "sendTextEvent","speak": "播报内容","query": "具体query"} | sendTextEvent点击发起event请求。speak为点击时的播报。query为event发起的文本query。 | ||
link2 | json | {"type": "renderCard","speak": "播报内容","cardIndex": 1} | renderCard点击跳转到本地卡片。speak为点击时的播报。cardIndex为卡片的ID。 | ||
... |
音量控制
AdjustVolume指令
调节音量指令,客户端根据指令内的字段调节本地系统音量。
{ "header": { "namespace": "baidu.abcrobot.directive.speaker_controller", "name": "AdjustVolume",
"interactionId": "", "messageId": "" }, "payload": { "volume_control": "down", "volume_value": "5.0" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
volume_control | string | 是 | 声音调高或调低,取值为up和down。 |
volume_value | string | 否 | 声音调高或调低的数值,例如:"5.0"。当此字段为空时(如用户说“声音大一点”,没有包含具体的音量值),客户端可按照固定的音量值进行调节。 |
SetMute指令
静音指令,客户端根据指令设置打开或取消静音。
{ "header": { "namespace": "baidu.abcrobot.directive.speaker_controller", "name": "SetMute",
"interactionId": "", "messageId": "" }, "payload": { "switch":"on" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
switch | string | 是 | 静音,取值为on和off,on表示打开静音,off表示取消静音。 |
运动控制
下面介绍的都是涉及客户端运动控制的指令,客户端收到这些指令后,可以控制客户端做出相应的动作。
Walk指令
行走指令,控制设备行走一段距离。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Walk",
"interactionId": "", "messageId": "" }, "payload": { "direction": "forward", "distance": "5.0", "distance_unit": "米" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
direction | string | 是 | 移动的方向,取值为forward、backward、left、right。 |
distance | string | 否 | 移动的距离,例如:"5.0"。 |
distance_unit | string | 否 | 移动距离的单位,例如:"米"。 |
Turn指令
转动指令,控制设备转动一定角度。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Turn",
"interactionId": "", "messageId": "" }, "payload": { "direction": "forward", "angle": "90.0", "angle_unit": "度" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
direction | string | 是 | 转动的方向,取值为forward、backward、left、right。 |
angle | string | 否 | 转动的角度,例如:"90.0"。 |
angle_unit | string | 否 | 移动距离的单位,例如:"度"。 |
RaiseHands指令
抬手指令,设备可以抬起手臂。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "RaiseHands",
"interactionId": "", "messageId": "" }, "payload": { "hands": "hand" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
hands | string | 是 | 手臂选择,取值为hand、left_hand、right_hand。 |
ShakeHands指令
握手指令,设备可以做出握手动作。例如当用户说“握个手”时,云端会下发该指令。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "ShakeHands",
"interactionId": "", "messageId": "" }, "payload": {} }
Hug指令
拥抱指令,设备可以做出拥抱动作。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Hug" }, "payload": {} }
TwistHead指令
摇头指令,设备可以做出摇头动作。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "TwistHead" }, "payload": {} }
TurnHeadLeft指令
向左看指令,客户端可以做出向左看动作。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "TurnHeadLeft",
"interactionId": "", "messageId": "" }, "payload": {} }
TurnHeadRight指令
向右看指令,客户端可以做出向右看动作。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "TurnHeadRight",
"interactionId": "", "messageId": "" }, "payload": {} }
Stop指令
停止运动指令,设备收到该指令后停止当前动作。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Stop" }, "payload": {} }
Wave指令
打招呼指令。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Wave", "interactionId":
"", "messageId": "" }, "payload": {} }
DoAnAction指令
动一下指令。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "DoAnAction",
"interactionId": "", "messageId": "" }, "payload": {} }
Charge指令
充电指令,控制设备开始充电或停止充电。例如,当用户说“回去充电”时,可控制机器人进行自主充电。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Charge",
"interactionId": "", "messageId": "" }, "payload": { "switch": "on" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
switch | string | 是 | 充电,取值为on和off,on表示开始充电, off表示停止充电。 |
巡航指令
巡航指令,控制设备开始巡航或停止巡航。例如,当用户说“开始巡航”时,可控制机器人按编排的路线进行巡航。
{ "header": { "namespace": "baidu.abcrobot.directive.action", "name": "Cruise", "interactionId":
"", "messageId": "" }, "payload": { "switch": "on" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
switch | string | 是 | 巡航,取值为on和off,on表示开始巡航, off表示停止巡航。 |
导航指令
当用户说“带我去XXX”时,可控制机器人导航至XXX地点。
{ "header": { "namespace": "baidu.airport.directive.navigation", "name": "Navigate",
"interactionId": "", "messageId": "" }, "payload": { "target": "卫生间" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
target | string | 是 | 用户要导航的地点,要求该地点在机器人地图上存在 |
导览指令
开始导览指令
当用户说“开始导览”时,可控制机器人按编排的路线进行导览讲解。
{ "header": { "namespace": "baidu.standard.directive.guide", "name": "StartGuideFlow",
"interactionId": "", "messageId": "" }, "payload": { "routeName":"导览路线1", "chatInGuiding" : true } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
flowName | string | 是 | 导览路线名称 |
thumbnailsUrl | string | 是 | 导览路线缩略图 |
chatInGuiding | string | 是 | 在该路线的导览讲解过程中是否支持聊天 |
结束导览指令
当用户说“结束导览”时,可控制机器人结束导览讲解。
{ "header": { "namespace": "baidu.standard.directive.guide", "name": "EndGuideFlow",
"interactionId": "", "messageId": "" }, "payload": { } }
继续导览指令
当机器人在导览过程中被打断后处于暂停导览状态的情况下,用户说“继续导览”时,可控制机器人继续暂停前的导览讲解。
{ "header": { "namespace": "baidu.standard.directive.guide", "name": "ProceedCurrentStep",
"interactionId": "", "messageId": "" }, "payload": { } }
下一个导览点
当机器人在某一个导览点进行讲解时,可以通过“下一个讲解点”话术,控制机器人结束当前点的讲解,直接到下一个导览点进行讲解。
{ "header": { "namespace": "baidu.standard.directive.guide", "name": "ProceedNextStep",
"interactionId": "", "messageId": "" }, "payload": { } }
人脸指令
FaceRecognitionResult指令
人脸识别结果指令,云端下发人脸识别结果给客户端。
{ "header": { "namespace": "baidu.abcrobot.directive.face_recognition", "name":
"FaceRecognitionResult", "interactionId": "", "messageId": "" }, "payload": { "name":
"name", "sex": "MALE", "age": 30,, "uid": "N1088", "faceliveness": true, "type": "VIP" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
name | string | 否 | 人脸的名字 |
sex | string | 否 | 人脸的性别,取值位MALE和FEMALE。 |
age | int | 否 | 人脸的年龄 |
uid | string | 否 | 人脸ID |
faceliveness | boolean | 是 | 检测是否是活体 |
type | string | 是 | 人脸类型,取值为VIP和UNKNOWN。 |
FaceComparisonResult指令
人脸比对结果指令,云端下发人脸比对结果给客户端。
{ "header": { "namespace": "baidu.abcrobot.directive.face_recognition", "name": "FaceComparisonResult",
"interactionId": "", "messageId": "" }, "payload": { "score": 89.9 } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
score | float | 是 | 比对分数,80分以上可以认为是同一个人 |
GetFaceImage指令
上传人脸图片指令,客户端收到这个指令后,上传人脸图片到云端,与FaceImageInput事件配合使用。
{ "header": { "namespace": "baidu.abcrobot.directive.image_input", "name": "GetFaceImage",
"interactionId": "", "messageId": "" }, "payload": {} }
系统指令
SyncRobotConfig指令
云端配置下发指令,由RobotConfig事件触发。
{ "header": { "namespace": "baidu.abcrobot.directive.system", "name": "SyncRobotConfig",
"interactionId": "", "messageId": "" }, "payload": { "welcomeSpeeches": [ "您好,很高兴为您服务",
"${name}您好,很高兴为您服务" ], "faceWakeUpType": 1, "sensitiveWords":[ "abc", "edf" ] } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
welcomeSpeeches | list of string | 是 | 欢迎语列表 |
faceWakeUpType | int | 是 | 人脸唤醒类型,1在线,2代表离线。 |
sensitiveWords | list of string | 否 | 敏感词列表 |
InquireEnergy指令
电量查询指令,客户端收到这个指令后,显示客户端电量。
{ "header": { "namespace": "baidu.abcrobot.directive.instruction", "name": "InquireEnergy",
"interactionId": "", "messageId": "" }, "payload": {} }
ShowFeatures指令
功能页展示指令,客户端收到这个指令后,展示功能介绍页。
{ "header": { "namespace": "baidu.abcrobot.directive.instruction", "name": "ShowFeatures",
"interactionId": "", "messageId": "" }, "payload": {} }
媒体资源控制指令
媒体播放指令
用于播放媒体资源,如唱一首没有共产党就没有新中国。
{ "header": { "namespace": "baidu.abcrobot.directive.media_control", "name": "PlayMedia",
"interactionId": "", "messageId": "" }, "payload": { "name":"没有共产党就没有新中国", "type":"SING_SONG" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | string | 是 | 播放媒体类型,目前只支持“SING_SONG”类型 |
name | string | 是 | 播放内容名称 |
媒体播放控制指令
用于媒体播放控制,如暂停,继续,下一个,换一个等
{ "header": { "namespace": "baidu.abcrobot.directive.media_control", "name": "PlayControl",
"interactionId": "", "messageId": "" }, "payload": { "action":"play_next" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
action | string | 是 | 播放控制动作,可选值:play_pause(暂停), play_continue(继续), play_next(下一个), play_switch(切换) |
页面切换控制指令
用于页面切换控制,比如返回主页,返回上一页,下一页等
{ "header": { "namespace": "baidu.abcrobot.directive.media_control", "name": "PageControl",
"interactionId": "", "messageId": "" }, "payload": { "pageName":"MAIN_PAGE" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
pageName | string | 是 | 页面名称,可选值:MAIN_PAGE(返回主页),PREVIOUS_PAGE(返回父级页面),LAST_PAGE(上一页),NEXT_PAGE(下一页) |
按索引选择指令
用于在媒体列表中,按索引选择要操作的媒体项。如第一个/页,倒数第一个/页等,
{ "header": { "namespace": "baidu.abcrobot.directive.media_control", "name": "SelectByIndex",
"interactionId": "", "messageId": "" }, "payload": { "order": "POS", "index": 1, "unit": "page" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
order | string | 是 | 选择顺序,如,第一个、倒数第一个等。可选值:POS(顺序)、NEG(倒序) |
index | int | 是 | 选择索引,整数,可选值:1、2、3... |
unit | string | 是 | 索引单位,如第一页、第一个等。可选值:page(页)、pcs(个) |
其它指令
NLUResult指令
语义理解结果指令,开发者使用自定义技能时,可以在技能回复中配置成直接获取NLU结果,并通过这个指令下发。
{ "header": { "namespace": "baidu.abcrobot.directive.nlu", "name": "NLUResult",
"interactionId": "", "messageId": "" }, "payload": { "skill": { "name": "CUSTOMER" },
"intent": { "name": "RECHARGE" }, "slots": [ { "name": "cellphone", "originalWord":
"13810102020", "normalizedWord": "13810102020" } ] } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
skill.name | string | 是 | 技能名称 |
intent.name | string | 是 | 意图名称 |
slots | json array | 否 | 槽位列表 |
slots[i].name | string | 是 | 槽位名称 |
slots[i].originalWord | string | 是 | 槽位值 |
slots[i].normalizedWord | string | 是 | 归一化槽位值 |
CustomData指令
自定义参数下发指令,通常为控制台配置的KV集合,例如问答库中的自定义参数。
{ "header": { "namespace": "baidu.abcrobot.directive.custom", "name": "CustomData",
"interactionId": "", "messageId": "" }, "payload": { "data": { "key": "value", ... } } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
data | json | 是 | 自定义参数json结构,json里的取值是自定义的key和value,目前问答库支持自定义参数下发。 |
技能分发描述指令
用于表明用户问题命中技能和答案来源技能。
{ "header": { "namespace": "baidu.abcrobot.directive.skill_dispatch", "name":
"SkillInfo", "interactionId": "", "messageId": "" }, "payload": { "type": "Navigation", } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
type | String | 是 | 问题命中技能信息,目前只支持Navigation,在没有明确下发导航指令,但用户问题命中导航意图时下发,用于机器人端打开导航相关页面的判断条件 |
End指令
再见指令,客户端收到这个指令后,客户端重置和云端交互的session。
{ "header": { "namespace": "baidu.abcrobot.directive.session", "name": "End",
"interactionId": "", "messageId": "" }, "payload": {} }
Error指令
错误指令,客户端请求云端返回此指令,表示请求失败,客户端根据相应的错误码做错误处理。
{ "header": { "namespace": "baidu.abcrobot.directive.error", "name": "Error",
"interactionId": "", "messageId": "" }, "payload": { "code": 50300, "message": "……" } }
payload参数说明
字段名 | 类型 | 是否必需 | 说明 |
---|---|---|---|
code | int | 是 | 错误码 |
message | string | 是 | 错误描述 |
错误码
错误码 | 描述 | 类别 | 备注 |
---|---|---|---|
40001 | 客户端http请求缺少参数,或者参数错误 | 请求数据数据问题(4xxxx) | 详细信息见message字段 |
40002 | 没有对应的处理器处理该event | 请求数据数据问题(4xxxx) | 详细信息见message字段 |
50100 | 协议模块通用错误 | 协议模块问题(501xx) | 详细信息见message字段 |
50200 | 对话模块通用错误 | 下游对话服务问题(502xx) | 详细信息见message字段 |
50300 | 人脸模块通用错误 | 下游人脸服务问题(503xx) | 详细信息见message字段 |
50000 | 其他通用错误 | 通用错误 | 详细信息见message字段 |