1. 使用说明
在线客服机器人网关(以下简称网关)帮助您将智能体快速接入在线客服系统,实现智能客服功能。本文档将指导您完成智能体的接入。
2. 接入流程
2.2. 接入说明
2.2.1. 注册智能体
您需要先将您的智能体注册到网关上,注册完成后才能在路由导航中配置该智能体。
2.2.2. 配置路由导航
在完成智能体注册后,您需要在路由导航机器人节点配置您注册后的智能体机器人。
2.2.3. 消息推送和响应
完成上述配置后,网关将自动把访客消息推送至智能体。在接收到智能体响应后,网关会将响应消息发送给访客,实现访客和智能体机器人之间的消息实时传递与响应。
3. 支持平台
网关支持对接多种智能体平台,对每个智能体平台提供了一个默认的对接方式,您可以根据实际需求,在智能体注册时选择适配智能体的对接方式。
智能体平台 | 鉴权方式 | 推送方式 | 响应方式 | 支持情况 |
---|---|---|---|---|
Dify |
TOKEN鉴权 |
Dify推送方式 |
Dify响应方式 |
Yes |
Coze(扣子) |
TOKEN鉴权 |
Coze推送方式 |
Coze响应方式 |
No |
Default(默认) |
TOKEN鉴权 |
默认推送方式 |
默认响应方式 |
Yes |
备注:其他主流智能体平台待完善补充。
4. 注册
4.1. 注册智能体
该接口为在线客服API,需按照在线客服API接口规范进行调用。
接口只支持一次调用,多次调用会注册多个机器人,同一智能体开启会话和消息接口一同配置,无开启会话接口时无需注册。
4.1.1. 请求接口
POST /livechat/third_part_bot_register
4.1.2. 请求头
名称 | 值 | 是否必需 | 描述 |
---|---|---|---|
ContentType |
application/json |
true |
内容类型和字符编码 |
4.1.3. 请求参数
名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
name |
String |
true |
智能体机器人名称 |
domain |
String |
true |
网关推送智能体接口域名 |
authEnabled |
Boolean |
true |
网关推送智能体接口是否需要鉴权 |
authentication |
Authentication |
false |
网关推送智能体接口鉴权配置。 |
pushConfigList |
List<PushConfig> |
true |
网关推送智能体接口配置 |
platform |
String |
true |
智能体平台类型: |
pushType |
String |
false |
网关推送智能体的推送类型: |
responseType |
String |
false |
智能体响应网关的响应类型: |
Authentication
名称 |
类型 |
是否必传 |
描述 |
token |
String |
false |
网关推送智能体接口的鉴权token, 鉴权方式为TOKEN时必传 |
type |
String |
true |
网关推送智能体接口的鉴权方式 |
PushConfig
名称 |
类型 |
是否必传 |
描述 |
type |
String |
true |
网关推送智能体的接口类型 |
uri |
String |
true |
网关推送智能体的接口 |
httpMethod |
String |
true |
网关推送智能体的接口请求方式: |
4.1.4. 返回参数
名称 |
类型 |
描述 |
robotId |
String |
智能体注册成功后的智能体机器人ID |
4.1.5. 请求示例
{
"name": "智能体机器人名称", // 智能体机器人名称
"domain": "https://www.test.com", // 网关推送智能体接口域名
"authEnabled": true, // 网关推送智能体接口是否需要鉴权
"authentication":{ // 网关推送智能体接口的鉴权配置
"type": "TOKEN", // 网关推送智能体接口的鉴权类型
"token": "ezliex48sp494ljx9xd" // 网关推送智能体接口的鉴权token
},
"pushConfigList": [ // 网关推送智能体接口配置
{
"uri": "/api/robot/chat", // 网关推送智能体接口
"httpMethod": "POST", // 网关推送智能体接口请求方式
"type": "Message" // 网关推送智能体接口类型
},
{
"uri": "/api/robot/open", // 网关推送智能体接口
"httpMethod": "POST", // 网关推送智能体接口请求方式
"type": "Open" // 网关推送智能体接口类型
}],
"platform": "Default", // 智能体平台类型
"pushType": "Default", // 网关推送给智能体的推送方式类型
"responseType": "Default" // 智能体给网关响应的响应方式类型
}
4.1.6. 返回示例
{
"requestId": "str",
"robotId": "str"
}
5. 消息推送及响应
5.1. 鉴权方式
网关消息推送支持多种鉴权方式,根据您注册智能体时选择的鉴权方式进行鉴权。
5.1.1. TOKEN鉴权
该鉴权方式适用于Dify,Coze平台。
对于需要鉴权的推送接口,采用TOKEN认证机制。您需要在注册时选择TOKEN鉴权并设置TOKEN值,网关所有推送请求将通过HTTP Authorization请求头携带该TOKEN进行身份验证。
Authorization: Bearer {TOKEN}
5.2. 开启会话
当注册了会话开启配置后,在会话开始前会调用一次开启会话接口,该请求会携带一些必要参数和随路数据,方便对接方在会话开启前获取到会话相关信息。
如果未注册会话开启配置,则不会触发该效果。
该接口只支持非流式调用。
请求示例
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"visitorId": "1k49d8clec9e4ydoe4i", // 访客唯一标识
"inputs": {
"channel_name": "to_be_added",
"clientId": "test-001",
"loginId": "0bf51ffb-d605-483c-a405-e9b291615f3b.1749022641_8000000_1749022653301",
"user_province": "北京",
"groupChat": "false",
"user_mainUniqueId": "0bf51ffb-d605-483c-a405-e9b291615f3b.1749022641",
"appName": "售前测试",
"contactType": "WEB",
"机器人分支": "售前机器人",
"user_city": "北京",
"userId": "8000000",
...
}, // 随路参数,会话相关信息
"responseMode":"blocking" // 响应模式,只会是blocking
}
响应示例
响应时可选择响应普通消息或者热门问(选项类消息加scene)。
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"subtype": 10301, // 子消息类型
"content": "您可能想问以下问题:", // 选项标头内容
"scene": "HotQuestion", // 消息场景 热点问
"background": "https://www.baidu.com/1.png", // 背景图片
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样"
}
]
},
"type":103
}
}
],
"metadata":{ // 随路信息
}
}
}
注:
随路参数参见随路参数说明
开启会话可同步响应热点问消息,消息结构参见 选项消息-选项列表、选项消息-分类选项列表、选项消息-主题选项列表
5.3. 消息推送及响应
网关会实时推送访客消息到您注册智能体时配置的推送接口中,如果您需要给访客回复消息,需按照响应参数的指定格式进行响应。
网关支持智能体非流式响应和流式响应两种模式。
5.3.1. 默认方式
非流式
适用于一次性返回完整回复内容的场景,通过一次HTTP请求完成网关访客消息的推送和智能体的应答。
请求示例
文本消息示例
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 100, // 网关推送消息类型
"message": {
"content": "你能做什么,请用500字回复?" // 网关推送文本消息内容
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数,会话相关信息
"responseMode":"blocking" // 响应模式
}
图片消息示例
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 105, // 网关推送消息类型
"message": {
"fileUrl": "https://resource-test.aliyuncs.com", // 图片链接
"fileName": "图片.png" // 图片名称
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数, 会话相关信息
"responseMode":"blocking" // 响应模式
}
请求参数
名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
robotId |
String |
true |
智能体完成注册后网关生成的智能体机器人ID |
conversationId |
String |
false |
智能体机器人会话ID(智能体机器人第一次响应后返回的智能体机器人会话ID) |
visitorId |
String |
true |
访客id(企微客服渠道群聊时是群id) |
data |
List<Data> |
true |
消息内容 |
inputs |
Map<String, Object> |
false |
随路参数, 会话相关信息,详情见随路参数说明 |
responseMode |
String |
true |
响应模式 |
sender |
String |
false |
企微客服渠道群聊时是实际发送人的id,其他渠道该值和visitorId值一致 |
Data
名称 |
类型 |
是否必传 |
描述 |
messageType |
String |
true |
消息类型 详情见支持推送的消息类型 |
message |
Message |
true |
消息内容,详情见支持推送的消息类型 |
响应参数
名称 |
类型 |
描述 |
status |
Integer |
响应状态 |
code |
String |
响应编码 |
data |
List<Data> |
响应结果 |
Data
名称 |
类型 |
描述 |
conversationId |
String |
智能体机器人会话ID |
answers |
List<Answer> |
消息内容 |
metadata |
Map<String, Object> |
随路信息,智能体机器人响应携带的额外参数 |
Answer
名称 |
类型 |
描述 |
answerType |
String |
回复类型 |
answerContent |
JSONObject |
回复内容 |
指令对象
名称 |
类型 |
描述 |
actionType |
String |
指令类型 详情见支持的指令列表 |
actionData |
Map<String, String> |
指令数据 详情见支持的指令列表 |
示例
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 智能体机器人会话ID
"answers": [ // 响应内容
{
"answerType": "action", // 响应类型
"answerContent":{
"actionType":"TRANSFER_HUMAN", // 指令类型
"actionData":{ // 指令数据
}
}
}
],
"metadata":{
}
}
}
消息对象
名称 |
类型 |
描述 |
content |
JSONObject |
消息内容,详情见支持的消息类型 |
type |
Integer |
消息类型,详情见支持的消息类型 |
示例
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 智能体机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 响应内容
"content": { // 响应消息对象
"content": "这里是文本消息回复内容。" // 文本消息内容
},
"type":100 // 消息类型
}
],
"metadata":{ // 随路信息
}
}
}
流式
适用于需要逐步返回内容的场景,网关会通过SSE协议发起请求,智能体需要按照SSE协议格式返回数据。
请求示例
文本消息示例
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 100, // 网关推送消息类型
"message": {
"content": "你能做什么,请用500字回复?" // 网关推送文本消息内容
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数,会话相关信息
"responseMode":"streaming" // 响应模式
}
图片消息示例
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 105, // 网关推送消息类型
"message": {
"fileUrl": "https://resource-test.aliyuncs.com", // 图片链接
"fileName": "图片.png" // 图片名称
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数, 会话相关信息
"responseMode":"streaming" // 响应模式
}
请求参数
名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
robotId |
String |
true |
智能体完成注册后网关生成的智能体机器人ID |
conversationId |
String |
false |
智能体机器人会话ID(智能体机器人第一次响应后返回的智能体机器人会话ID) |
visitorId |
String |
true |
访客id(企微客服渠道群聊时是群id) |
data |
List<Data> |
true |
消息内容 |
inputs |
Map<String, Object> |
false |
随路参数, 会话相关信息,详情见随路参数说明 |
responseMode |
String |
true |
响应模式
-streaming 流式输出 |
sender |
String |
false |
企微客服渠道群聊时是实际发送人的id,其他渠道该值和visitorId值一致 |
Data
名称 |
类型 |
是否必传 |
描述 |
messageType |
String |
true |
消息类型,详情见支持推送的消息类型 |
message |
Message |
true |
消息内容,详情见支持推送的消息类型 |
响应参数
流式响应事件
事件名称 |
描述 |
message |
流式输出的消息事件 |
end |
流式输出的结束事件 |
error |
流式输出的异常事件 |
message 事件
event: message
data: {
"event": "message", // 消息事件
"conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", // 智能体机器人会话ID
"answer": [
{
"message_id": "9da23599-e713-473b-982c-4328d4f5c78a", // 消息ID
"content_type": "markdown", // 消息类型
"content": "这里是回复的消息内容", // 消息内容
"created_at": 1705395332000 // 创建时间
}
]
}
名称 |
类型 |
描述 |
event |
String |
事件类型:message,流式输出的消息事件 |
conversation_id |
String |
智能体会话ID |
answer |
List<Answer> |
回复内容 |
Answer
名称 |
类型 |
描述 |
content_type |
String |
消息类型 |
content |
String |
消息内容 |
created_at |
Long |
创建时间(毫秒),示例:1705395332000 |
message_id |
String |
消息id |
end 事件
event: end
data: {
"event": "end", // 结束事件
"conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", // 智能体机器人会话ID
"answer": [
{
"metadata": {}
}
]
}
event: end
data: {
"event": "end", // 结束事件
"conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", // 智能体机器人会话ID
"answer": [
{
"metadata": {
"command": "TRANSFER_HUMAN" // 转人工指令
}
}
]
}
名称 |
类型 |
描述 |
event |
String |
事件类型:end,流式输出的结束事件 |
conversation_id |
String |
智能体会话ID |
answer |
List<Answer> |
回复内容 |
Answer
名称 |
类型 |
描述 |
metadata |
Map<String, Object> |
拓展信息: |
error 事件
event: error
data: {
"event": "error", // 错误事件
"code": "invalid_param", // 错误码
"message": "参数错误" // 错误信息
}
名称 |
类型 |
描述 |
event |
String |
事件类型:error,流式输出的异常事件 |
code |
String |
错误码 |
message |
String |
错误信息 |
5.3.2. Coze方式
暂不支持
5.3.3. Dify方式
非流式
适用于一次性返回完整回复内容的场景,通过一次HTTP请求完成网关访客消息的推送和智能体的应答。
请求示例
文本消息示例
{
"inputs": {
},
"query": "你好如何接入Dify机器人?",
"response_mode": "blocking",
"conversation_id": "",
"user": "test-0001"
}
图片消息示例
{
"inputs": {
},
"query": "",
"response_mode": "blocking",
"conversation_id": "",
"user": "test-0001",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://resource-**.**.com/test.png"
}
]
}
请求参数
名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
query |
String |
true |
用户输入/提问内容 |
conversation_id |
String |
false |
智能体机器人会话ID,需要基于之前的聊天记录继续对话,必须传之前会话的会话id |
inputs |
Map<String, Object> |
false |
随路参数, 会话相关信息,详情见随路参数说明 |
response_mode |
String |
true |
响应模式 |
user |
String |
false |
企微客服渠道群聊时是实际发送人的id,其他渠道该值和visitorId值一致 |
auto_generate_name |
boolean |
false |
自动生成标题,默认 true |
files |
List<File> |
false |
需要上传的文件 |
File
名称 |
类型 |
是否必传 |
描述 |
type |
String |
true |
支持类型 图片 image(目前仅支持图片格式) |
transfer_method |
String |
true |
传递方式 图片地址remote_url |
url |
String |
true |
图片地址 |
响应示例
{
"event": "message",
"task_id": "c3800678-***-43df-***-53f23ed20b88",
"id": "9da23599-***-473b-***-4328d4f5c78a",
"message_id": "9da23599-***-473b-***-4328d4f5c78a",
"conversation_id": "45701982-***-4bc5-***-64562b4555f2",
"mode": "chat",
"answer": "您需要对接的是哪种机器人呢?",
"metadata": {
"usage": {
"prompt_tokens": 1033,
"prompt_unit_price": "0.001",
"prompt_price_unit": "0.001",
"prompt_price": "0.0010330",
"completion_tokens": 128,
"completion_unit_price": "0.002",
"completion_price_unit": "0.001",
"completion_price": "0.0002560",
"total_tokens": 1161,
"total_price": "0.0012890",
"currency": "USD",
"latency": 0.7682376249867957
},
"retriever_resources": [
{
"position": 1,
"dataset_id": "101b4c97-fc2e-463c-90b1-5261a4cdcafb",
"dataset_name": "iPhone",
"document_id": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00",
"document_name": "iPhone List",
"segment_id": "ed599c7f-2766-4294-9d1d-e5235a61270a",
"score": 0.98457545,
"content": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""
}
]
},
"created_at": 1705407629
}
响应参数
名称 |
类型 |
描述 |
event |
String |
事件类型,固定为 message |
task_id |
String |
任务 ID,用于请求跟踪和下方的停止响应接口 |
id |
String |
唯一ID |
message_id |
String |
消息唯一ID |
conversation_id |
String |
会话ID,Dify会话ID |
mode |
String |
App 模式,固定为 chat |
answer |
String |
完整回复内容 |
metadata |
Object |
元数据,无需关注 |
created_at |
Integer |
消息创建时间戳,如:1705395332 |
Data
名称 |
类型 |
描述 |
conversationId |
String |
智能体机器人会话ID |
answers |
List<Answer> |
消息内容 |
metadata |
Map<String, Object> |
随路信息,智能体机器人响应携带的额外参数 |
流式响应
适用于需要逐步返回内容的场景,网关会通过SSE协议发起请求,智能体需要按照SSE协议格式返回数据。
请求示例
文本消息示例
{
"inputs": {
},
"query": "",
"response_mode": "streaming",
"conversation_id": "",
"user": "test-0001"
}
图片消息示例
{
"inputs": {
},
"query": "",
"response_mode": "streaming",
"conversation_id": "",
"user": "test-0001",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://resource-**.**.com/test.png"
}
]
}
响应参数
流式响应事件
事件名称 |
是否支持 |
描述 |
message |
是 |
LLM返回文本块事件 |
agent_message |
是 |
Agent模式下返回文本块事件(仅Agent模式下使用) |
agent_thought |
否 |
Agent模式下有关Agent思考步骤的相关内容(仅Agent模式下使用) |
message_file |
否 |
文件事件,表示有新文件需要展示 |
message_end |
是 |
消息结束事件,收到此事件则代表流式返回结束 |
tts_message |
否 |
TTS 音频流事件,即:语音合成输出。内容是Mp3格式的音频块,使用 base64 编码后的字符串,播放的时候直接解码即可。(开启自动播放才有此消息) |
tts_message_end |
否 |
TTS 音频流结束事件,收到这个事件表示音频流返回结束 |
message_replace |
否 |
消息内容替换事件。 开启内容审查和审查输出内容时,若命中了审查条件,则会通过此事件替换消息内容为预设回复 |
error |
是 |
流式输出过程中出现的异常会以 stream event 形式输出,收到异常事件后即结束 |
ping |
否 |
每 10s 一次的 ping 事件,保持连接存活 |
流式响应事件示例
message 事件示例
event: message
data: {
"event": "message",
"id": "1fb10045-***-4040-***-e048d07cbad3",
"task_id": "9cf1ddd7-***-459b-***-c77b26c59e9b",
"message_id": "5ad4cb98-***-4085-***-88c403be6290",
"conversation_id": "45701982-***-4bc5-***-64562b4555f2",
"answer": "你好",
"created_at": 1679586595
}
agent_message 事件示例
event: agent_message
data: {
"event": "agent_message",
"id": "1fb10045-***-4040-***-d048d07cbad3",
"task_id": "9cf1ddd7-***-459b-***-b77b26c59e9b",
"message_id": "1fb10045-***-4040-***-d048d07cbad3",
"conversation_id": "c216c595-***-438c-***-aae5ddddd142",
"answer": "什么",
"created_at": 1705639511
}
message、agent_message响应参数
名称 |
类型 |
描述 |
event |
String |
事件类型:message,流式输出的消息事件 |
task_id |
String |
任务 ID,用于请求跟踪和下方的停止响应接口 |
message_id |
String |
消息唯一ID |
conversation_id |
String |
会话ID |
answer |
String |
LLM返回文本块内容 |
created_at |
Integer |
创建时间戳,如:1705395332 |
message_end 事件示例
event: message_end
data: {
"event": "message_end",
"id": "5e52ce04-***-4d27-***-b3bc80def685",
"conversation_id": "45701982-***-4bc5-***-64562b4555f2",
"metadata": {
"usage": {
"prompt_tokens": 1033,
"prompt_unit_price": "0.001",
"prompt_price_unit": "0.001",
"prompt_price": "0.0010330",
"completion_tokens": 135,
"completion_unit_price": "0.002",
"completion_price_unit": "0.001",
"completion_price": "0.0002700",
"total_tokens": 1168,
"total_price": "0.0013030",
"currency": "USD",
"latency": 1.381760165997548
},
"retriever_resources": [
{
"position": 1,
"dataset_id": "101b4c97-fc2e-463c-90b1-5261a4cdcafb",
"dataset_name": "iPhone",
"document_id": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00",
"document_name": "iPhone List",
"segment_id": "ed599c7f-2766-4294-9d1d-e5235a61270a",
"score": 0.98457545,
"content": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""
}
]
}
}
名称 |
类型 |
描述 |
event |
String |
事件类型:end,流式输出的结束事件 |
id |
String |
智能体会话ID |
conversation_id |
String |
智能体会话ID |
metadata |
Object |
元数据 |
error 事件示例
event: error
data: {
"event": "error",
"message_id":"5e52ce04-***-4d27-***-b3bc80def685",
"task_id":"6e42cd09-***-4d27-***-b3bc80def685",
"status": 400,
"code": "invalid_param",
"message": "参数错误"
}
名称 |
类型 |
描述 |
event |
String |
事件类型:error,流式输出的异常事件 |
message_id |
String |
消息唯一ID |
task_id |
String |
任务ID,用于请求跟踪和下方的停止响应接口 |
status |
String |
HTTP状态码 |
code |
String |
错误码 |
message |
String |
错误信息 |
6. 在线机器人网关随路参数
6.1. 随路参数说明
字段 |
描述 |
botId |
智能体机器人ID |
userId |
企业ID |
uniqueId |
会话ID |
provider |
机器人类型(thirdPart) |
channel_id |
接入号ID |
channel_name |
微信公众号接入号:wx_gzh 其他接入号:to_be_added |
appName |
接入号名称 |
visitorId |
访客ID |
visitorName |
企微客服接入号:群名称 其他接入号:访客名称 |
contactType |
接入号类型:WEB, 详见通用参数会话渠道定义 |
user_province |
省份 |
user_city |
城市 |
user_customerId |
客户资料ID |
user_transferFailReason |
机器人转人工失败又路由到机器人的原因 |
timeslot |
在线客服路由导航的时间节点,满足时间条件传true,不满足传false |
groupChat |
企微客服群聊标识:true/false |
用户自定义信息(visitorExtraInfo),客户资料信息(customerFields), 在key前添加前缀user_ |
用户自定义参数:"name" : "zs", 实际给智能体:"user_name" : "zs" |
交互节点信息,用户在路由导航中配置的交互节点调用接口返回的数据 |
调用交互节点用户配置接口获取的数据,key和value都是用户返回的数据 |
分支节点信息,用户在路由导航中配置的分支节点信息数据 |
key是分支节点的名称,value是具体选择的分支名称 |
7. 在线机器人网关支持推送的消息类型
7.1. 支持推送的消息类型
消息类型 | 描述 |
---|---|
TEXT(100) |
文本消息 |
IMAGE(105) |
图片消息 |
7.2. 消息结构
7.2.1. 文本消息
名称 | 类型 | 描述 |
---|---|---|
content |
String |
文本消息内容 |
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 100, // 网关推送消息类型
"message": {
"content": "你能做什么,请用500字回复?" // 网关推送文本消息内容
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数,会话相关信息
"responseMode":"blocking" // 响应模式
}
7.2.2. 图片消息
名称 | 类型 | 描述 |
---|---|---|
fileUrl |
String |
图片链接地址 |
fileName |
String |
图片名称 |
{
"robotId": "58656d16-b8b3-4722-83cd-37953f1ad566", // 智能体完成注册后网关生成的智能体机器人ID
"data": [
{
"messageType": 105, // 网关推送消息类型
"message": {
"fileUrl": "https://resource-test.aliyuncs.com", // 图片链接
"fileName": "图片.png" // 图片名称
}
}
],
"visitorId": "1k49d8clec9e4ydoe4i", // 访客ID
"sender":"1k49d8clec9e4ydoe4i", // 消息发送人ID
"conversationId": "b88022da-55c9-487b-9894-9afbe2e47cc2", // 智能体机器人会话ID
"inputs": {}, // 随路参数, 会话相关信息
"responseMode":"blocking" // 响应模式
}
8. 在线机器人网关支持发送的机器人指令
8.1. 支持的指令列表
指令编码(actionType) | 指令数据(actionData) | 描述 |
---|---|---|
TRANSFER_HUMAN |
只是转人工,不用传指令数据;转人工,转到指定队列,需要在actionData中传队列信息数据,key为路由导航中的队列变量节点配置的变量名,value为队列号 |
通过这个指令,将机器人会话转接到人工接待 |
8.2. 机器人指令具体说明
8.2.1. TRANSFER_HUMAN
转人工
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "action", // 响应类型
"answerContent":{
"actionType":"TRANSFER_HUMAN", // 指令类型
"actionData":{ // 指令数据
}
}
}
],
"metadata":{
}
}
}
转人工,指定转人工的队列, 在actionData中传指定队列数据,key为路由的队列变量节点配置的变量名,value为队列号
注意:Dify直连对接时如果要触发转人工操作时,需要配置指定提示词,返回如下格式数据信息:
1. 转人工:>transfer_human:正在为您转接售前测试座席。":"前>transfer_human为转人工指令,":"后为转人工的话术。 2. 转队列:>transfer_human_8888:正在为您转接售前咨询。":"前>transfer_human_8888为转队列指令,8888为队列号,":"后为转人工的话术,其中队列参数key为"qno",如需在队列变量节点判断时请使用"qno"。 提示词参考 - 只有用户问 转人工 时,完整输出 >transfer_human:正在为您转接客服请稍等。 - 只有用户问 转队列 时,完整输出 >transfer_human_8888:正在为您转接人工客服。
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "action", // 响应类型
"answerContent":{
"actionType":"TRANSFER_HUMAN", // 指令类型
"actionData":{ // 指令数据
"qno": "1111"
}
}
}
],
"metadata":{
}
}
}
9. 在线机器人网关支持发送的消息类型
9.1. 支持的消息类型
消息类型 | 子消息类型 | 描述 |
---|---|---|
TEXT(100) |
文本消息 |
|
RTF(101) |
富文本消息 |
|
CARD(102) |
GraphicCard(10201) |
图文消息 |
OPTION(103) |
OPTION(10301) |
选项列表消息 |
OPTION(103) |
CATEGORY_OPTION(10302) |
分类选项消息 |
OPTION(103) |
TOPIC_OPTION(10303) |
主题选项消息 |
FILE(104) |
文件消息 |
|
IMAGE(105) |
图片消息 |
|
MARKDOWN(109) |
markdown消息 |
|
COMBINATION(111) |
组合消息 |
9.2. 消息结构
9.2.1. 文本消息
名称 | 类型 | 描述 |
---|---|---|
content |
String |
文本消息内容 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 响应内容
"content": { // 响应消息对象
"content": "这里是文本消息回复内容。" // 文本消息内容
},
"type":100 // 消息类型
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.2. 富文本消息
名称 | 类型 | 描述 |
---|---|---|
content |
String |
富文本消息内容 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"content": "这里是富文本消息回复内容。<img src=\"https://www.baidu.com/2.png\"/>"
},
"type":101
}
}
],
"metadata":{
}
}
}
9.2.3. 卡片消息-图文消息
名称 | 类型 | 描述 |
---|---|---|
subtype |
Integer |
子消息类型 |
cards |
List<Card> |
消息对象 |
Card
名称 | 类型 | 描述 |
---|---|---|
url |
String |
点击跳转的链接地址 |
cover |
String |
封面图片链接地址 |
summary |
String |
主要内容 |
title |
String |
标题 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content":{
"subtype": 10201, // 子消息类型
"cards": [{
"url": "https://ha.baidu.com/qifdge/detail", // 跳转的链接地址
"cover": "https://img0.baidu.com/it/u=2191", // 封面图片链接地址
"summary": "主要内容", // 主要内容
"title": "标题" // 标题
}
]
},
"type":102 // 消息类型
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.4. 选项消息-选项列表
名称 | 类型 | 描述 |
---|---|---|
subtype |
Integer |
子消息类型 |
content |
String |
标题内容 |
background |
String |
背景图片 |
scene |
String |
消息场景 |
options |
List<Option> |
选项列表 |
Option
名称 |
类型 |
描述 |
content |
String |
选项内容 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"subtype": 10301, // 子消息类型
"content": "您可能想问以下问题:", // 选项标头内容
"scene": "HotQuestion", // 消息场景
"background": "https://www.baidu.com/1.png", // 背景图片
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样"
}
]
},
"type":103
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.5. 选项消息-分类选项列表
名称 | 类型 | 描述 |
---|---|---|
subtype |
Integer |
子消息类型 |
content |
String |
标题内容 |
background |
String |
背景图片 |
style |
String |
展示样式 |
scene |
String |
消息场景 |
options |
List<CategoryOption> |
选项列表 |
CategoryOption
名称 |
类型 |
描述 |
categoryName |
String |
分类名称 |
options |
List<Option> |
选项列表 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"subtype": 10302, // 子消息类型
"content": "您可能想问以下问题:", // 选项标头内容
"background": "https://www.baidu.com/1.png", // 背景图片
"scene": "HotQuestion", // 消息场景
"style": "Horizontal", // 展示样式
"options": [
{
"categoryName": "分类名称1", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
},
{
"categoryName": "分类名称2", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
}
]
},
"type":103
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.6. 选项消息-主题选项列表
名称 | 类型 | 描述 |
---|---|---|
subtype |
Integer |
子消息类型 |
background |
String |
背景图片 |
scene |
String |
消息场景 |
options |
List<TopicOption> |
选项列表 |
TopicOption
名称 |
类型 |
描述 |
content |
String |
主题标题 |
icon |
String |
主题图标链接 |
options |
List<CategoryOption> |
分类列表 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"subtype": 10303, // 子消息类型
"background": "https://www.baidu.com/1.png", // 背景图片
"scene": "HotQuestion", // 消息场景
"options": [
{
"icon": "https://www.baidu.com/2.png", // 主题图标
"content": "主题1", // 主题标题
"categories":[
{
"categoryName": "分类名称1", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
},
{
"categoryName": "分类名称2", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
}
]
}, {
"icon": "https://www.baidu.com/2.png", // 主题图标
"content": "主题2", // 主题标题
"categories":[
{
"categoryName": "分类名称1", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
},
{
"categoryName": "分类名称2", // 分类名称
"options": [
{
"content": "1.今天星期几" // 选项内容
},
{
"content": "2.今天天气怎么样" // 选项内容
}
]
}
]
}
]
},
"type":103
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.7. 文件消息
名称 | 类型 | 描述 |
---|---|---|
fileUrl |
String |
文件链接地址 |
fileName |
String |
文件名称 |
fileSize |
Long |
文件大小 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"fileUrl": "http://www.baidu.com/1.txt", // 文件链接
"fileName": "1.txt", // 文件名称
"fileSize": 123456 // 文件大小
},
"type":104
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.8. 图片消息
名称 | 类型 | 描述 |
---|---|---|
fileUrl |
String |
图片链接地址 |
fileName |
String |
图片名称 |
fileSize |
Long |
图片大小 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"fileUrl": "http://www.baidu.com/1.png", // 图片链接
"fileName": "1.png", // 图片名称
"fileSize": 123456 // 图片大小
},
"type":105
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.9. markdown消息
名称 | 类型 | 描述 |
---|---|---|
content |
String |
markdown文本消息内容 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"content": "这里是markdown文本消息回复内容。"
},
"type":109
}
}
],
"metadata":{ // 随路信息
}
}
}
9.2.10. 组合消息
名称 | 类型 | 描述 |
---|---|---|
combinationList |
List<Message> |
其他类型消息可以任意组合在一起 |
Message
名称 | 类型 | 描述 |
---|---|---|
type |
Integer |
消息类型 |
content |
Object |
其他任意消息对象 |
{
"status": 200, // 响应状态
"code": "success", // 响应编码
"data": {
"conversationId": "45701982-8118-4bc5-8e9b-64562b4555f2", // 机器人会话ID
"answers": [ // 响应内容
{
"answerType": "message", // 响应类型
"answerContent": { // 消息实体
"content": {
"combinationList": [{
"type": 100,
"content": {
"content": "这里是文本消息回复内容。" // 文本消息内容
}
}, {
"type": 105,
"content": {
"fileUrl": "http://www.baidu.com/1.png", // 图片链接
"fileName": "1.png", // 图片名称
"fileSize": 123456 // 图片大小
}
}
]
},
"type":111
}
}
],
"metadata":{ // 随路信息
}
}
}