即时通信 IM Web&小程序&uni-app(查询消息)

接入侧可以先从 message 结构体的 ID 字段拿到 messageID ,调用 findMessages 查询本地消息。如果你想搜索全量的云端消息,请使用 searchCloudMessages。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、findMessage

注意:说明:

注意:该接口查询的是通过 getMessageList 存入本地的消息。

接口

chat.findMessage(messageID);

参数

参数 类型 说明
messageID String 消息 ID。

返回值

Message 或 null

示例

let message = chat.findMessage('144115217363870632-1647417469-77069006');if (message) { // 读取 message 相关属性,如已读回执信息 readReceiptInfo}

二、searchCloudMessages

注意:说明:

注意:1. 此功能属于增值服务,需要你购买云端搜索插件,请点击 购买。

注意:2. 此接口本地限频 2 次/秒。

注意:3. 搜索【全部会话】的消息,如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],你可以在 UI 上展示 【${messageCount} 条相关记录】。如果你想高亮展示匹配到的消息,请参考【指定搜索】,将接口返回的 messageList 高亮展示。

注意:4. 搜索【全部会话】的消息,如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。

注意:5. 社群、topic、直播群,不支持搜索云端消息。

接口

chat.searchCloudMessages(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 说明
keywordList Array.<String> 关键字列表,最多支持 5 个。当消息发送者以及消息类型均未指定时,关键字列表必须非空;否则,关键字列表可以为空。
keywordListMatchType String 关键字列表匹配类型:or:“或”关系搜索(默认);and:“与”关系搜索。
senderUserIDList Array.<String> 指定 userID 发送的消息,最多支持 5 个。
messageTypeList Array.<String> 指定搜索的消息类型集合,默认搜索全部类型。不传入时,表示搜索支持的全部类型消息(TencentCloudChat.TYPES.MSG_FACE、TencentCloudChat.TYPES.MSG_GRP_TIP 和 TencentCloudChat.TYPES.MSG_GRP_SYS_NOTICE 不支持);传值时,取值详见 TencentCloudChat.TYPES。
conversationID String 搜索“全部会话”还是搜索“指定的会话”,不传入时,表示全部会话,默认:全部会话。会话 ID 组成方式:C2C${userID}(单聊);GROUP${groupID}(群聊);社群、topic、直播群,不支持搜索云端消息。
timePosition Number 搜索的起始时间点。默认为 0 即代表从现在开始搜索。单位:秒。
timePeriod Number 从起始时间点开始的过去时间范围,单位秒。默认为 0 即代表不限制时间范围,传 24 * 60 * 60 代表过去一天。
cursor String 每次云端搜索的起始位置。第一次搜索时不要传入 cursor,继续搜索时填入上次调用 searchCloudMessages 接口返回的 cursor 的值。注意:全量搜索时,cursor 的有效期为 2 分钟。

返回值

Promise

示例

// 全量搜索,指定关键字// – 搜索消息里出现 ‘你好’ 或 ‘在哪里’let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'],});

// 全量搜索,指定关键字和匹配类型搜索// – 搜索消息里出现了 ‘你好’ 与 ‘在哪里’ 的消息let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], keywordListMatchType: 'and',});

// 全量搜索,指定关键字列表和消息发送者搜索// – 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息里出现了 ‘你好’ 或 ‘在哪里’ 的消息let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], senderUserIDList: ['user1', 'user2'],});

// 全量搜索,指定关键字和消息类型搜索// – 搜索消息类型为 ‘文本消息’ 或 ‘自定义消息’,且消息里出现了 ‘你好’ 或 ‘在哪里’ 的消息let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], messageTypeList: [TencentCloudChat.TYPES.MSG_TEXT, TencentCloudChat.TYPES.MSG_CUSTOM],});

// 全量搜索,搜索所有图片消息(当指定发送者或消息类型时,关键字列表可以为空)let promise = chat.searchCloudMessages({ messageTypeList: [TencentCloudChat.TYPES.MSG_IMAGE],});

// 全量搜索,只指定消息发送者和消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)// – 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息类型为 ‘文本消息’ 或 ‘自定义消息’ 的消息let promise = chat.searchCloudMessages({ senderUserIDList: ['user1', 'user2'], messageTypeList: [TencentCloudChat.TYPES.MSG_TEXT, TencentCloudChat.TYPES.MSG_CUSTOM],});

// 全量搜索,指定关键字和时间(过去一天)搜索// – 搜索过去一天,消息里出现了 ‘你好’ 或 ‘在哪里’的消息let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], timePosition: Number((new Date().getTime()/1000).toFixed(0)), timePeriod: 24 * 60 * 60,});promise.then(function(imResponse) { // 搜索消息成功 const { totalCount, cursor, searchResultList } = imResponse.data; console.log(totalCount); // 满足搜索条件的消息所在的所有会话总数量 console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成 console.log(searchResultList); // 满足搜索条件的消息根据会话 ID 分组,分页返回分组结果 for (let i = 0; i < searchResultList.length; i++) { const searchResultItem = searchResultList[i]; const { conversationID, messageCount, messageList } = searchResultItem; console.log(conversationID); // 会话 ID console.log(messageCount); // 当前会话一共搜索到了多少条符合要求的消息 // 本次搜索【全部会话】,那么 messageList 中装载的消息条数会有如下两种可能: // – 如果某个会话中匹配到的消息条数 > 1,则 messageList 为空,你可以在 UI 上显示“ messageCount 条相关记录”。 // – 如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息,你可以在 UI 上显示之,并高亮匹配关键词。 console.log(messageList); }}).catch(function(imError) { console.error(imError); // 搜索消息失败});

// 指定会话,指定关键字搜索// – 搜索在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’ 的消息。let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], conversationID: 'GROUPPublic001'});

// 指定会话,指定消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)// – 在 'GROUPPublic001' 会话中,搜索图片消息。let promise = chat.searchCloudMessages({ conversationID: 'GROUPPublic001', messageTypeList: [TencentCloudChat.TYPES.MSG_IMAGE],});

// 指定会话,指定关键字和消息类型搜索// – 搜索在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’,且消息类型为 ‘文本消息’ 或 ’自定义消息’ 的消息。let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], conversationID: 'GROUPPublic001', messageTypeList: [TencentCloudChat.TYPES.MSG_TEXT, TencentCloudChat.TYPES.MSG_CUSTOM],});

// 指定会话,指定关键字和时间(过去一天)搜索// – 搜索过去一天,在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’ 的消息。let promise = chat.searchCloudMessages({ keywordList: ['你好', '在哪里'], conversationID: 'GROUPPublic001', timePosition: Number((new Date().getTime()/1000).toFixed(0)), timePeriod: 24 * 60 * 60,});promise.then(function(imResponse) { // 搜索消息成功 const { totalCount, cursor, searchResultList } = imResponse.data; console.log(totalCount); // 满足搜索条件的消息总数量 console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成 console.log(searchResultList); // 当前会话搜索的消息结果 const { conversationID, messageCount, messageList } = searchResultList[0]; console.log(conversationID); // 会话ID console.log(messageCount); // 当前会话一共搜索到了多少条符合要求的消息 console.log(messageList); // 本会话中所有满足搜索条件的消息列表}).catch(function(imError); { console.error(imError); // 搜索消息失败});

赞 (0)
上一篇 4天前
下一篇 4天前