needReadReceipt: true
,然后发送消息。// 发送 C2C 消息let message = chat.createTextMessage({to: 'user1',conversationType: TencentCloudChat.TYPES.CONV_C2C,payload: {text: 'Hello world!'},// 如果您发消息需要已读回执,需购买旗舰版套餐,并且创建消息时将 needReadReceipt 设置为 trueneedReadReceipt: true});// 2. 发送消息let promise = chat.sendMessage(message);promise.then(function(imResponse) {// 发送成功console.log(imResponse);}).catch(function(imError) {// 发送失败console.warn('sendMessage error:', imError);});
// 发送群消息let message = chat.createTextMessage({to: 'test',conversationType: TencentCloudChat.TYPES.CONV_GROUP,payload: {text: 'Hello world!'},// 如果您发消息需要已读回执,需购买旗舰版套餐,并且创建消息时将 needReadReceipt 设置为 trueneedReadReceipt: true});// 发送消息let promise = chat.sendMessage(message);promise.then(function(imResponse) {// 发送成功console.log(imResponse);}).catch(function(imError) {// 发送失败console.warn('sendMessage error:', imError);});
Message
的 needReadReceipt
字段判断消息是否需要已读回执,如果需要已读回执,当用户查看消息后,调用 sendMessageReadReceipt 接口发送消息已读回执。messageList
里的消息必须在同一个 C2C 或 Group 会话中。message.readReceiptInfo.isPeerRead
属性会更新为 true
,此属性可用于 C2C 已读回执消息状态渲染,调用此接口不会更新消息的 isPeerRead
属性。chat.sendMessageReadReceipt(messageList);
Name | Type | Description |
messageList | Array | 同一群会话的消息列表,最大长度为30。 |
Promise
// 拉取群消息列表let messageList = null;chat.getMessageList({conversationID: 'GROUPtest'}).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表chat.sendMessageReadReceipt(messageList).then(function() {// 发送群消息已读回执成功}).catch(function(imError) {// 发送群消息已读回执失败});});
// 拉取C2C消息列表let messageList = null;chat.getMessageList({conversationID: 'C2Ctest'}).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表chat.sendMessageReadReceipt(messageList).then(function() {// 发送群消息已读回执成功}).catch(function(imError) {// 发送群消息已读回执失败});});
let onMessageReadReceiptReceived = function(event) {// event.data - 存储消息已读回执信息的数组const readReceiptInfoList = event.data;readReceiptInfoList.forEach((item) => {const { groupID, userID, messageID, readCount, unreadCount, isPeerRead, timestamp } = item;// messageID - 消息 ID// userID - C2C 消息接收方// isPeerRead - C2C 消息对端是否已读// timestamp - C2C 消息对端发送已读回执时间,单位:秒// groupID - 群组 ID// readCount - 群消息已读人数// unreadCount - 群消息未读人数const message = chat.findMessage(messageID);if (message) {if (message.conversationType === TencentCloudChat.TYPES.CONV_C2C) {if (message.readReceiptInfo.isPeerRead === true) {// 对端已读}} else if (message.conversationType === TencentCloudChat.TYPES.CONV_GROUP) {if (message.readReceiptInfo.unreadCount === 0) {// 全部已读} else {// message.readReceiptInfo.readCount - 消息最新的已读数// 如果想要查询哪些群成员已读了此消息,请使用 [getGroupMessageReadMemberList] 接口}}}});}chat.on(TencentCloudChat.EVENT.MESSAGE_READ_RECEIPT_RECEIVED, onMessageReadReceiptReceived);
chat.getMessageReadReceiptList(messageList);
Name | Type | Description |
messageList | Array | 同一群会话的消息列表。 |
Promise
// 拉取群消息列表let messageList = null;chat.getMessageList({conversationID: 'GROUPtest'}).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表chat.getMessageReadReceiptList(messageList).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表// 成功后,Message.readReceiptInfo 包含消息的已读回执信息// Message.readReceiptInfo.readCount -// 消息的已读数,如果想要查询哪些群成员已读了此消息,请使用 [getGroupMessageReadMemberList] 接口// Message.readReceiptInfo.unreadCount - 消息的未读数,当为0的时候,表示“全部已读”。}).catch(function(imError) {// 拉取已读回执列表失败});});
// 拉取 C2C 消息列表let messageList = null;chat.getMessageList({conversationID: 'C2Ctest'}).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表chat.getMessageReadReceiptList(messageList).then(function(imResponse) {messageList = imResponse.data.messageList; // 消息列表// 成功后,Message.readReceiptInfo 包含消息的已读回执信息// Message.readReceiptInfo.isPeerRead - 对端是否已发送已读回执}).catch(function(imError) {// 拉取已读回执列表失败});});
chat.getGroupMessageReadMemberList(options);
options
为 Object
类型,包含的属性值如下:名称 | 类型 | 描述 |
message | Message | 消息实例。 |
cursor | String | 分页拉取的游标,第一次拉取传'' |
filter | Number | 指定拉取已读或未读群成员列表。 0 - 拉取已读成员列表 1 - 拉取未读成员列表 |
count | Number | 分页拉取的个数,最大支持 100 个。 |
Promise
// 拉取群消息已读成员列表let promise = chat.getGroupMessageReadMemberList({message,filter: 0,cursor: '', // 第一次拉取传''count: 30,});promise.then(function(imResponse) {const { isCompleted, cursor, messageID, readUserIDList } = imResponse.data;// isCompleted - true,拉取完成;false 未完成// cursor - 当 isCompleted 为 false 的时候用于续拉// messageID - 群消息的 ID// readUserIDList -// 已读的群成员 userID 列表。接入侧可调用 getGroupMemberProfile 接口查询群成员的资料,如群名片、头像、昵称等}).catch(function(imError) {// 拉取群消息已读群成员列表失败});
// 拉取群消息未读成员列表let promise = chat.getGroupMessageReadMemberList({message,filter: 1,cursor: '', // 第一次拉取传''count: 30,});promise.then(function(imResponse) {const { isCompleted, cursor, messageID, readUserIDList } = imResponse.data;// isCompleted - true,拉取完成;false 未完成// cursor - 当 isCompleted 为 false 的时候用于续拉// messageID - 群消息的 ID// unreadUserIDList -// 未读的群成员 userID 列表。接入侧可调用 getGroupMemberProfile 接口查询群成员的资料,如群名片、头像、昵称等}).catch(function(imError) {// 拉取群消息未读群成员列表失败// 10062 - 找不到群消息的已读回执信息});
本页内容是否解决了您的问题?