# 开放接口文档
# 配置信息
例如:
- 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 | 是 | 上一步获取到的 signature 返回值 |
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_id | int32 | 技能id |
ans_node_name | string | 分类/技能名称 |
title | string | 标准问题/意图名称 |
answer | string | 命中的回答 |
answer_type | string | 回答的类型 |
msg | array | 回答详细信息(已废弃) |
confidence | float | 回答信心指数 |
options | Array<Option> | 推荐问题列表(有推荐时才出现该字段) |
from_user_name | string | 发起query的用户,对应签名接口的userid |
to_user_name | string | 接受query的机器人 |
status | string | 机器人回复的状态, 可能的数值:FAQ、NOMATCH、CONTEXT_FAQ、GENERAL_FAQ、FAQ_RECOMMEND |
msg_id | string | 消息id |
query | string | 用户发送的消息 |
推荐问题Option字段说明:
字段 | 类型 | 描述 |
---|---|---|
ans_node_name | string | 推荐的分类 |
title | string | 推荐标准问题 |
answer | string | 推荐回答 |
confidence | float | 推荐信息指数 |
返回格式:
{
"ans_node_id": 17130001,
"ans_node_name": "猜拳",
"answer": "开始游戏了",
"answer_open": 1,
"answer_type": "text",
"article": "",
"confidence": 1,
"create_time": "1652946752175",
"dialog_session_status": "NONE",
"dialog_status": "NONE",
"event": "",
"from_user_name": "dTo6FS96YzJ",
"intent_confirm_status": "",
"is_default_answer": false,
"list_options": false,
"msg": [
{
"ans_node_id": 17130001,
"ans_node_name": "猜拳",
"article": "",
"confidence": 1,
"content": "2",
"debug_info": "",
"event": "",
"list_options": false,
"msg_type": "text",
"opening": "",
"request_id": 130,
"resp_title": "开始猜拳",
"scene_status": "",
"session_id": "",
"status": "FAQ",
"take_options_only": false
}
],
"msg_id": "31904d53",
"opening": "",
"request_id": 130,
"ret": 0,
"scene_status": "",
"session_id": "",
"skill_id": "",
"skill_name": "猜拳",
"slot_info": [],
"slots_info": [],
"status": "FAQ",
"take_options_only": false,
"title": "开始猜拳",
"to_user_name": "oEUI4g02QjGf54nLxtexWl01UkytI2",
"msgtype": "text",
"query": "开始猜拳",
"rid": "31904d53"
}
对话平台问答策略一共有三段:
- 第一段“精准命中”:用户问题得分大于机器人账号阈值,此时为精准命中,
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字段 |