业务系统对接
更新时间:2020-12-07
本平台支持使用Webhook机制,对接机器人和客户业务系统。具体介绍如下:
URL
与webhook中配置的url一致。
说明
通过webhook server对接业务系统,对会话中的回答value及上下文变量context进行处理,完成业务咨询、业务办理等业务动作。 所有的接口要支持可重入,可根据query_id来判断,系统在请求超时后会重试一次。
请求方式
http post
参数说明
无
请求体说明
参数 | 说明 | 类型 | 是否必需 |
---|---|---|---|
action | 对话树中配置的action | String | 否,依配置情况而定 |
dialog_node_name | 对话树中节点名称,从哪个节点调用的webhook | String | 是 |
context | 会话过程中的上下文变量 | Json | 是 |
valueMap | 当前节点或问答中配置的value回复,如果webhook异常将返回配置的兜底回复话术,若webhook没有返回value, 则用该值代替webhook的返回 | Json | 否,依配置情况而定 |
session_id | 会话id | String | 是,便于全链条复现对话,定位问题。 |
query_id | 请求id | String | 用于定位session中的request。全局唯一。 |
Header Authorization | 校验字段 | String | 是 |
其它配置的headers | 否 |
context包含关键字段说明
特别说明:对于context字段在对话中存储着上下文的所配置的变量,同时由于产品上内置了两个变量(conversation、sys_counter),在context如果配置了以上两个字段将被系统过滤掉
参数字段 | 说明 | 类型 | 是否必需 |
---|---|---|---|
conversation | 当前会话历史记录 | List | 是 |
list中的Map对象
参数 | 说明 | 类型 | 是否必需 |
---|---|---|---|
query | 请求文本 | String | 是 |
answer | 回复文本 | String | 是 |
返回参数
参数 | 说明 | 类型 | 是否必需 |
---|---|---|---|
errno | 错误码 | int | 是 |
msg | 错误信息 | string | 是 |
data | json | 是 |
data
参数 | 说明 | 类型 | 是否必需 | 说明 |
---|---|---|---|---|
context | 需要新增、更新的上下文变量,要清除的用“key”:null | json | 是 | 有一个必须的布尔型参数api_response_status,用来表示业务系统是否正常响应。 |
value | 需要返回的回答 | String | 否 | 如果返回了这个字段,将这个字段的值返回给用户。 |
valueType | 需要返回的答案类型 | int | 否 | 答案类型支持: 文本类型:1 列表类型:8 默认值为:1 |
valueType: 1,纯文本类型
参数名 | 类型 | 说明 |
---|---|---|
value | String | 回复内容类型 1:纯文本 |
valueType: 8,列表类型
参数名 | 类型 | 说明 |
---|---|---|
value | Map | 回复内容类型 8:列表类型 |
value:
参数名 | 类型 | 说明 |
---|---|---|
title | String | 回复标题 |
list | List< String> | 回复列表 |
Authorization 生成方式
public String basic(String userName, String password) {
if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(password)) {
return null;
}
String usernameAndPassword = userName + ":" + password;
byte[] bytes = usernameAndPassword.getBytes(Charset.forName("ISO-8859-1"));
return "Basic " + Base64.getEncoder().encodeToString(bytes);
}
请求示例
curl -XPOST 'https://api-aicp.baidu.com/api/v1/webhook' -d '{"context":{"location":"北京"},"action":"get_weather","dialog_node_name":"get_weather","session_id":"xxxxxxx","query_id":"xxxxxxxxx"}'
返回结果
{"code":200,"time":1515128855583,"msg":"ok","data":{"context":{"api_response_status":true},"value":"周五 01月05日 (实时:1℃),多云转晴,西风微风,3 ~ -6℃.周六,多云转阴,东北风微风,2 ~ -4℃.周日,阴转多云,西南风微风,3 ~ -4℃.周一,晴,西北风4-5级,2 ~ -6℃."}}