# 第三方客服系统接入 - 接收用户和机器人消息
# 配置信息
例如:
- APPID: xxxxxxxxxxxxxxx
- TOKEN: xxxxxxxxxxxxxxx
- EncodingAESKey: xxxxxxxxxxxxxxx
# 配置人工客服回调接口:
请按照下面路径配置好人工客服回调接口
发布管理 -> 应用绑定 -> 开放API -> 回调地址
注意:当客服接入状态为
1
已接入时,第三方客服系统将不会接收到机器人回答的数据上报
接口类型:
POST请求
Content-type: application/json 的 json 请求
# 请求参数说明:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
encrypted | string | 是 | 对话内容加密后字符串 |
# 消息加解密说明:
请参考 消息加解密接入指引 进行消息的解密
注意在使用消息解密的过程中,
MsgSignature
,TimeStamp
,Nonce
3 个字段直接填入空字符串, 仅进行解密既可,不需要进行签名校验, 另外再使用官方提供的解密 demo 时注意不能直接使用,因为返回的数据结果不是包在 xml 中的
<xml>
<Encrypt>
<![CDATA[LDFAmKFr7U/RMmwRbsR676wjym90byw7+hhh226e8bu6KVYy00HheIsVER4eMgz/VBtofSaeXXQBz6fVdkN2CzBUaTtjJeTCXEIDfTBNxpw/QRLGLq
qMZHA3I+JiBxrrSzd2yXuXst7TdkVgY4lZEHQcWk85x1niT79XLaWQog+OnBV31eZbXGPPv8dZciKqGo0meTYi+fkMEJdyS8OE7NjO79vpIyIw7hMBtEXPBK/tJGN5m5SoAS
6I4rRZ8Zl8umKxXqgr7N8ZOs6DB9tokpvSl9wT9T3E62rufaKP5EL1imJUd1pngxy09EP24O8Th4bCrdUcZpJio2l11vE6bWK2s5WrLuO0cKY2GP2unQ4fDxh0L4ePmNOVFJ
wp9Hyvd0BAsleXA4jWeOMw5nH3Vn49/Q/ZAQ2HN3dB0bMA+6KJYLvIzTz/Iz6vEjk8ZkK+AbhW5eldnyRDXP/OWfZH2P3WQZUwc/G/LGmS3ekqMwQThhS2Eg5t4yHv0mAIei
07Lknip8nnwgEeF4R9hOGutE9ETsGG4CP1LHTQ4fgYchOMfB3wANOjIt9xendbhHbu51Z4OKnA0F+MlgZomiqweT1v/+LUxcsFAZ1J+Vtt0FQXElDKg+YyQnRCiLl3I+GJ/c
xSj86XwClZC3NNhAkVU11SvxcXEYh9smckV/qRP2Acsvdls0UqZVWnPtzgx8hc8QBZaeH+JeiaPQD88frNvA==]]> </Encrypt>
<MsgSignature></MsgSignature>
<TimeStamp>1411034505</TimeStamp>
<Nonce></Nonce>
</xml>
而是直接将
Encrypt
返回在 JSON 中,直接调用官方 Demo 示例中的decrypt
方法就可以了 而不是decryptMsg
解密后的数据格式如下:
<xml>
<userid>用户的唯一ID,(通常为用户在微信的openid)</userid>
<appid>应用的appid</appid>
<content>
<msg>机器人或用户的的内容</msg>
</content>
<event>userEnter</event>
<from>对话来源ID 0/1/2</from>
<kfstate>客服接入状态 0/1/2/3</kfstate>
<channel>渠道id 0</channel>
<assessment>用户评价0/1/2/3/4/5</assessment>
<createtime>unix时间戳</createtime>
</xml>
content
字段为复合型数据结构 , 当from === 0
时为顾客发送的问题, 可能为纯文本或富文本, 当from === 1
时为机器人自动回复的内容,当from === 2
时为人工客服回复的内容
# 返回值说明:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
userid | string | 是 | 用户的微信 openid |
appid | string | 是 | 公众号或小程序的 appid |
content | object | 是 | 机器人回复或顾客问题 |
channel | number | 是 | 渠道 ID,详见渠道对映表 |
from | number | 是 | 对话来源 |
event | string | 否 | 用户触发事件 |
kfstate | number | 否 | 客服接入状态 |
assessment | number | 否 | 客户评价 |
# 客服接入状态(kfstate):
状态 ID | 描述 |
---|---|
0 | 智能客服 -- 待接入 (asking) |
1 | 人工客服 -- 已接入 (personserving) |
2 | 结束人工客服(对话) -- 对话关闭 (complete) |
3 | 待人工接入 -- 待转人工 (needperson) |
# 对话来源(from):
来源 ID | 描述 |
---|---|
0 | 用户发出的内容 |
1 | 机器人回复的内容 |
2 | 客服在微信对话开放平台上进行回复时的内容 |
# 渠道说明(channel):
渠道 ID | 渠道描述 |
---|---|
0 | 接入方式为,扫码绑定的公众号、小程序接入智能对话的渠道 |
2 | 接入方式为,通过开放接口方式接入智能对话的渠道 |
6 | 接入方式为,小程序插件接入智能对话的渠道 |
7 | 接入方式为,网页 H5 机器人智能对话的渠道 |
# 客服触发事件(event):
事件 Key | 描述 | 支持的渠道 |
---|---|---|
userEnter | 用户进入 | H5 机器人 |
userQuit | 用户离开 | H5 机器人 |
customerStuffEnter | 客服人员开始接入 | 所有渠道 |
customerStuffQuit | 客服人员关闭离开 | 所有渠道 |
事件
customerStuffEnter/customerStuffQuit
出现时 会额外补充一个字段customerInfo
字段名称 描述 customerInfo.name 客服人员的微信昵称 customerInfo.avatar 客服人员的头像 customerInfo.openid 客服人员的微信 openid
# 客户评价(assessment):
assessment | 描述 |
---|---|
0 | 非客户评价消息 |
1 | 很满意 |
2 | 满意 |
3 | 一般 |
4 | 不满 |
5 | 很不满 |
# 错误码说明:
{
errcode: 1001,
errmsg: "TOKEN is not valid"
}
错误码 | 描述 |
---|---|
1001 | token 无效 |
1002 | 机器人审核没有通过 |
1003 | 签名缺少 userid 字段 |
1004 | 签名字段为空 |
1005 | 签名过期或无效 |
1006 | 签名校验失败,缺少 userid 字段 |