# 接入智能对话
接入之前,需要先在对话平台官网创建机器人,并在应用绑定中申请开放 API 的接入参数。 例如:
APPID: Gg8HejYTkUsEIlG
Token: YV78Pyj1VvqdNGpMJ1pHic0bIBOWMv
AESKey: q1Os1ZMe0nG28KUEx9lg3HjK7V5QyXvi212fzsgDqgz
参数说明:
- APPID:和机器人一一对应,和 Token、AESKey 对应。
- Token:用于签名,签名不通过的请求将拒绝响应。
- AESKey:用于对 body 数据进行对称加解密,加解密算法为 AESCBC 算法。
# 1. 安全性
# 1.1 数据加密
如果需要加密传输的接口,则使用 AESKey 进行对称加密。请求的 body 数据会解密后再处理,响应的数据也需要解密后,才可以得到下文的示例响应。 如果接口需要加密传输,将会特殊说明。
具体算法细节可参考 第三方服务接口 中“加密”一栏的介绍。
# 1.2 签名
每一个请求都需要签名。签名需要使用上文申请的Token
,具体的签名方法:
sign = md5(Token + str(unix_timestamp) + nonce + md5(body))
GET 请求的 body 为空
md5 为小写的 hex 格式。
具体字段下文有说明。
例如:
Token:YV78Pyj1VvqdNGpMJ1pHic0bIBOWMv
unix_timestamp:1711001766
nonce:abc
body:空
sign:fff8dae1356e7867ea98743439f0e9f8
# 2. 公共参数
# 2.1. 请求参数
# header 参数
几乎所有请求都应该携带这些 header。 X-APPID 仅在换取 X-OPENAI-TOKEN 的时候携带,后续都携带 X-OPENAI-TOKEN。X-OPENAI-TOKEN 仅 2h 有效,过期后应该更换新的。(X-APPID 和 X-OPENAI-TOKEN 二选一)
字段名 | 类型 | 含义 |
---|---|---|
X-OPENAI-TOKEN | string | 开放接口接入的 Accesstoken,除了换 token 的接口都需要 |
X-APPID | string | 开放接口接入的 appid,用于换 Accesstoken |
request_id | string | 请求唯一标识,可以随机生成,用于反馈问题,例如使用 UUID |
timestamp | uint64 | s 为单位的当前时间戳 |
nonce | string | 随机字符串,建议长度在 10-32 位之间 |
sign | string | 签名参数,校验请求来源合法性 |
# 请求参数
部分查询接口支持分页参数。
字段名 | 类型 | 含义 |
---|---|---|
page | int | 分页参数,部分接口支持;第几页,从 0 开始 |
size | int | 分页参数,部分接口支持;每页的数量,默认是 10 |
# 2.2. 响应参数
字段名 | 类型 | 含义 |
---|---|---|
request_id | string | 请求唯一标识,和 header 中的对应 |
code | int32 | 返回码 0-正确 else-有异常,错误详情可以参考 message 和 data 字段 |
msg | string | 返回信息 success-正确 else-错误信息摘要 |
data | object | 业务具体响应,详情请参考具体接口说明 |
# 2.3. 错误码
code | 含义 |
---|---|
110001 | 服务器内部错误 |
110002 | 请求参数错误 |
120002 | 用户不存在 |
210001 | 未知错误 |
210004 | 用户参数为空 |
210101 | 缺少参数 |
210102 | 名称已存在 |
210103 | 中文名称重复 |
210104 | 操作的数据不存在 |
210105 | 没查询到数据 |
210106 | Json 参数解析失败 |
210201 | DB 操作失败 |
210202 | 无操作权限 |
210203 | 操作异常 |
210205 | Bot 正在发布中 |
1003001 | KV 异常 |
# 3. 换取 Accesstoken
# 功能说明
通过 appid,account 换取一个 2 小时有效的 换取 Accesstoken,用于后续的请求的身份校验,后面带到 header:X-OPENAI-TOKEN
中。
# 请求 uri
/v2/token
# 请求类型
POST
# 请求参数
# params
字段名 | 类型 | 必填 | 描述 |
---|---|---|---|
account | string | 否 | 操作数据的管理员 ID,可以点击官网头像旁的箭头查看。如果不填,默认用创建者的身份。该字段主要用于记录操作日志。 |
# 返回参数
字段名 | 类型 | 必填 | 描述 |
---|---|---|---|
data.access_token | string | 是 | 访问令牌,默认有效期为 2 小时 |
如果签名校验不通过,http status code 是 400。
# 示例
- 请求示例
curl -X POST \
https://openaiapi.weixin.qq.com/v2/token \
-H 'X-APPID: Gg8HejYTkUsEIlG' \
-H 'request_id:54ae04cf-5e95-44fd-ad3f-62e7b163836b' \
-H 'timestamp:1711001766' \
-H 'nonce:abc' \
-H 'sign:通过sign=md5(Token+str(unix_timestamp)+nonce+md5(body))生成' \
-H 'content-type: application/json' \
-d '{
"account":"fb2ab07ce06"
}'
- 正确返回示例
{
"code": 0,
"data": {
"access_token": "MX6ddM5mN07ucVKy+Y-to7tKRufZ1YF05eb542d5170000001c"
},
"msg": "success",
"request_id": "54ae04cf-5e95-44fd-ad3f-62e7b163836b"
}
- 错误返回示例
{
"code": 110002,
"msg": "参数错误,缺少必要参数,或参数不正确",
"request_id": "54ae04cf-5e95-44fd-ad3f-62e7b163836b"
}
# 4. 接口索引
接口名 | uri |
---|---|
获取 Accesstoken | /v2/token |
异步任务查询 | /v2/async/fetch |
机器人导入/覆盖 | /v2/bot/import/json |
机器人发布 | /v2/bot/publish |
查询机器人发布进度 | /v2/bot/effective_progress |
调用智能对话 | /v2/bot/query |
# 5. 附录
# 6. 常见问题
如何反馈 bug?
提供请求的接口、request_id、问题描述、发生时间点等信息反馈给我们。