第三方技能
更新时间:2020-08-19
简介
如果开发者在接入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":"今天天气晴,阳光不错。"
}
}
]
}