目录
当用户与智能机器人发生交互,向机器人发送消息时,交互事件将加密回调给机器人接受消息url,智能机器人服务通过接收并处理回调消息,实现更加丰富的自定义功能。
目前支持触发消息回调交互场景:
接收消息与被动回复消息都是加密的,加密方式参考回调和回复的加解密方案。
协议格式如下:
{
"msgid": "CAIQ16HMjQYY\/NGagIOAgAMgq4KM0AI=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"response_url": "RESPONSEURL",
"msgtype": "text",
"text": {
"content": "@RobotA hello robot"
},
"quote": {
"msgtype": "text",
"text": {
"content": "这是今日的测试情况"
}
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| response_url | 支持主动回复消息的临时url |
| msgtype | 消息类型,此时固定是text |
| text | 文本消息内容,可参考 文本 结构体说明 |
| quote | 引用内容,若用户引用了其他消息则有该字段,可参考 引用 结构体说明 |
{
"msgid": "CAIQz7/MjQYY/NGagIOAgAMgl8jK/gI=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"response_url": "RESPONSEURL",
"msgtype": "image",
"image": {
"url": "https://ww-aibot-img-1258476243.cos.ap-guangzhou.myqcloud.com/BHoPdA3/cdnimg_e2e243ba85a2d05ef201392de7291a.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDbBpaJvdLBvpnibcYcfyPuaO5f9U1UoGo%26q-sign-time%3D1733467811%3B1733468111%26q-key-time%3D1733467811%3B1733468111%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D0f7b6576943685f82870bc8db306dbf09dfe0fd6 "
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| response_url | 支持主动回复消息的临时url |
| msgtype | 消息类型,此时固定是image |
| image | 图片的内容,可参考 图片 结构体说明 |
{
"msgid": "CAIQrcjMjQYY/NGagIOAgAMg6PDc/w0=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"response_url": "RESPONSEURL",
"msgtype": "mixed",
"mixed": {
"msg_item": [
{
"msgtype": "text",
"text": {
"content": "@机器人 这是今日的测试情况"
}
},
{
"msgtype": "image",
"image": {
"url": "https://ww-aibot-img-1258476243.cos.ap-guangzhou.myqcloud.com/BHoPdA3/cdnimg_e2e243ba85a2d05ef201392de7291a.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDbBpaJvdLBvpnibcYcfyPuaO5f9U1UoGo%26q-sign-time%3D1733467811%3B1733468111%26q-key-time%3D1733467811%3B1733468111%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D0f7b6576943685f82870bc8db306dbf09dfe0fd6 "
}
}
]
},
"quote": {
"msgtype": "text",
"text": {
"content": "这是今日的测试情况"
}
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| response_url | 支持主动回复消息的临时url |
| msgtype | 消息类型,此时固定是mixed |
| mixed | 图文混排内容,可参考 图文混排 结构体说明 |
| quote | 引用内容,若用户引用了其他消息则有该字段,可参考 引用 结构体说明 |
{
"msgid": "CAIQrcjMjQYY/NGagIOAgAMg6PDc/w0=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"response_url": "RESPONSEURL",
"msgtype": "voice",
"voice": {
"content": "这是语音转成文本的内容"
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| response_url | 支持主动回复消息的临时url |
| msgtype | 消息类型,此时固定是voice |
| voice | 语音内容,可参考 语音 结构体说明 |
{
"msgid": "CAIQrcjMjQYY/NGagIOAgAMg6PDc/w0=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"response_url": "RESPONSEURL",
"msgtype": "file",
"file": {
"url": "https://ww-aibot-img-1258476243.cos.ap-guangzhou.myqcloud.com/BHoPdA3/cdnimg_e2e243ba85a2d05ef201392de7291a.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDbBpaJvdLBvpnibcYcfyPuaO5f9U1UoGo%26q-sign-time%3D1733467811%3B1733468111%26q-key-time%3D1733467811%3B1733468111%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D0f7b6576943685f82870bc8db306dbf09df00000 "
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| response_url | 支持主动回复消息的临时url |
| msgtype | 消息类型,此时固定是file。特殊的,智能机器人目前仅支持100M大小以内的文件回调 |
| file | 可参考 文件 结构体说明 |
{
"content": "@RobotA hello robot"
}
参数说明:
| 参数 | 说明 |
|---|---|
| content | 文本消息内容 |
{
"url": "https://ww-aibot-img-1258476243.cos.ap-guangzhou.myqcloud.com/BHoPdA3/cdnimg_e2e243ba85a2d05ef201392de7291a.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDbBpaJvdLBvpnibcYcfyPuaO5f9U1UoGo%26q-sign-time%3D1733467811%3B1733468111%26q-key-time%3D1733467811%3B1733468111%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D0f7b6576943685f82870bc8db306dbf09dfe0fd6 "
}
参数说明:
| 参数 | 说明 |
|---|---|
| url | 图片的下载url, 该url五分钟内有效。注意获取到的文件是已加密的,不能直接打开。加密AESKey与回调加解密的AESKey相同。加密方式:AES-256-CBC,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节,取AESKey前16字节,详见:https://datatracker.ietf.org/doc/html/rfc2315 |
{
"msg_item": [
{
"msgtype": "text",
"text": {
"content": "@机器人 这是今日的测试情况"
}
},
{
"msgtype": "image",
"image": {
"url": "URL"
}
}
]
}
参数说明:
| 参数 | 说明 |
|---|---|
| msg_item.msgtype | 图文混排中的类型,text/image,分别表示:文本和图片 |
| msg_item.text | 图文混排中的文本内容,可参考 文本 结构体说明 |
| msg_item.image | 图文混排中的图片内容,可参考 图片 结构体说明 |
{
"content": "这是语音转成文本的内容"
}
参数说明:
| 参数 | 说明 |
|---|---|
| content | 语音转换成文本的内容 |
{
"url": "https://ww-aibot-img-1258476243.cos.ap-guangzhou.myqcloud.com/BHoPdA3/cdnimg_e2e243ba85a2d05ef201392de7291a.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDbBpaJvdLBvpnibcYcfyPuaO5f9U1UoGo%26q-sign-time%3D1733467811%3B1733468111%26q-key-time%3D1733467811%3B1733468111%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D0f7b6576943685f82870bc8db306dbf09dfe0fd6 "
}
参数说明:
| 参数 | 说明 |
|---|---|
| url | 文件的下载url, 该url五分钟内有效。注意获取到的文件是已加密的,不能直接打开。加密AESKey与回调加解密的AESKey相同。加密方式:AES-256-CBC,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节,取AESKey前16字节,详见:https://datatracker.ietf.org/doc/html/rfc2315 |
{
"msgtype": "text",
"text": {
"content": "这是今日的测试情况"
},
"image": {
"url": "URL"
},
"mixed": {
"msg_item": [
{
"msgtype": "text",
"text": {
"content": "@机器人 这是今日的测试情况"
}
},
{
"msgtype": "image",
"image": {
"url": "URL"
}
}
]
},
"voice": {
"content": "这是语音转成文本的内容"
},
"file": {
"url": "URL"
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgtype | 引用的类型,text/image/mixed/voice/file,分别表示:文本/图片/图文混排/语音/文件消息类型 |
| text | 引用的文本内容,可参考 文本 结构体说明 |
| image | 引用的图片内容,可参考 图片 结构体说明 |
| mixed | 引用的图文混排内容,可参考 图文混排 结构体说明 |
| voice | 引用的语音内容,可参考 语音 结构体说明 |
| file | 引用的文件内容,可参考 文件 结构体说明 |
{
"msgid": "CAIQz7/MjQYY/NGagIOAgAMgl8jK/gI=",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"msgtype": "stream",
"stream": {
"id": "STREAMID"
}
}
参数说明:
| 参数 | 说明 |
|---|---|
| msgid | 本次回调的唯一性标志,开发者需据此进行事件排重(可能因为网络等原因重复回调) |
| aibotid | 智能机器人id |
| chatid | 会话id,仅群聊类型时候返回 |
| chattype | 会话类型,single\group,分别表示:单聊\群聊 |
| from | 该事件触发者的信息 |
| from.userid | 操作者的userid |
| msgtype | 消息类型,此时固定是stream。特殊的,该消息事件仅支持流式消息的回复 |
| stream.id | 流式消息的id,智能机器人根据该id返回对应的流式消息 |
