# QQ Bot Rich Media API Reference Source: https://bot.q.qq.com/wiki/develop/api-v2/server-inter/message/send-receive/rich-media.html ## Endpoints | Scope | Endpoint | Method | |-------|----------|--------| | 单聊 | `/v2/users/{openid}/files` | POST | | 群聊 | `/v2/groups/{group_openid}/files` | POST | ## Parameters | Field | Type | Required | Description | |-------|------|----------|-------------| | file_type | int | Yes | 1=图片, 2=视频, 3=语音, 4=文件 | | url | string | Yes* | 媒体资源 URL(*url 或 file_data 二选一) | | file_data | string | No | base64 二进制数据 | | srv_send_msg | bool | Yes | true=直接发送(占用主动消息频次),false=仅上传获取 file_info | | file_name | string | No | 文件名(file_type=4 时建议传) | ## Supported Formats - 图片: png/jpg - 视频: mp4 - 语音: silk/wav/mp3/flac - 文件: 无限制(群场景暂不开放 file_type=4) ## Response ```json { "file_uuid": "...", "file_info": "...", // 用于发送消息接口的 media 字段 "ttl": 3600 // 剩余秒数,0=长期有效 } ``` ## Sending with file_info ```json { "msg_type": 7, "media": {"file_info": ""}, "msg_seq": 1 } ``` ## Notes - `file_info` 不受目标端影响,可复用到多个群/用户 - 用 `/v2/users/{openid}/files` 上传的仅能发单聊,群上传的仅能发群聊 - 建议 `srv_send_msg=false`,先获取 file_info 再发送 - 文件大小限制:~100MB(分块上传),~10MB(inline base64) ## Hermes Adapter Implementation - Gateway adapter: `gateway/platforms/qqbot/adapter.py` → `_send_media()` (line ~2690) - Chunked upload: `gateway/platforms/qqbot/chunked_upload.py` - Media types defined in `gateway/platforms/qqbot/constants.py` (MEDIA_TYPE_IMAGE=1, VIDEO=2, VOICE=3, FILE=4) - send_message tool gap: `_send_qqbot()` in `tools/send_message_tool.py:1677` is text-only