文档简介:
简介
如果开发者在接入ABC Robot机器人平台时,自己已经购买或开发了智能交互应用(如智能客服、知识库等),机器人平台开放了第三方技能接入功能,帮助开发者快速将自己的应用对接到机器人平台。
接入方式
开发者将自己的服务抽象成统一的HTTP接口,并将接口地址登记在机器人开放平台上,机器人端的请求会经过机器人大脑分发给开发者的第三方技能,接收并处理第三方技能的返回结果,页面入口如下:
配置信息
技能信息
开发者需要登记自己的技能名称、技能描述、技能服务地址、示例问法等信息,机器人大脑会根据相关信息,将客户端的请求转发给开发者的第三方技能,页面配置如下:
授权配置
开发者提供的接口鉴权采用OAuth2.0 Client Credentials Grant模式,开发者提供clientId、clientSecret、OAuth服务地址,并登记到机器人平台。调用接口前,机器人大脑会获取接口访问的access token,并使用这个access token访问开发者的接口,页面配置如下:
自定义事件
开发者接入第三方技能后,机器人大脑会将语音识别文本的TextInput事件发送给第三方技能,同时允许开发者按照端云交互协议的事件格式自定义事件。开发者将自定义事件header的namespace和name登记在机器人平台,当机器人客户端使用自定义事件发起请求时,机器人大脑会匹配自定义事件的header信息,匹配成功后将事件发送给开发者的服务,机器人大脑处理相关返回值发送给机器人客户端。自定义事件的payload内容,机器人大脑不做限制,完全是开发者的私有协议,机器人大脑只做透传,页面配置如下:
开发者输入自定义事件的namespace和name,如下图:
请求格式
POST /thirdparty/service/url Authorization bearer {{access token}} { "interactionId":"a977b80d-7e39-4eef-b556-443de830234e",
// 机器人大脑维护的交互id "sessionId":"6ed00b2f-c8f4-4509-99af-bf8a922f8d9d",
// 机器人大脑维护的session id "deviceId":"E248-91D6-348B-6A03", // 设备id "clientId":"FEALz7He",
// 机器人平台项目的client id,请前往"概览>开发者资源"获取 "eventRequest":
{ // eventRequest中的event为端云交互协议的事件, clientContextV2为端云交互协议的端状态(KV结构)
"event":{ "header":{ "name":"TextInput", "namespace":"baidu.abcrobot.event.text_input",
"messageId":"msg_6oG", "interactionId":"inter_DpaUSmBx" }, "payload":{ "query":"今天天气" } },
"clientContextV2":{ "a": "b" } } }
返回格式
{ "errorCode":0, // 错误码 "errorMsg":"", // 错误描述 "success":true, // 是否成功被第三方技能接住,
机器人大脑会判断此字段 "seizeNextInput": false, // 通知机器人大脑是否抢占下一轮客户端输入(例如,在一些流程办理的场景下,
需要当前技能连续不中断地处理用户的请求,直至完成当前业务) "directives":[ // directives为端云交互协议的指令列表
{ "header":{ "namespace":"baidu.abcrobot.directive.voice_output", "name":"Speak", "interactionId"
:"a977b80d-7e39-4eef-b556-443de830234e", "messageId":"70fbab19-5710-4993-a533-3b2aa8372148" },
"payload":{ "content":"今天天气晴,阳光不错。" } } ] }