即时通信 IM Web&小程序&uni-app(流式消息)

流式消息(Stream Message)是即时通信 IM SDK 提供的一种特殊消息类型,专为 AI 对话等场景设计。在这类场景中,消息内容由服务端逐步生成,SDK 会实时接收内容分片并累加,直到整条消息生成完毕。客户端通过监听消息修改事件,即可实时获取流式消息的最新内容,实现类似 ChatGPT 的逐字输出效果。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、功能描述

注意:说明:

二、流式消息 payload 数据结构

属性 含义 说明
markdown 流式消息文本内容 随着分片到达逐步累加的文本内容,只读。
isStreamEnded 流式消息是否结束 为 true 时表示服务端已完成所有内容推送。

注意:说明:

三、发送流式消息

流式消息只能通过 REST API 发送,具体参考 发送 C2C 流式消息 和 发送群流式消息。

四、接收流式消息

当收到一条新的流式消息时,SDK 会通过 MESSAGE_RECEIVED 事件通知。此时消息中的 payload 内容可能还不完整(isStreamEnded 为 false)。

示例代码如下:

let onMessageReceived = function(event) { event.data.forEach((message) => { if (message.type === TencentCloudChat.TYPES.MSG_STREAM) { // 在 UI 上展示消息,后续内容会通过 MESSAGE_MODIFIED 事件持续更新 const { markdown, // 流式消息内容 isStreamEnded, // 流式消息是否结束 } = message.payload; } })};chat.on(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);

五、监听流式消息内容更新

SDK 收到新的分片数据后,会自动将内容累加到 payload 中,并通过 MESSAGE_MODIFIED 事件通知上层。只需在该回调中读取最新的 markdown 内容并刷新 UI 即可。

注意:说明:

示例代码如下:

let onMessageModified = function(event) { event.data.forEach((message) => { if (message.type === TencentCloudChat.TYPES.MSG_STREAM) { const { markdown, // 流式消息内容 isStreamEnded, // 流式消息是否结束 } = message.payload; // 通过 message.ID 更新消息内容 if (isStreamEnded) { // 流式消息已结束,可以做最终处理 } } })};chat.on(TencentCloudChat.EVENT.MESSAGE_MODIFIED, onMessageModified);

六、历史消息中的流式消息

当拉取历史消息时:

·若消息中包含未完成的流式消息,SDK 会自动恢复拉流操作,继续通过 MESSAGE_MODIFIED 事件更新内容,客户端无需额外处理。

·若消息中的流式消息已全部拉取完毕,拉取历史消息后可直接展示完整内容,且不会再次触发 MESSAGE_MODIFIED 事件。

赞 (0)
上一篇 4天前
下一篇 4天前