# 发送客服消息接口-开放接口
仅适用于对平台有过授权的下类账号类型 1. 已认证的服务号 2. 已认证的订阅号 3. 小程序 4. h5 5. 小程序插件
# 配置信息
例如:
- APPID: xxxxxxxxxxxxxxx
- TOKEN: xxxxxxxxxxxxxxx
- EncodingAESKey: xxxxxxxxxxxxxxx
# 发送客服消息接口:
https://chatbot.weixin.qq.com/openapi/sendmsg/{TOKEN}
接口类型:
POST请求
参数说明:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
appid | string | 是 | 公众号或小程序的appid |
openid | string | 是 | 用户的微信openid |
msg | string | 是 | 消息内容 |
channel | number | 是 | 渠道ID,详见渠道对映表 |
kefuname | string | 否 | 客服人员的昵称 |
kefuavatar | string | 否 | 客服人员的头像 |
渠道说明:
渠道ID | 渠道描述 |
---|---|
0 | 接入方式为,扫码绑定的公众号、小程序接入智能对话的渠道 |
2 | 接入方式为,通过开放接口方式接入智能对话的渠道 |
6 | 接入方式为,小程序插件接入智能对话的渠道 |
7 | 接入方式为,网页H5机器人智能对话的渠道 |
运行例子代码
cd src
rm -rf bin
mkdir bin
javac -d bin -cp "lib/*" demo/OpenAiDemo.java com/qq/weixin/mp/aes/*java com/tencent/nlp/openai/*java
# appid token encodingAESKey用https://chatbot.weixin.qq.com/申请的机器人信息替代
java -cp "bin:lib/*" demo.OpenAiDemo appid token encodingAESKey
比如参数为
<xml>
<appid><![CDATA[wxxxxx]]></appid>
<openid><![CDATA[xxxxx]]></appid>
<msg><![CDATA[您好,请问需要什么帮助]]></msg>
<channel>0</channel>
<kefuname><![CDATA[客服昵称]]></ckefuname>
<kefuavatar><![CDATA[客服头像图片URL地址]]></kefuavatar>
</xml>
将加密后的数据,以字段 encrypt 放入body中
var cryptor = new WXBizMsgCrypt(TOKEN, EncodingAESKey, APPID);
var data = `<xml>
<appid><![CDATA[wxxxxx]]></appid>
<openid><![CDATA[xxxxx]]></appid>
<msg><![CDATA[您好,请问需要什么帮助]]></msg>
<channel>0</channel>
<kefuname><![CDATA[客服昵称:小红]]></ckefuname>
<kefuavatar><![CDATA[客服头像图片地址:https://xxx]]></kefuavatar>
</xml>`
var encrypted = cryptor.encrypt(data);
curl -X post -d '{"encrypt": encrypted}' "https://chatbot.weixin.qq.com/openapi/sendmsg/{TOKEN}"
返回值说明:
字段 | 类型 | 描述 |
---|---|---|
code | number | 错误码 |
msg | array | 接口调用信息 |
返回格式:
{
"errcode": 0,
"msg": "成功"
}
# 富文本支持
- 纯文本
const msg = "您好,请问需要什么帮助?"
- 文本类型(含推荐问法)
const msg = "暂未找到与之对应的答案,我们会尽快处理。 官方公众号:微信对话开放平台 <a href=\"weixin://bizmsgmenu?msgmenucontent=今天北京多少度&msgmenuid=今天北京多少度\">今天北京多少度</a>"
- 文本类型(含超级链接)
const msg = "请前往<a href=\"https://chatbot.weixin.qq.com/\">openai</a>进行配置"
- H5
const msg = {
"news": {
"articles": [{
"title": "实时更新:新型肺炎疫情最新动态",
"description": "腾讯新闻第一时间同步全国新型肺炎疫情动态,欢迎关注、转发",
"url": "https://news.qq.com/zt2020/page/feiyan.htm",
"picurl": "http://mmbiz.qpic.cn/mmbiz_jpg/W3gQtpV3j8D8kZRqfpTJlfVqubwgFQf47H0GWlGV6leaDF80ZpdtuFhQVsCsM3YKmwkujXzdjR2k6aWfA41ic7Q/0?wx_fmt=jpeg",
"type": "h5"
}]
}
}
news.articles数组中每一项的字段描述为:
字段 | 类型 | 描述 |
---|---|---|
title | string | 文章标题 |
description | string | 文章描述 |
url | string | 文章链接 |
picurl | string | 图片链接 |
type | string | 表示该文章的类型,有'h5'和'mp'两种,mp表示公众号文章,h5表示在对话开放平台配置的h5 |
- 公众号图片
const msg = {
"image": {
"media_id": "KegpipQG9t-klMo25My4e4BCZFcmKvgMcpMFAkC-VFE",
"url": "http://mmbiz.qpic.cn/mmbiz_jpg/W3gQtpV3j8Bax22dhRiccWAb2AtVjal28XmqnhDW22dMn3RA5EoGkpolMO3tD9kQC1Hf9AjEJI66K40xQsNtXgQ/0?wx_fmt=jpeg"
}
}
image中每个字段描述为:
字段 | 类型 | 描述 |
---|---|---|
media_id | string | 公众号图片素材ID |
url | string | 公众号图片url |
- 小程序
const msg ={
"miniprogrampage": {
"title": "openai对话插件",
"appid": "wx8c631f7e9f2465e1",
"pagepath": "pages/index/index",
"thumb_media_id": "KegpipQG9t-klMo25My4e8zpBjhjg3JMrMSpgjikB4U",
"thumb_url": "http://mmbiz.qpic.cn/mmbiz_png/W3gQtpV3j8BYhWgfHT5Hfg6auN94c2ec4BBhDOMtPQrx6vEMc1rR4iaDKxDLOfZ1jBUqIEEY4YpvEj6ktSyXT7g/0?wx_fmt=png"
}
}
miniprogrampage中每个字段描述为:
字段 | 类型 | 描述 |
---|---|---|
title | string | 小程序标题 |
appid | string | appid |
pagepath | string | 小程序跳转页面路径 |
thumb_media_id | string | 公众号图片素材ID |
thumb_url | string | 公众号图片url |
- 合并回答
{
"multimsg": ["您好", {
"image": {
"media_id": "KegpipQG9t-klMo25My4e4BCZFcmKvgMcpMFAkC-VFE",
"url": "http://mmbiz.qpic.cn/mmbiz_jpg/W3gQtpV3j8Bax22dhRiccWAb2AtVjal28XmqnhDW22dMn3RA5EoGkpolMO3tD9kQC1Hf9AjEJI66K40xQsNtXgQ/0?wx_fmt=jpeg"
}
}, {
"miniprogrampage": {
"title": "openai对话插件",
"appid": "wx8c631f7e9f2465e1",
"pagepath": "pages/index/index",
"thumb_media_id": "KegpipQG9t-klMo25My4e8zpBjhjg3JMrMSpgjikB4U",
"thumb_url": "http://mmbiz.qpic.cn/mmbiz_png/W3gQtpV3j8BYhWgfHT5Hfg6auN94c2ec4BBhDOMtPQrx6vEMc1rR4iaDKxDLOfZ1jBUqIEEY4YpvEj6ktSyXT7g/0?wx_fmt=png"
}]
}
字段 | 类型 | 描述 |
---|---|---|
multimsg | array | 合并回答列表,数组中的每一项为以上单一类型的集合,每一个类型参考其对应的数据结构 |
# 错误码说明:
{
errcode: 1001,
errmsg: "TOKEN is not valid"
}
错误码 | 描述 |
---|---|
1001 | token无效 |
1002 | 机器人审核没有通过 |
1003 | 签名缺少userid字段 |
1004 | 签名字段为空 |
1005 | 签名过期或无效 |
1006 | 签名校验失败,缺少userid字段 |
1007 | appid, category,label, desc 字段不能未空 |
1008 | appid, openid,msg, 字段不能未空 |