# 开放接口文档

# 配置信息

例如:

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 TokenHS256 算法对参数进行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

https://www.jsonwebtoken.io/

Tips: 在 jsonwebtoken.io 网站上可以参考如下步骤手动生成signedData 手动生成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"

# 接入样例

NodeJS

感谢 kangear 提供接入样例