跳到正文

发送富媒体消息 ​

图片、视频、语音和普通文件都先上传,再发送。上传到目标会话后,平台返回不透明的 file_info。用 message.Media(fileInfo) 构造消息。

数据来源推荐入口行为
公网 HTTP(S) URLContext.UploadMedia 或 Client.UploadMediaQQ 平台下载指定 URL
本地文件、内存对象、随机访问存储Context.UploadFile 或 Client.UploadFileSDK 计算哈希并按服务端计划分片上传
已准备的上传任务PrepareUpload、UploadPart、FinishUploadPart、UploadMedia业务管理上传阶段和恢复状态
Markdown 中可复用图片图片素材管理返回 qqbot-media://...,与 file_info 用途不同

选择媒体类别 ​

按官方协议中的媒体类别选择对应常量。

类型常量格式提示
1 图片message.FileTypeImagePNG/JPEG 等平台支持图片
2 视频message.FileTypeVideo平台支持的视频格式,例如 MP4
3 语音message.FileTypeVoice以平台当前允许的语音格式为准
4 文件message.FileTypeFile普通文件,权限和限制由平台决定

上传结果的有效范围 ​

发送时使用目标会话对应的 RichMediaResponse.FileInfo。结果还包含下列字段。

  • TTL 以秒计。零表示长期有效。其他值到期后由业务重新上传。
  • FileUUID 是文件标识。
  • RawURL 是可选下载地址。

SrvSendMsg 默认为 false,只上传。推荐保留默认值,再用 ctx.Reply 发送被动消息(passive message)。

选择指南 ​

先看文件在哪里,再按单聊或群聊选择上传方法。

注意事项 ​

  • 上传成功只确认上传结果。发送和视频播放需要分别验证。
  • SDK 不转码。更改扩展名无法转换媒体格式。QQ 决定文件大小、音视频编码、审核及展示要求。
  • file_info 应用于对应场景及会话。单聊、群聊和不同会话之间的复用没有保证。
  • 临时下载地址不适合保存为永久业务引用。SDK 不自动缓存、刷新或跨会话迁移上传结果。
  • SrvSendMsg 为 true 时请求主动消息(proactive message)。平台检查资格和配额,见 调用 OpenAPI。
  • URL、UploadID、FileData 三选一。官方将 file_data 描述为字符串,限制为 5M,但未明确编码。
  • SDK 会原样传递 file_data。官方没有明确说明是否支持 Base64 等编码,SDK 也没有验证任意二进制编码。上传本地文件时可以直接用分片上传。

另请参阅 ​

消息收发 · Markdown 图片素材 · QQ 官方:富媒体消息概述