Mark
功能描述
在某些场景下,您可能需要对会话进行标记,例如 "会话标星"、"会话折叠"、"会话隐藏"、“会话标记未读”等,您可以调用以下接口实现。
说明:
效果展示
设置会话自定义数据
接口
chat.setConversationCustomData(options);
参数
参数
options
为 Object
类型,包含的属性值如下:参数 | 类型 | 说明 |
conversationIDList | String | 会话 ID 列表 |
customData | String | 自定义数据,长度最大支持256字节 |
返回值
Promise
示例
// 给 C2C 会话和群会话设置会话自定义数据let promise = chat.setConversationCustomData({conversationIDList: ['GROUPtest', 'C2Cexample'],customData: 'your custom data'});promise.then(function(imResponse) {// 设置会话自定义数据成功const { successConversationIDList, failureConversationIDList } = imResponse.data;// successConversationIDList - 设置成功的会话 ID 列表// 获取会话列表const conversationList = chat.getConversationList(successConversationIDList);// failureConversationIDList - 设置失败的会话 ID 列表failureConversationIDList.forEach((item) => {const { conversationID, code, message } = item;});}).catch(function(imError) {console.warn('setConversationCustomData error:', imError);});
// customData 传入空字符串,表示清空会话自定义数据let promise = chat.setConversationCustomData({conversationIDList: ['GROUPtest', 'C2Cexample'],customData: ''});promise.then(function(imResponse) {// 清空会话自定义数据成功const { successConversationIDList, failureConversationIDList } = imResponse.data;// successConversationIDList - 清空成功的会话 ID 列表// 获取会话列表const conversationList = chat.getConversationList(successConversationIDList);// failureConversationIDList - 清空失败的会话 ID 列表failureConversationIDList.forEach((item) => {const { conversationID, code, message } = item;});}).catch(function(imError) {console.warn('setConversationCustomData error:', imError);});
会话标记
说明:
1. 当用户标记了会话,SDK 只是简单记录了会话的标记值,并不会改变会话的底层逻辑,比如标记会话为 TencentCloudChat.TYPES.CONV_MARK_TYPE_UNREAD,会话的底层的未读数并不会发生改变。
2. SDK 提供了四个默认标记("会话标星"、"会话折叠"、"会话隐藏"、“会话标记未读”),如果已有标记不能满足您的需求,您可以自定义扩展标记,扩展标记需要满足以下两个条件:
扩展标记值不能和已有的标记值冲突。
自定义标记值必须是 Math.power(2, n)(32 <= n < 64,即 n 必须大于等于 32 并且小于 64),比如自定义 Math.power(2, 32) 标记值表示 "iPhone 在线"。
接口
chat.markConversation(options);
参数
参数
options
为 Object
类型,包含的属性值如下:参数 | 类型 | 说明 |
conversationIDList | String | 会话 ID 列表 |
markType | String | 会话标记类型 |
enableMark | Boolean | true 设置标记 false 取消标记 |
返回值
Promise
示例
// 会话标星let promise = chat.markConversation({conversationIDList: ['GROUPtest', 'C2Cexample'],markType: TencentCloudChat.TYPES.CONV_MARK_TYPE_STAR,enableMark: true});promise.then(function(imResponse) {// 会话标星成功const { successConversationIDList, failureConversationIDList } = imResponse.data;// successConversationIDList - 标星成功的会话 ID 列表// 获取会话列表const conversationList = TencentCloudChat.getConversationList(successConversationIDList);// failureConversationIDList - 标星失败的会话 ID 列表failureConversationIDList.forEach((item) => {const { conversationID, code, message } = item;});}).catch(function(imError) {console.warn('markConversation error:', imError);});
监听会话标记变更通知
会话被标记或者取消标记后,会话 Conversation 的
markList
字段会发生变更,您可以通过事件 TencentCloud.EVENT.CONVERSATION_LIST_UPDATED 监听会话变更通知。示例
let onConversationListUpdated = function(event) {console.log(event.data); // 包含 Conversation 实例的数组};tim.on(TencentCloudChat.EVENT.CONVERSATION_LIST_UPDATED, onConversationListUpdated);
拉取指定标记会话
示例
// 获取所有的“标星”会话let promise = chat.getConversationList({ markType: TencentCloudChat.TYPES.CONV_MARK_TYPE_STAR });promise.then(function(imResponse) {const conversationList = imResponse.data.conversationList; // 会话列表});
// 获取所有折叠的 C2C 会话let promise = chat.getConversationList({markType: TencentCloudChat.TYPES.CONV_MARK_TYPE_FOLD,type: TencentCloudChat.TYPES.CONV_C2C});promise.then(function(imResponse) {const conversationList = imResponse.data.conversationList; // 会话列表});