消息回应
消息回应(Reaction)功能支持用户对指定消息添加、移除表情回应,并查询消息回应摘要、回应列表及回应用户列表,适用于展示类似“点赞”“表情回应”等互动状态。
- 使用消息回应功能,需要 SDK 版本 ≥ 5.42.0。
reactionId为业务自定义回应标识,不超过 16 个字符。开发者可按业务约定使用表情编码、图片资源 ID 或其他唯一标识。- 查询消息回应摘要时,单次最多支持查询 100 条消息;分页查询回应列表或回应用户列表时,单次查询数量有效范围为 1 ~ 50。
监听消息回应变更
当会话内消息回应发生添加、移除或清空时,SDK 会通过 Events.MESSAGE_REACTION_CHANGED 事件通知客户端。通知数据结构参考 IMessageReactionEvent。
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 个回应信息。超过上限时,接口返回错误码。
接口
RongIMLib.addMessageReaction(param);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | IUpdateMessageReactionParam | 是 | 添加消息回应参数。 |
-
IUpdateMessageReactionParam 说明
参数 类型 必填 说明 conversationIdentifier IConversationOption 是 消息所属会话。 messageUId string 是 消息的唯一 ID。 reactionId string 是 回应 ID,不超过 16 个字符。 pushConfig IPushConfig 否 推送配置。当需要向消息发送者发送推送信息时,可配置该参数。
代码示例
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 一致。
接口
RongIMLib.removeMessageReaction(param);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | IUpdateMessageReactionParam | 是 | 移除消息回应参数。 |
-
IUpdateMessageReactionParam 说明
参数 类型 必填 说明 conversationIdentifier IConversationOption 是 消息所属会话。 messageUId string 是 消息的唯一 ID。 reactionId string 是 回应 ID,不超过 16 个字符。 pushConfig IPushConfig 否 推送配置。当需要向消息发送者发送推送信息时,可配置该参数。
代码示例
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 为该消息的回应列表。
接口
RongIMLib.batchGetMessageReactionSummaries(param);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | IMessageReactionSummaryQueryParam | 是 | 批量查询消息回应摘要参数。 |
-
IMessageReactionSummaryQueryParam 说明
参数 类型 必填 说明 conversationIdentifier IConversationOption 是 消息所属会话。 messageUIds string[] 是 需要查询回应摘要的消息 UID 列表,有效长度为 1 ~ 100。
代码示例
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。
接口
RongIMLib.getMessageReactions(param);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | IGetMessageReactionsParam | 是 | 分页查询消息回应列表参数。 |
-
IGetMessageReactionsParam 说明
参数 类型 必填 说明 conversationIdentifier IConversationOption 是 消息所属会话。 messageUId string 是 消息的唯一 ID。 count number 是 查询数量,有效值范围为 1 ~ 50。 pageToken string 否 分页游标,首页可不传,后续使用前次查询返回的 pageToken数据。
代码示例
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。
接口
RongIMLib.getMessageReactionUsers(param);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | IGetMessageReactionUsersParam | 是 | 分页查询消息回应用户列表参数。 |
-
IGetMessageReactionUsersParam 说明
参数 类型 必填 说明 conversationIdentifier IConversationOption 是 消息所属会话。 messageUId string 是 消息的唯一 ID。 reactionId string 是 回应 ID。 count number 是 查询数量,有效值范围为 1 ~ 50。 pageToken string 否 分页游标,首页可不传,后续使用前次查询返回的 pageToken数据。
代码示例
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);
});
});