# 开放接口文档
# 配置信息
例如:
- APPID: xxxxxxxxxxxxxxx
- TOKEN: xxxxxxxxxxxxxxx
- EncodingAESKey: xxxxxxxxxxxxxxx
# 接口信息
# 1. 获取signature
接口:
https://chatbot.weixin.qq.com/openapi/sign/{TOKEN}
接口类型:
POST请求
参数说明:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
username | string | 否 | 用户昵称 |
avatar | string | 否 | 用户头像 |
userid | string | 是 | 用户ID(可以是任何值) |
返回值说明:
字段 | 类型 | 描述 |
---|---|---|
signature | string | 请求接口的signature,长度500个字节左右 |
expiresIn | number | 过期时间 |
返回格式:
{
signature: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6IjI2NTQ0NzYzLTk1NzctNDZlNS1iOTFlLTA3NjAyMzhiMjUwNSIsImlhdCI6MTU4NjA5Nzc4MSwiZXhwIjoxNTg2MTAxMzgxfQ.qugHipCyBnONQRGY2fadm1LH-bLi0TrVqam3vZTpRcI
expiresIn: 7200
}
signature 也可以在本地通过jwt签名得到
const signature = jwt.encode(
EncodingAESKey,
{
username: "some persone",
userid: "alsjdasf12",
avatar:
"https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1L3ryyg.png",
},
"HS256",
);
# 2. 智能对话接口:
https://chatbot.weixin.qq.com/openapi/aibot/{TOKEN}
接口类型:
POST请求
参数说明:
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
signature | string | 是 | |
query | string | 是 | 用户对话的消息 |
env | string | 否 | 默认是online , debug 是测试环境,online 是线上环境 |
first_priority_skills | Array[string] | 否 | 限定技能命中范围 比如:["技能1"],只匹配命中“技能1”中的所有问答内容 |
second_priority_skills | Array[string] | 否 | 限定技能命中范围 比如:["技能2"],只匹配命中“技能2”中的所有问答内容,比first_priority_skills命中优先级低 |
返回值说明:
字段 | 类型 | 描述 |
---|---|---|
ans_node_name | string | 分类/技能名称 |
title | string | 标准问题/意图名称 |
answer | string | 命中的回答 |
msg | array | 回答详细信息(已废弃) |
confidence | int32 | 回答信心指数 |
options | Array<Option≶ | 推荐问题列表(有推荐时才出现该字段) |
from_user_name | string | 发起query的用户,对应签名接口的userid |
to_user_name | string | 接受query的机器人 |
status | string | 机器人回复的状态, 可能的数值:FAQ、NOMATCH、CONTEXT_FAQ、GENERAL_FAQ、FAQ_RECOMMEND |
推荐问题Option字段说明:
字段 | 类型 | 描述 |
---|---|---|
ans_node_name | string | 推荐的分类 |
title | string | 推荐标准问题 |
answer | string | 推荐回答 |
confidence | int32 | 推荐信息指数 |
返回格式:
{
ans_node_name: "小微闲聊",
title: "小薇兄你好",
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
},
confidence: 1,
from_user_name: "o9U-85tEZToQxIF8ht6o-KkagxO0",
status: "FAQ",
to_user_name: "xalsjfasf1ljasjdf1",
options: [
{
ans_node_id: 12355896,
ans_node_name: "自建应用",
answer: "您好,若自建应用消息不显示“详情”入口,请参考以下情况:LINE_BREAKLINE_BREAK1、手机端和电脑端有详情入口的应用消息一般是通过api进行推送的。通过api进行推送的详情入口不支持在微信侧显示。LINE_BREAKLINE_BREAK2、企业号或企业微信后台推送的图文消息,在微信PC侧会有“详情”入口,在企业微信手机端、PC端以及微信手机端则不会有“详情”入口。LINE_BREAKLINE_BREAK注意:微信电脑端侧仅会显示摘要和详情,不显示标题。企业微信电脑端、微信微信手机端、企业微信手机端则会显示标题和摘要。若未填写摘要,则不显示摘要。",
confidence: 0.795230507850647,
title: "自建应用消息没有详情入口"
},
...
]
}
对话平台问答策略一共有三段:
- 第一段“精准命中”:用户问题得分大于机器人账号阈值,此时为精准名准,
status
字段为FAQ、CONTEXT_FAQ、GENERAL_FAQ
等值- 第二段“问题推荐”:用户问题得分小于机器人账号阈值,但大于该阈值与推荐阈值的乘积,此时为问题推荐,
status
字段为FAQ_RECOMMEND
,且此时options
会有相应的推荐结果- 第三段“未命中”:用户问题得分小于机器人账号阈值与与推荐阈值的乘积, 此时为未命中,
status
字段为NOMATCH
# 错误码说明:
{
errcode: 1001,
errmsg: "TOKEN is not valid"
}
错误码 | 描述 |
---|---|
1001 | token无效 |
1002 | 机器人审核没有通过 |
1003 | 签名缺少userid字段 |
1004 | 签名字段为空 |
1005 | 签名过期或无效 |
1006 | 签名校验失败,缺少userid字段 |