圈组快捷评论
更新时间: 2024/11/21 16:31:48
快捷评论是一个操作功能,并非一种消息类型。评论内容并非一条消息,而是一个 long 类型,由开发者指定评论内容与界面展示之间的联系。
快捷评论的 UI 示例见下图。

前提条件
- 已开通圈组的快捷评论功能。圈组的快捷评论功能需要在开通圈组功能的基础上额外开通后才能使用。
- 已完成圈组初始化。
实现流程
添加/移除快捷评论
API 调用时序
sequenceDiagram
note over 圈组: 初始化
用户A ->> 圈组: 初始化
用户B ->> 圈组: 初始化
note over 圈组: 注册回调函数并登录
用户A ->> 圈组: 注册接收消息回调
用户A ->> 圈组: 注册系统通知回调
用户A ->> 圈组: 登录圈组
用户B ->> 圈组: 注册接收消息回调
用户B ->> 圈组: 注册系统通知回调
用户B ->> 圈组: 登录圈组
note over 圈组: 双方成为同一服务器的成员
note over 圈组: 双方都能访问同一频道
note over 圈组: 双方都拥有发送消息的权限
note over 圈组: 消息收发
用户A ->> 圈组: 在频道发送消息
圈组 ->> 用户B: 投递消息(圈组Message)
用户B ->> 圈组: 为接收到的消息添加快捷评论
圈组 ->> 用户A: 系统通知回调
用户B ->> 圈组: 移除快捷评论
圈组 ->> 用户A: 系统通知回调
具体流程
本节仅对上图中标为部分的流程进行说明,其他流程请参考相关文档。例如:
-
用户A和用户B注册回调函数并登录。
- 注册
Message::RegRecvCb消息接收回调函数,监听快捷评论接收。 - 注册
SystemNotification::RegRecvCb系统通知回调函数,监听快捷评论添加和移除。
示例代码如下:
注册消息接收回调c++QChatRegRecvMsgCbParam reg_receive_message_cb_param; reg_receive_message_cb_param.cb = [this](const QChatRecvMsgResp& resp) { if (resp.res_code != NIMResCode::kNIMResSuccess) { // error handling return; } // process response // ... }; Message::RegRecvCb(reg_receive_message_cb_param);注册系统通知回调QChatRegRecvSystemNotificationCbParam reg_receive_sysmessage_cb_param; reg_receive_sysmessage_cb_param.cb = [this](const QChatRecvSystemNotificationResp& resp) { if (resp.res_code != NIMResCode::kNIMResSuccess) { // error handling return; } // process response // ... }; SystemNotification::RegRecvCb(reg_receive_sysmessage_cb_param); - 注册
-
用户B在收到消息后,调用
AddQuickComment方法为接收到的消息添加快捷评论。调用成功后,系统通知回调触发,用户A收到系统通知。用户也可在搜索/查询消息后为消息添加快捷评论,本文仅以接收消息后添加快捷评论作为示例进行说明。
云信服务端不会下发相关系统通知给发起“添加快捷评论”操作的设备,因为操作者不需要接收当前操作的通知。但如果操作者使用相同 IM 账号在其他设备登录,将收到该通知。
示例代码如下:
QChatAddQuickCommentParam param; param.type = 1; // type is a user defined interger param.message = origin_message; // origin_message is a QChatMessage you received or queried. param.cb = [this](const QChatAddQuickCommentResp& resp) { if (resp.res_code != NIMResCode::kNIMResSuccess) { // error handling return; } // process response // ... }; Message::AddQuickComment(param); -
(可选)用户B调用
RemoveQuickComment方法移除快捷评论。调用成功后,快捷评论移除并触发系统通知回调。
云信服务端不会下发相关系统通知给发起“移除快捷评论”操作的设备,因为操作者不需要接收当前操作的通知。但如果操作者使用相同 IM 账号在其他设备登录,将收到该通知。
查询快捷评论列表
调用GetQuickComments 可查询指定消息所包含的快捷评论列表。
返回的快捷评论详情 QChatGetQuickCommentsResp 包含 res_code 操作结果以及 comments(QChatQuickCommentInfo)快捷评论列表。
QChatQuickCommentInfo的参数说明如下:
| 参数 | 类型 | 说明 |
|---|---|---|
server_id |
uint64_t | 服务器 ID |
channel_id |
uint64_t | 频道 ID |
msg_server_id |
uint64_t | 消息服务端 ID |
count |
uint64_t | 总评论数 |
timestamp |
uint64_t | 消息评论最后一次操作的时间 |
details |
std::vector< QChatQuickCommentDetail > |
评论详情列表 |
其中QChatQuickCommentDetail的参数说明如下:
| 参数 | 类型 | 说明 |
|---|---|---|
type |
uint64_t | 评论类型 |
include_yourself |
bool | 自己是否添加了该类型评论 |
count |
uint64_t | 总评论数 |
create_time |
uint64_t | 消息评论的创建时间 |
accids |
std::vector< std::string > |
若干个添加了此类型评论的用户 ID (accid)列表,随机获取结果 |
示例代码如下:
QChatGetQuickCommentsParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.msg_server_id_list = {123, 456};
param.cb = [](const QChatGetQuickCommentsResp& resp) {
if (resp.res_code != kNIMResSuccess) {
// GetQuickComments failed
// ......
return
}
// process resp.comments
};
Message::GetQuickComments(param);
API 参考
API |
说明 |
|---|---|
RegRecvCb |
消息接收回调函数 |
nim_qchat::SystemNotification::RegRecvCb |
系统通知回调函数 |
AddQuickComment |
添加快捷评论 |
RemoveQuickComment |
移除快捷评论 |
GetQuickComments |
获取指定消息包含的快捷评论列表 |
此文档是否对你有帮助?





