功能说明
从一个账号向一个群发送流式消息。
流式消息支持实时内容流式传输,适用于 AI 助手回复、大文本传输等场景。
接口支持消息分片,允许内容分多次发送,客户端可以逐步接收。
接口不检查发送者和接收者的好友关系(包括黑名单),也不检查发送者是否被禁言。
接口说明
请求URL示例
https://xxxxxx/v4/stream_msg/send_group_stream_msg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
请求参数说明
参数 | 说明 |
xxxxxx | SDKAppID 所在国家/地区对应的专属域名:中国: console.tim.qq.com新加坡: adminapisgp.im.qcloud.com 首尔: adminapikr.im.qcloud.com 东京: adminapijpn.im.qcloud.com法兰克福: adminapiger.im.qcloud.com硅谷: adminapiusa.im.qcloud.com雅加达: adminapiidn.im.qcloud.com |
v4/stream_msg/send_group_stream_msg | 请求接口。 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID。 |
identifier | |
usersig | |
random | 请输入随机的32位无符号整数,取值范围0 - 4294967295。 |
contenttype | 请求格式固定值为 json。 |
接口请求频率限制
分片间隔限制:每次分片之间的最长间隔不能超过 15 秒,超时后流式消息会自动结束。
体验版和开发版限制日累计发送量:1000条/天。
消息大小 < 128KB。
终止规则:流式消息一旦终止,该流式消息的后续请求将被拒绝。
调用频率:后台接口限制了续流频率为5次/秒. 建议使用缓冲逻辑,而非每个字符都立即调用接口, 推荐每 200 毫秒调用一次。
请求包示例
发送初始群组流式消息分片
{"GroupId": "group_123456","MsgRandom": 1287657,"MsgBody": [{"MsgType": "TIMStreamElem","MsgContent": {"CompatibleText": "当前版本过低,请升级后查看流式消息","Chunks": [{"EventType": "data","Index": 1,"Markdown": "大家好,这是群组流式消息的第一个分片","IsLast": false}]}}],"CloudCustomData": "your cloud custom data"}
继续发送群组流式消息分片
{"GroupId": "group_123456","MsgRandom": 1287657,"MsgBody": [{"MsgType": "TIMStreamElem","MsgContent": {"StreamMsgID": "stream_msg_id_from_first_response","Chunks": [{"EventType": "data","Index": 2,"Markdown": " - 继续发送给所有群成员的内容","IsLast": false},{"EventType": "data","Index": 3,"Markdown": " - 最终内容","IsLast": true}]}}]}
请求包字段说明
字段 | 类型 | 属性 | 说明 |
GroupId | String | 必填 | 群组 ID,标识向哪个群组发送消息。 |
From_Account | Integer | 选填 | 消息发送方 UserID(用于指定发送消息方账号)。若不填写,则消息由系统管理员发送。 |
MsgRandom | Integer | 必填 | 消息随机数(32位无符号整数),后台用于同一秒内的消息去重。请确保该字段填的是随机数。 |
SendMsgControl | Array | 选填 | 消息发送控制选项,是一个 String 数组,只对本条消息有效。 NoUnread 表示该条消息不计入未读数。NoLastMsg 表示该条消息不更新会话列表。NoMsgCheck 表示开启云端审核时,该条消息不进行审核。 |
MsgBody | Array | 必填 | 消息内容,必须包含 TIMStreamMsgElem 类型的消息元素。 |
MsgType | String | 必填 | 流式消息必须为 TIMStreamMsgElem。 |
MsgContent | Object | 必填 | 流式消息内容对象,详见下文 StreamMsgContent 结构。 |
CloudCustomData | String | 选填 | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)。 |
NeedReadReceipt | Integer | 选填 | 该条消息是否需要已读回执: 0为不需要。 1为需要。 默认为0。 |
OfflinePushInfo | Object | 选填 |
StreamMsgContent字段说明
字段 | 类型 | 属性 | 说明 |
CompatibleText | String | 选填 | 用于系统兼容,设置提示文本,默认值为“当前版本过低,请升级后查看流式消息”。 |
StreamMsgID | String | 选填 | 首次流式消息不需要填写此字段,续流需要包含此字段(首次响应中返回)。 |
Chunks | Array | 必填 | 流式消息分片数组,详见下文 StreamChunk 结构。 |
StreamChunk字段说明
字段 | 类型 | 属性 | 说明 |
EventType | String | 必填 | 分片类型: data :AI 回复流式内容或普通数据。 |
Index | Integer | 必填 | 分片索引,从1开始,严格递增。 |
Markdown | String | 选填 | 流式 Markdown 内容。 |
IsLast | Boolean | 必填 | 是否为最后一个分片;最后一个分片 IsLast=true。 |
应答包示例
正常应答(首个消息分片)
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"StreamMsgID": "stream_group_1234567890_abcdef","MsgTime": 1672870301,"MsgSeq": 123456789}
异常应答
{"ActionStatus": "FAIL","ErrorInfo": "群组消息需要GroupId字段","ErrorCode": 90303}
应答包字段说明
字段 | 类型 | 说明 |
ActionStatus | String | 请求处理的结果: OK:处理成功。 FAIL:处理失败。 |
ErrorCode | Integer | 错误码: 0:成功。 非0:失败。 |
ErrorInfo | String | 错误信息。 |
StreamMsgID | String | 流式消息唯一标识,用于续流发送。 |
MsgTime | Integer | 消息时间戳,UNIX 时间戳。 |
MsgSeq | Integer | 消息序列号。 |
错误码说明
除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码、错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
本API私有错误码如下:
错误码 | 描述 |
90300 | 流式消息格式错误。 |
90303 | 缺少 GroupId 字段。 |
90306 | StreamMsgID 解析失败。 |
90308 | UserSig 或 A2 无效。 |
90309 | 服务器内部错误。 |
90310 | JSON 格式解析失败。 |
90311 | MsgBody 格式错误。 |
90312 | MsgBody 不是数组类型。 |
90313 | 群不存在或已解散。 |