×
注意!页面内容来自https://developer.work.weixin.qq.com/document/path/101463,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页
目录
| 语言 | 下载地址 |
|---|---|
| Node. | aibot-node-sdk |
| Python | aibot-python-sdk |
智能机器人支持两种 API 模式接收消息回调:
| 特性 | Webhook(短连接) | WebSocket(长连接) |
|---|---|---|
| 连接方式 | 每次回调建立新连接 | 复用已建立的长连接 |
| 延迟 | 较高(每次需建连) | 低(复用连接) |
| 实时性 | 一般 | 好 |
| 服务端要求 | 需要公网可访问的 URL | 无需固定的公网 IP |
| 加解密 | 需要对消息加解密 | 无需加解密 |
| 复杂度 | 低 | 较高(需维护心跳) |
| 可靠性 | 高(无状态) | 需要心跳保活、断线重连 |
| 适用场景 | 普通回调场景 | 高实时性要求、无固定公网 IP 场景 |
推荐使用 WebSocket 长连接方式的场景:
长连接模式的交互流程如下:
流程说明:
finish=true 结束流式消息aibot_send_msg 主动向用户或群聊推送消息,适用于定时提醒、异步任务通知、告警推送等场景在企业微信管理后台,进入智能机器人的配置页面,开启「API 模式」并选择「长连接」方式:
开启长连接 API 模式后,需要获取以下凭证用于建立连接:
| 凭证 | 说明 |
|---|---|
| BotID | 智能机器人的唯一标识,用于标识机器人身份 |
| Secret | 长连接专用密钥,用于身份校验 |
注意:
- Secret 是长连接专用的密钥,与设置接收消息回调地址模式的 Token/EncodingAESKey 不同
- 请妥善保管 Secret,避免泄露
- 模式切换影响:API 模式只能选择一种方式(长连接或设置接收消息回调地址),切换到「设置接收消息回调地址」模式会导致现有长连接失效;反之,从「设置接收消息回调地址」切换到「长连接」模式后,原有的回调地址将不再生效
wss://openws.work.weixin.qq.com
每个智能机器人同一时间只能保持一个有效的长连接。当同一个机器人发起新的连接请求并完成订阅(aibot_subscribe)时,新连接会踢掉旧连接,旧连接将被服务端主动断开。
注意:
- 开发者需要在业务层面避免同一机器人建立多个长连接
- 如果需要实现高可用,建议采用主备切换模式而非同时多连接
- 旧连接被踢掉时,开发者会收到连接断开事件
建立长连接的完整流程:
WebSocket 连接建立后,需要发送订阅请求(aibot_subscribe)进行身份校验。
注意:该请求有频率保护,订阅成功后应避免反复请求,否则可能触发系统限制。
请求示例:
{
"cmd": "aibot_subscribe",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"bot_id": "BOTID",
"secret": "SECRET"
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_subscribe |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成,用于关联请求和响应 |
| body.bot_id | string | 是 | 智能机器人的 BotID,获取方法参考配置说明 |
| body.secret | string | 是 | 长连接专用密钥 Secret,获取方法参考配置说明 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
用户向智能机器人发送消息时,企业微信会通过长连接推送消息回调(aibot_msg_callback)。
请求示例(文本消息):
{
"cmd": "aibot_msg_callback",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"msgid": "MSGID",
"aibotid": "AIBOTID",
"chatid": "CHATID",
"chattype": "group",
"from": {
"userid": "USERID"
},
"msgtype": "text",
"text": {
"content": "@RobotA hello robot"
}
}
}
请求字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| cmd | string | 命令类型,固定值 aibot_msg_callback |
| headers.req_id | string | 请求唯一标识,回复消息时需透传 |
| body.msgid | string | 本次回调的唯一性标志,用于事件排重 |
| body.aibotid | string | 智能机器人 BotID |
| body.chatid | string | 会话 ID,仅群聊类型时返回 |
| body.chattype | string | 会话类型,single 单聊 / group 群聊 |
| body.from.userid | string | 消息发送者的 userid |
| body.msgtype | string | 消息类型 |
长连接模式支持以下消息类型的回调:
| 消息类型 | msgtype | 说明 |
|---|---|---|
| 文本消息 | text | 用户发送的文本内容 |
| 图片消息 | image | 用户发送的图片,仅支持单聊 |
| 图文混排 | mixed | 用户发送的图文混排内容 |
| 语音消息 | voice | 用户发送的语音(转为文本),仅支持单聊 |
| 文件消息 | file | 用户发送的文件,仅支持单聊 |
| 视频消息 | video | 用户发送的视频,仅支持单聊 |
说明:各消息类型的 body 结构与设置接收消息回调地址模式一致,详细字段请参考对应链接。
长连接模式下,image、file 和 video 结构体中会额外返回解密密钥 aeskey,用于解密下载的资源文件:
图片结构体示例:
{
"image": {
"url": "URL",
"aeskey": "AESKEY"
}
}
文件结构体示例:
{
"file": {
"url": "URL",
"aeskey": "AESKEY"
}
}
视频结构体示例:
{
"video": {
"url": "URL",
"aeskey": "AESKEY"
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
| url | string | 资源下载地址,5 分钟内有效 |
| aeskey | string | 解密密钥,每个下载链接的 aeskey 唯一 |
注意:
- 每个 URL 对应的 aeskey 都是唯一的,不同于设置接收消息回调地址模式使用统一的 EncodingAESKey
- 加密方式:AES-256-CBC,数据采用 PKCS#7 填充至 32 字节的倍数
- IV 初始向量大小为 16 字节,取 aeskey 前 16 字节
用户与智能机器人发生交互时,企业微信会通过长连接推送事件回调(aibot_event_callback)。
请求示例(进入会话事件):
{
"cmd": "aibot_event_callback",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"msgid": "MSGID",
"create_time": 1700000000,
"aibotid": "AIBOTID",
"from": {
"userid": "USERID"
},
"msgtype": "event",
"event": {
"eventtype": "enter_chat"
}
}
}
请求字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| cmd | string | 命令类型,固定值 aibot_event_callback |
| headers.req_id | string | 请求唯一标识,回复消息时需透传 |
| body.msgid | string | 本次回调的唯一性标志,用于事件排重 |
| body.create_time | int | 事件产生的时间戳 |
| body.aibotid | string | 智能机器人 BotID |
| body.chatid | string | 会话 ID,仅群聊类型时返回 |
| body.chattype | string | 会话类型,single 单聊 / group 群聊 |
| body.from.userid | string | 事件触发者的 userid |
| body.msgtype | string | 消息类型,事件回调固定为 event |
| body.event.eventtype | string | 事件类型 |
长连接模式支持以下事件类型的回调:
| 事件类型 | eventtype | 说明 |
|---|---|---|
| 进入会话事件 | enter_chat | 用户当天首次进入机器人单聊会话 |
| 模板卡片事件 | template_card_event | 用户点击模板卡片按钮 |
| 用户反馈事件 | feedback_event | 用户对机器人回复进行反馈 |
| 连接断开事件 | disconnected_event | 当有新连接建立时,系统会给旧连接发送该事件并且主动断开旧连接 |
{
"cmd": "aibot_event_callback",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"msgid": "MSGID",
"create_time": 1700000000,
"aibotid": "AIBOTID",
"msgtype": "event",
"event": {
"eventtype": "disconnected_event"
}
}
}
连接断开事件字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| cmd | string | 命令类型,固定值 aibot_event_callback |
| headers.req_id | string | 请求唯一标识,回复消息时需透传 |
| body.msgid | string | 本次回调的唯一性标志,用于事件排重 |
| body.create_time | int | 事件产生的时间戳 |
| body.aibotid | string | 智能机器人 BotID |
| body.msgtype | string | 消息类型,事件回调固定为 event |
| body.event.eventtype | string | 此时固定为disconnected_event |
说明:除连接断开事件外,其他各事件类型的 body 结构与设置接收消息回调地址模式一致,详细字段请参考对应链接。
收到消息回调或事件回调后,开发者可通过长连接主动回复消息。
收到进入会话事件(enter_chat)后,开发者可使用 aibot_respond_welcome_msg 命令回复欢迎语。
请求示例(文本欢迎语):
{
"cmd": "aibot_respond_welcome_msg",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"msgtype": "text",
"text": {
"content": "您好!我是智能助手,有什么可以帮您的吗?"
}
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_respond_welcome_msg |
| headers.req_id | string | 是 | 透传事件回调中的 req_id |
| body | object | 是 | 消息内容,详见回复欢迎语 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
注意:
- 该命令仅适用于进入会话事件,其他事件类型不支持
- 收到事件回调后需在 5 秒内 发送回复,超时将无法发送欢迎语
收到消息回调(aibot_msg_callback)后,开发者可使用 aibot_respond_msg 命令回复消息。支持流式消息、模板卡片、流式消息和模板卡片组合消息、markdown、文件消息、语音消息、图片消息和视频消息。
模板卡片、markdown、文件消息、语音消息、图片消息和视频消息的消息格式参考支持的消息类型
频率限制:收到消息回调后,24 小时内可以往该会话回复消息。 无论是回复还是主动推送消息,总共给某个会话发消息的限制为 30 条/分钟,1000 条/小时。
流式消息的发送和刷新通过 stream.id 进行关联:
stream.id 回复时,会创建一条新的流式消息stream.id 推送时,会更新该流式消息的内容finish=true 结束流式消息,消息将不再可更新注意:从流式消息发送开始,需在 6 分钟内 完成所有刷新并设置 finish=true,否则消息将自动结束。两种模式的流式刷新方式对比:
| 模式 | 刷新方式 | 说明 |
|---|---|---|
| 设置接收消息地址 | 回调轮询 | 企业微信通过轮询回调开发者的接收消息地址来获取流式消息的刷新内容 |
| 长连接 | 主动推送 | 开发者服务主动通过长连接推送流式刷新消息,无需等待回调 |
流式消息交互流程:
说明:在长连接模式下,针对同一次消息回调的所有流式消息回复(包括首次发送和后续刷新),都需要使用回调中相同的req_id。req_id用于关联回调请求与响应,stream.id用于标识同一条流式消息。
请求示例(流式消息回复):
{
"cmd": "aibot_respond_msg",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"msgtype": "stream",
"stream": {
"id": "STREAMID",
"finish": false,
"content": "正在为您查询天气信息..."
}
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_respond_msg |
| headers.req_id | string | 是 | 透传消息回调中的 req_id |
| body | object | 是 | 消息内容,详见回复用户消息中的流式消息和模块卡片消息 不支持流式消息+模板卡片的组合消息 |
注意:目前暂不支持 msg_item 字段。
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
收到模板卡片点击事件(template_card_event)后,开发者可使用 aibot_respond_update_msg 命令更新卡片内容。
请求示例:
{
"cmd": "aibot_respond_update_msg",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"response_type": "update_template_card",
"template_card": {
"card_type": "button_interaction",
"main_title": {
"title": "xx系统告警",
"desc": "服务器CPU使用率超过90%"
},
"button_list": [
{
"text": "确认中",
"": 1,
"key": "confirm"
},
{
"text": "误报",
"": 2,
"key": "false_alarm"
}
],
"task_id": "TASK_ID",
"feedback": {
"id": "FEEDBACKID"
}
}
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_respond_update_msg |
| headers.req_id | string | 是 | 透传事件回调中的 req_id |
| body | object | 是 | 消息内容,详见更新模板卡片 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
注意:
- 该命令仅适用于模板卡片点击事件,其他事件类型不支持
- 收到事件回调后需在 5 秒内 发送回复,超时将无法更新卡片
在某些场景下,开发者需要在没有用户消息触发的情况下,主动向用户或群聊推送消息。例如:
长连接模式支持通过 aibot_send_msg 命令主动推送消息,无需依赖消息回调。特殊的,需要用户在会话中给机器人发消息,后续机器人才能主动推送消息给对应会话中。
频率限制:
无论是回复还是主动推送消息,总共给某个会话发消息的限制为 30 条/分钟,1000 条/小时。
请求示例(markdown 消息):
{
"cmd": "aibot_send_msg",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"chatid": "CHATID",
"chat_type": 1,
"msgtype": "markdown",
"markdown": {
"content": "这是一条**主动推送**的消息"
}
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_send_msg |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成,用于关联请求和响应 |
| body.chatid | string | 是 | 会话 ID,支持单聊和群聊。单聊填用户的 userid,群聊填对应群聊相关回调事件中获取的chatid |
| body.chat_type | uint32 | 否 | 会话类型,用于指定 chatid 的解析方式。1:单聊(用户 userid);2:群聊;0 或不填:兼容单聊/群聊类型,优先按照群聊会话类型去发送消息,建议开发者设置具体的单聊或者群聊来使用 |
| body.msgtype | string | 是 | 消息类型,支持 template_card(模板卡片)、markdown |
| body.template_card | object | 否 | 模板卡片内容,msgtype 为 template_card 时必填 |
| body.markdown | object | 否 | markdown 消息内容,msgtype 为 markdown 时必填 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
| 消息类型 | msgtype | 说明 |
|---|---|---|
| 模板卡片 | template_card | 模板卡片消息,详见模板卡片 |
| Markdown | markdown | Markdown 格式消息,详见markdown |
| 文件消息 | file | 普通文件消息,详见文件消息 |
| 图片消息 | image | 图片消息,详见图片消息 |
| 语音消息 | voice | 语音消息,详见语音消息 |
| 视频消息 | video | 视频消息,详见视频消息 |
{
"msgtype": "markdown",
"markdown": {
"content": "# 一、标题\n## 二级标题\n### 三级标题\n# 二、字体\n*斜体*\n\n**加粗**\n# 三、列表 \n- 无序列表 1 \n- 无序列表 2\n - 无序列表 2.1\n - 无序列表 2.2\n1. 有序列表 1\n2. 有序列表 2\n# 四、引用\n> 一级引用\n>>二级引用\n>>>三级引用\n# 五、链接\n[这是一个链接](https:work.weixin.qq.com\/api\/doc)\n\n# 六、分割线\n\n---\n# 七、代码\n`这是行内代码`\n```\n这是独立代码块\n```\n\n# 八、表格\n| 姓名 | 文化衫尺寸 | 收货地址 |\n| :----- | :----: | -------: |\n| 张三 | S | 广州 |\n| 李四 | L | 深圳 |\n",
"feedback": {
"id": "FEEDBACKID"
}
}
}
参数说明:
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| msgtype | String | 是 | 消息类型,此时固定为:markdown |
| markdown.content | String | 是 | 消息内容,最长不超过20480个字节,必须是utf8编码。 |
| markdown.feedback.id | String | 否 | 若字段不为空值,回复的消息被用户反馈时候会触发回调事件。有效长度为 256 字节以内,必须是 utf-8 编码。 |
content字段支持常见的markdown格式
{
"msgtype": "template_card",
"template_card": {
"feedback": {
"id": "FEEDBACKID"
}
}
}
参数说明:
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| msgtype | String | 是 | 消息类型,此时固定为:template_card |
| template_card | Object | 是 | 模板卡片结构体,参考模板卡片类型中类型说明 |
| template_card.feedback.id | String | 否 | 若字段不为空值,回复的消息被用户反馈时候会触发回调事件。有效长度为 256 字节以内,必须是 utf-8 编码。 |
请求示例:
{
"msgtype": "file",
"file" : {
"media_id" : "1Yv-zXfHjSjU-7LH-GwtYqDGS-zz6w22KmWAT5COgP7o"
}
}
参数说明:
| 参数 | 是否必须 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为:file |
| media_id | 是 | 文件id,可以调用上传临时素材接口获取 |
请求示例:
{
"msgtype":"image",
"image" : {
"media_id" : "MEDIA_ID"
}
}
请求参数:
| 参数 | 是否必须 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为:image |
| media_id | 是 | 图片媒体文件id,可以调用上传临时素材接口获取 |
请求示例:
{
"msgtype" : "voice",
"voice" : {
"media_id" : "MEDIA_ID"
}
}
参数说明:
| 参数 | 是否必须 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为:voice |
| media_id | 是 | 语音文件id,可以调用上传临时素材接口获取 |
请求示例:
{
"msgtype": "video",
"video": {
"media_id": "MEDIA_ID",
"title": "Title",
"description": "Description"
}
}
参数说明:
| 参数 | 是否必须 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为:video |
| media_id | 是 | 视频媒体文件id,可以调用上传临时素材接口获取 |
| title | 否 | 视频消息的标题,不超过64个字节,超过会自动截断 |
| description | 否 | 视频消息的描述,不超过512个字节,超过会自动截断 |
连接建立成功后,开发者需定期发送心跳请求(ping)保持连接活跃,防止连接被服务端主动断开。
请求示例:
{
"cmd": "ping",
"headers": {
"req_id": "REQUEST_ID"
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 ping |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
长连接模式支持通过分片方式上传临时素材。上传流程分为三步:
upload_idmedia_idchunk_index 顺序合并
请求示例:
{
"cmd": "aibot_upload_media_init",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"type": "file",
"filename": "test.pdf",
"total_size": 2333,
"total_chunks": 124,
"md5": "jgieosgmiesmgienogieisjgoegeo"
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_upload_media_init |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成,不超过256字节 |
| body.type | string | 是 | 文件类型,支持普通文件(file),图片(image),语音(voice)和视频(video) |
| body.filename | string | 是 | 文件名,不超过256字节 |
| body.total_size | int | 是 | 文件总大小,最少5个字节。图片文件不超过2MB,语音文件不超过2MB,视频文件不超过10MB,普通文件不超过20MB |
| body.total_chunks | int | 是 | 分片数量,不超100个分片 |
| body.md5 | string | 否 | 文件md5 |
图片文件支持png、jpg/jpeg和gif格式;语音文件支持amr格式;视频文件支持mp4格式
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"upload_id": "UPLOADID"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| body.upload_id | string | 本次上传操作的id,用于将所有分片关联起来 |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
逐片上传文件数据。分片可以乱序上传,重复上传同一分片会被自动忽略(幂等)。
请求示例:
{
"cmd": "aibot_upload_media_chunk",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"upload_id": "UPLOADID",
"chunk_index": 1,
"base64_data": "JGNEIOGJGE"
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_upload_media_chunk |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成,不超过256字节 |
| body.upload_id | string | 是 | 上传id,初始化时由企业微信服务器返回 |
| body.chunk_index | string | 是 | 分片的序号,从0开始 |
| body.base64_data | string | 是 | 分片内容经过base64 encode后的数据 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
所有分片上传完成后,调用此接口通知服务端合并分片。服务端会校验所有分片是否齐全、文件 MD5 是否匹配,然后返回 media_id。
请求示例:
{
"cmd": "aibot_upload_media_finish",
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"upload_id": "UPLOADID"
}
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | string | 是 | 命令类型,固定值 aibot_upload_media_finish |
| headers.req_id | string | 是 | 请求唯一标识,由开发者自行生成 |
| body.upload_id | string | 是 | 上传id,初始化时由企业微信服务器返回 |
响应示例:
{
"headers": {
"req_id": "REQUEST_ID"
},
"body": {
"type": "file",
"media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0",
"created_at": "1380000000"
},
"errcode": 0,
"errmsg": "ok"
}
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| headers.req_id | string | 透传请求中的 req_id |
| body.type | string | 文件类型 |
| body.media_id | string | 媒体文件上传后获取的唯一标识,3天内有效 |
| body.created_at | int | 媒体文件上传时间戳 |
| errcode | int | 错误码,0 表示成功 |
| errmsg | string | 错误信息,成功时为 "ok" |
