# 开放接口文档
# 配置信息
例如:
APPID: xxxxxxxxxxxxxxx
TOKEN: xxxxxxxxxxxxxxx
EncodingAESKey: xxxxxxxxxxxxxxx
# 接口信息
# 1. 普通消息接口(只签名不加密):
https://chatbot.weixin.qq.com/openapi/message/TOKEN
接口类型:
POST请求
参数说明:
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
query | string | 使用JWT签名后的数据 |
query签名说明:
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
username | string | 对话中的用户名称, 用来区分对话上下文 | |
msg | string | 对话内容 |
使用JSON Web Token的 HS256
算法对参数进行encode, 放入到query参数中
比如参数为
{
username: "some persone",
msg: "你好"
}
使用 jwt 和 EncodingAESKey
对数据对象进行encode得到加密字符串
const signedData = jwths256.encode(EncodingAESKey, {username: "some persone", query: "你好"})
调用开放平台语义接口
curl -XPOST -d "query=signedData" https://chatbot.weixin.qq.com/openapi/message/TOKEN
Tips: 在 jsonwebtoken.io 网站上可以参考如下步骤手动生成signedData
返回值说明:
字段 | 类型 | 描述 |
---|---|---|
answer | string | 回答 |
answer_type | string | 回答类型:text,music,news |
msg | boolean | 回答详细信息 |
from_user_name | boolean | 发起query的用户 |
to_user_name | boolean | 接受query的机器人 |
返回格式:
{
answer: "你好呀!",
answer_type: "text",
bid_stat: {
curr_time: "20190515-18:07:37",
err_msg: "微信通用意图.肯定.branches.s_Any@.arguments's element.slot slot does not exist!",
latest_time: "20190523-16:06:33",
latest_valid: false,
up_ret: -1
},
msg: [
{
ans_node_id: 6666,
ans_node_name: "小微闲聊",
confidence: 1,
content: "你好呀!",
debug_info: "",
msg_type: "text",
resp_title: "小薇兄你好",
status: "FAQ"
}
],
from_user_name: "o9U-85tEZToQxIF8ht6o-KkagxO0",
status: "FAQ",
to_user_name: "10808"
}
# 2. 实时词典接口(加密):
https://chatbot.weixin.qq.com/openapi/dictmsg/TOKEN
接口类型:
POST请求
参数说明:
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
username | string | 对话中的用户名称, 用来区分对话上下文 | |
msg | string | 对话内容 | |
svrinfo | object | 实时词典配置 |
比如参数为
{
username: "some persone",
msg: "你好",
svrinfo: {
real_time_slot_candidates: {
your_vocab_name: [
"张三",
"李四",
"王五"
]
}
}
}
将加密后的数据,以字段 encrypt 放入body中
var cryptor = new WXBizMsgCrypt(TOKEN, EncodingAESKey, APPID);
var text = 'hehe';
var encrypted = cryptor.encrypt(text);
curl -X post -d "encrypt=encrypted"
"https://chatbot.weixin.qq.com/openapi/dictmsg/TOKEN"
# 接入样例
感谢 kangear 提供接入样例