跳到主要内容

消息回应

消息回应(Reaction)功能支持用户对指定消息添加、移除表情回应,并查询消息回应摘要、回应列表及回应用户列表,适用于展示类似“点赞”“表情回应”等互动状态。

重要提示
  • 使用消息回应功能,需要 SDK 版本 ≥ 5.42.0。
  • reactionId 为业务自定义回应标识,不超过 16 个字符。开发者可按业务约定使用表情编码、图片资源 ID 或其他唯一标识。
  • 查询消息回应摘要时,单次最多支持查询 100 条消息;分页查询回应列表或回应用户列表时,单次查询数量有效范围为 1 ~ 50。

监听消息回应变更

当会话内消息回应发生添加、移除或清空时,SDK 会通过 Events.MESSAGE_REACTION_CHANGED 事件通知客户端。通知数据结构参考 IMessageReactionEvent

JavaScript
RongIMLib.addEventListener(RongIMLib.Events.MESSAGE_REACTION_CHANGED, (evt) => {
evt.reactions.forEach((item) => {
console.log('会话信息:', item.conversationIdentifier);
console.log('消息 UID:', item.messageUId);
console.log('回应 ID:', item.reactionId);
console.log('操作类型:', item.operationType);
console.log('变更用户列表:', item.users);
console.log('回应用户总数:', item.totalCount);
});
});

operationType 取值参考 MessageReactionOperationType

说明
MessageReactionOperationType.ADDED添加消息回应
MessageReactionOperationType.REMOVED移除消息回应
MessageReactionOperationType.CLEARED清空消息回应

添加消息回应

调用 addMessageReaction 接口,可以为指定消息添加回应。参数结构参考 IUpdateMessageReactionParam

一条消息最多支持添加 50 个回应信息。超过上限时,接口返回错误码。

接口

JavaScript
RongIMLib.addMessageReaction(param);

参数说明

参数类型必填说明
paramIUpdateMessageReactionParam添加消息回应参数。
  • IUpdateMessageReactionParam 说明

    参数类型必填说明
    conversationIdentifierIConversationOption消息所属会话。
    messageUIdstring消息的唯一 ID。
    reactionIdstring回应 ID,不超过 16 个字符。
    pushConfigIPushConfig推送配置。当需要向消息发送者发送推送信息时,可配置该参数。

代码示例

JavaScript
const param = {
conversationIdentifier: {
conversationType: RongIMLib.ConversationType.GROUP,
targetId: '<Group-ID>',
// channelId: '<Channel-ID>' // 超级群频道 ID,非超级群会话可不传
},
messageUId: '<消息 UID>',
reactionId: 'like',
// 如需向消息发送者发送推送,可配置 pushConfig
// pushConfig: {}
};

RongIMLib.addMessageReaction(param).then(({ code }) => {
if (code !== RongIMLib.ErrorCode.SUCCESS) {
console.log('添加消息回应失败:', code);
return;
}

console.log('添加消息回应成功');
});

移除消息回应

调用 removeMessageReaction 接口,可以移除当前用户对指定消息添加的回应。参数结构与 addMessageReaction 一致。

接口

JavaScript
RongIMLib.removeMessageReaction(param);

参数说明

参数类型必填说明
paramIUpdateMessageReactionParam移除消息回应参数。
  • IUpdateMessageReactionParam 说明

    参数类型必填说明
    conversationIdentifierIConversationOption消息所属会话。
    messageUIdstring消息的唯一 ID。
    reactionIdstring回应 ID,不超过 16 个字符。
    pushConfigIPushConfig推送配置。当需要向消息发送者发送推送信息时,可配置该参数。

代码示例

JavaScript
const param = {
conversationIdentifier: {
conversationType: RongIMLib.ConversationType.GROUP,
targetId: '<Group-ID>',
},
messageUId: '<消息 UID>',
reactionId: 'like',
};

RongIMLib.removeMessageReaction(param).then(({ code }) => {
if (code !== RongIMLib.ErrorCode.SUCCESS) {
console.log('移除消息回应失败:', code);
return;
}

console.log('移除消息回应成功');
});

查询消息回应摘要

调用 batchGetMessageReactionSummaries 接口,可以批量查询同一会话内多条消息的回应摘要。返回数据中,key 为消息 UID,value 为该消息的回应列表。

接口

JavaScript
RongIMLib.batchGetMessageReactionSummaries(param);

参数说明

参数类型必填说明
paramIMessageReactionSummaryQueryParam批量查询消息回应摘要参数。
  • IMessageReactionSummaryQueryParam 说明

    参数类型必填说明
    conversationIdentifierIConversationOption消息所属会话。
    messageUIdsstring[]需要查询回应摘要的消息 UID 列表,有效长度为 1 ~ 100。

代码示例

JavaScript
const param = {
conversationIdentifier: {
conversationType: RongIMLib.ConversationType.GROUP,
targetId: '<Group-ID>',
},
messageUIds: ['<消息 UID 01>', '<消息 UID 02>'],
};

RongIMLib.batchGetMessageReactionSummaries(param).then(({ code, data }) => {
if (code !== RongIMLib.ErrorCode.SUCCESS) {
console.log('查询消息回应摘要失败:', code);
return;
}

Object.keys(data).forEach((messageUId) => {
console.log('消息 UID:', messageUId);

data[messageUId].forEach((reaction) => {
console.log('回应 ID:', reaction.reactionId);
console.log('当前用户是否已回应:', reaction.hasCurrentUserReacted);
console.log('回应用户总数:', reaction.totalCount);
console.log('首次回应时间:', reaction.reactionTime);
console.log('回应用户列表:', reaction.users);
});
});
});
提示

Web 端返回的 IMessageReaction users 列表最多包含 10 条用户数据。如需查询完整用户列表,请使用 getMessageReactionUsers 分页获取。

分页查询消息回应列表

调用 getMessageReactions 接口,可以分页查询指定消息下的回应列表。返回数据结构参考 IMessageReactionsResult

接口

JavaScript
RongIMLib.getMessageReactions(param);

参数说明

参数类型必填说明
paramIGetMessageReactionsParam分页查询消息回应列表参数。
  • IGetMessageReactionsParam 说明

    参数类型必填说明
    conversationIdentifierIConversationOption消息所属会话。
    messageUIdstring消息的唯一 ID。
    countnumber查询数量,有效值范围为 1 ~ 50。
    pageTokenstring分页游标,首页可不传,后续使用前次查询返回的 pageToken 数据。

代码示例

JavaScript
const param = {
conversationIdentifier: {
conversationType: RongIMLib.ConversationType.GROUP,
targetId: '<Group-ID>',
},
messageUId: '<消息 UID>',
count: 20,
pageToken: '', // 首页可不传,后续使用前次查询返回的 pageToken 数据
};

RongIMLib.getMessageReactions(param).then(({ code, data }) => {
if (code !== RongIMLib.ErrorCode.SUCCESS) {
console.log('查询消息回应列表失败:', code);
return;
}

console.log('pageToken:', data.pageToken); // 值为空时表示没有更多数据可查
data.reactions.forEach((reaction) => {
console.log('回应 ID:', reaction.reactionId);
console.log('当前用户是否已回应:', reaction.hasCurrentUserReacted);
console.log('回应用户总数:', reaction.totalCount);
console.log('回应用户列表:', reaction.users);
});
});

分页查询消息回应用户列表

调用 getMessageReactionUsers 接口,可以分页查询指定消息中某个回应下的用户列表。返回数据结构参考 IMessageReactionUsersResult

接口

JavaScript
RongIMLib.getMessageReactionUsers(param);

参数说明

参数类型必填说明
paramIGetMessageReactionUsersParam分页查询消息回应用户列表参数。
  • IGetMessageReactionUsersParam 说明

    参数类型必填说明
    conversationIdentifierIConversationOption消息所属会话。
    messageUIdstring消息的唯一 ID。
    reactionIdstring回应 ID。
    countnumber查询数量,有效值范围为 1 ~ 50。
    pageTokenstring分页游标,首页可不传,后续使用前次查询返回的 pageToken 数据。

代码示例

JavaScript
const param = {
conversationIdentifier: {
conversationType: RongIMLib.ConversationType.GROUP,
targetId: '<Group-ID>',
},
messageUId: '<消息 UID>',
reactionId: 'like',
count: 20,
pageToken: '', // 首页可不传,后续使用前次查询返回的 pageToken 数据
};

RongIMLib.getMessageReactionUsers(param).then(({ code, data }) => {
if (code !== RongIMLib.ErrorCode.SUCCESS) {
console.log('查询消息回应用户列表失败:', code);
return;
}

console.log('pageToken:', data.pageToken); // 值为空时表示没有更多数据可查
console.log('回应用户总数:', data.totalCount);

data.users.forEach((user) => {
console.log('用户 ID:', user.userId);
console.log('回应时间:', user.reactionTime);
});
});