接口调用说明
App 管理员可以通过该接口给用户发送流式消息。用户转人工后,人工客服也能看到该消息。V2版本的流式消息最大支持128KB的消息大小,可以满足长文本的流式输出需求。
请求 URL 示例
https://console.tim.qq.com/v4/desk_http_svc/send_stream_msg_v2?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
请求参数说明
参数 | 说明 |
v4/desk_http_svc/send_stream_msg_v2 | 请求接口。 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID。 |
identifier | |
usersig | |
random | 请输入随机的32位无符号整数,取值范围0 - 4294967295。 |
contenttype | 请求格式固定值为 json。 |
接口限制
消息大小 < 128KB。
终止规则:流式消息一旦终止,该流式消息的后续请求将被拒绝。
分片间隔限制:每次分片之间的最长间隔不能超过 15 秒,超时后流式消息会自动结束。
调用频率:后台接口限制了每条消息的续流频率为5次/秒。建议使用缓冲逻辑,而非每个字符都立即调用接口,推荐每 200 毫秒调用一次。
此接口暂时只支持国内调用。
新版的流式消息用户端 UIKit 需要更新到1.7.0版本及以上。
请求包示例
首次调用:
{"SessionId": "fd8a2e30-54de-4e40-bcaf-02718409c5cf", //标识会话的ID"MsgBody": [{"MsgType": "TIMStreamElem", //消息类型"MsgContent": {"CompatibleText": "当前版本过低,请升级后查看流式消息","Chunks": [{"EventType": "data","Index": 1, // 消息Chunk索引, 从1开始严格递增"Markdown": "您好,这是流式消息的第一个分片", // 消息内容"IsLast": false // 是否为最后一个chunk}]}}],"CloudCustomData": "your cloud custom data"}
首次响应:
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MsgKey": "k696185682_1772184822_8_1600045926_test_heart4@customer_service_account" //返回的消息标识,后续调用需要传递此参数}
后续调用追加文本:
{"SessionId": "fd8a2e30-54de-4e40-bcaf-02718409c5cf", //标识会话的ID"MsgBody": [{"MsgType": "TIMStreamElem","MsgContent": {"CompatibleText": "当前版本过低,请升级后查看流式消息","Chunks": [{"EventType": "data","Index": 2, // 消息Chunk索引, 从1开始严格递增"Markdown": "您好,这是流式消息的第二个分片","IsLast": false}]}}],"MsgKey": "k696185682_1772184822_8_1600045926_test_heart4@customer_service_account" // 后续调用需要带上返回的MsgKey}
最后一次调用:
{"SessionId": "fd8a2e30-54de-4e40-bcaf-02718409c5cf", //标识会话的ID"MsgBody": [{"MsgType": "TIMStreamElem","MsgContent": {"CompatibleText": "当前版本过低,请升级后查看流式消息","Chunks": [{"EventType": "data","Index": 10, // Index 要严格递增"Markdown": "您好,这是流式消息的最后一个分片","IsLast": true // 最后一个分片标志}]}}],"MsgKey": "k696185682_1772184822_8_1600045926_test_heart4@customer_service_account"}
请求包字段说明
字段 | 类型 | 属性 | 说明 |
SessionId | String | 必填 | 会话 ID。 |
MsgBody | Array | 必填 | 消息内容,必须包含 TIMStreamElem 类型的消息元素。 |
MsgType | String | 必填 | 流式消息必须为 TIMStreamElem。 |
MsgContent | Object | 必填 | 流式消息内容对象,详见下文 StreamMsgContent 结构。 |
CloudCustomData | String | 选填 | |
MsgKey | String | 选填 | 流式消息标识,首次调用 API 时不填,从第二次开始调用需要填写。 |
StreamMsgContent字段说明
字段 | 类型 | 属性 | 说明 |
CompatibleText | String | 选填 | 用于系统兼容,设置提示文本,默认值为“当前版本过低,请升级后查看流式消息”。 |
Chunks | Array | 必填 | 流式消息分片数组,详见下文 StreamChunk 结构。 |
StreamChunk字段说明
字段 | 类型 | 属性 | 说明 |
EventType | String | 必填 | 分片类型: data:AI 回复流式内容或普通数据。这里目前仅支持 data类型。 |
Index | Integer | 必填 | 分片索引,从1开始,严格递增。 |
Markdown | String | 选填 | 流式 Markdown 内容,不填时内容为空。 |
IsLast | Boolean | 必填 | 是否为最后一个分片;最后一个分片 IsLast=true。 |
应答包体示例
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MsgKey": "k696185682_1772184822_8_1600045926_test_heart4@customer_service_account" //返回的消息标识,后续调用需要传递此参数}
应答包字段说明
字段 | 类型 | 说明 |
ErrorCode | Integer | 错误码: 0表示成功。 非0表示失败。 |
ErrorInfo | String | 错误信息。 |
ActionStatus | String | 请求处理的结果。 |
MsgKey | String | 返回消息的唯一标识,用于后续文本输出。首次调用时无需填写,后续调用时需要填写。 |
错误码说明
除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
本 API 私有错误码如下:
错误码 | 描述 |
90300 | 流式消息格式错误。 |
90306 | MsgKey 解析失败。 |
90308 | UserSig 或 A2 无效。 |
90309 | 服务器内部错误。 |
90310 | JSON 格式解析失败。 |
90311 | MsgBody 格式错误。 |
90312 | MsgBody 不是数组类型。 |
90315 | 请求频率超限。 |
90316 | chunk已经发送成功,请勿重复发送。 |
141000 | 非智能客服的应用不允许调用此接口。 |
141002 | 系统内部错误,请重试。 |
141004 | 请求参数非法,请检查后重试。 |
141005 | 该会话不存在。 |
141006 | SessionID 非法。 |