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

如果你想实现类似于微信的合并转发功能,需要进行以下步骤合并消息的展示还需要标题和摘要信息。

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

一、功能描述

1. 根据原始消息列表创建一条合并消息。

2. 把合并消息发送到对端。

3. 对端收到合并消息后解析出原始消息列表。

合并转发 合并消息展示 点击合并消息下载合并消息列表展示
  

二、创建合并消息

创建合并消息的接口,此接口返回一个消息实例,可以在需要发送合并消息时调用 发送消息 接口发送消息。

注意:不支持合并已发送失败的消息,如果消息列表内传入了已发送失败的消息,则创建消息接口会报错。

接口

chat.createMergerMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认 说明
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C或 TencentCloudChat.TYPES.CONV_GROUP
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object – 消息内容的容器
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)

payload 的描述如下:

参数 类型 说明
messageList Array 合并的消息列表
title String 合并的标题,例如:"大湾区前端人才中心的聊天记录"
abstractList String 摘要列表,不同的消息类型可以设置不同的摘要信息,例如:文本消息可以设置为:sender: text,图片消息可以设置为:sender: [图片],文件消息可以设置为:sender: [文件]
compatibleText String 兼容文本,低版本 SDK 如果不支持合并消息,默认会收到一条文本消息,文本消息的内容为 ${compatibleText},必填

返回值

Message

示例

// 1. 将群聊消息转发到 c2c 会话// message1 message2 message3 是群聊消息let mergerMessage = chat.createMergerMessage({ to: 'user1', conversationType: TencentCloudChat.TYPES.CONV_C2C, payload: { messageList: [message1, message2, message3], title: '大湾区前端人才中心的聊天记录', abstractList: ['allen: 666', 'iris: [图片]', 'linda: [文件]'], compatibleText: '请升级IMSDK到v2.10.1或更高版本查看此消息' }, // 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) // cloudCustomData: 'your cloud custom data'});// 2. 发送消息let promise = chat.sendMessage(mergerMessage);promise.then(function(imResponse) { // 发送成功 console.log(imResponse);}).catch(function(imError) { // 发送失败 console.warn('sendMessage error:', imError);});

三、下载合并消息

如果发送方发送的合并消息较大,SDK 会将此消息存储到云端,消息接收方查看消息时,需要先把消息从云端下载到本地。

接口

chat.downloadMergerMessage(message);

参数

参数 类型 说明
message Message 消息实例

返回值

Promise

示例

// downloadKey 存在说明收到的合并消息存储在云端,需要先下载if (message.type === TencentCloudChat.TYPES.MSG_MERGER && message.payload.downloadKey !== '') { let promise = chat.downloadMergerMessage(message); promise.then(function(imResponse) { // 下载成功后,SDK会更新 message.payload.messageList 等信息 console.log(imResponse.data); }).catch(function(imError) { // 下载失败 console.warn('downloadMergerMessage error:', imError); });}

四、逐条转发消息

如果你需要转发单条消息,可以先通过 createForwardMessage 接口创建一条和原消息内容完全一样的转发消息,再调用 sendMessage 接口把转发消息发送出去。

注意:支持单条转发和逐条转发。

接口

chat.createForwardMessage(message);

参数

参数 类型 说明
message Message 消息实例

返回值

Message

示例

let forwardMessage = chat.createForwardMessage({ to: 'user1', conversationType: TencentCloudChat.TYPES.CONV_C2C, // 消息优先级,用于群聊 // priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL, payload: message, // 消息实例,已收到的或自己已发出的消息 // 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到) // cloudCustomData: 'your cloud custom data'});// 2. 发送消息let promise = chat.sendMessage(forwardMessage);promise.then(function(imResponse) { // 发送成功 console.log(imResponse);}).catch(function(imError) { // 发送失败 console.warn('sendMessage error:', imError);});

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