tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

JavaScript

PDF
聚焦模式
字号
最后更新时间: 2025-03-27 10:46:35

功能描述

搜索云端消息,帮助用户根据关键词快速定位并索引相关消息。通过此接口,用户可以高效地查找特定的消息内容,提升信息获取的速度和准确性。
说明:
云端搜索功能仅对专业版 Plus 和企业版客户开放,购买专业版 Plus 和企业版 后可使用;体验版支持一定额度免费试用,有效期一个月。
云端搜索消息功能 v3.1.0 起支持。
此接口本地限频 2 次/秒。
社群、topic、直播群,不支持搜索云端消息。
搜索全部会话的消息:
如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],您可以在 UI 上展示 【${messageCount} 条相关记录】。如果您想高亮展示匹配到的消息,请参考 指定会话搜索,将接口返回的 messageList 高亮展示。
如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。

搜索云端消息

接口
chat.searchCloudMessages(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name
Type
Description
keywordList
Array | undefined
关键字列表,最多支持 5 个。
说明:
当消息发送者 senderUserIDList 以及消息类型 messageTypeList 均未指定时,关键字列表必须非空;否则,关键字列表可以为空。
keywordListMatchType
String | undefined
关键字列表匹配类型
or:“或”关系搜索(默认)
and:“与”关系搜索
senderUserIDList
Array | undefined
指定 userID 发送的消息,最多支持 5 个。
messageTypeList
Array | undefined
指定搜索的消息类型集合,默认搜索全部类型。
不传入时,表示搜索支持的全部类型消息(TencentCloudChat.TYPES.MSG_FACETencentCloudChat.TYPES.MSG_GRP_TIPTencentCloudChat.TYPES.MSG_GRP_SYS_NOTICE 不支持)。
传值时,取值详见 TencentCloudChat.TYPES
conversationID
String | undefined
搜索“全部会话”还是搜索“指定的会话”,不传入时,表示全部会话,默认:全部会话。
会话 ID 组成方式:
C2C${userID}(单聊)
GROUP${groupID}(群聊)
社群、topic、直播群,不支持搜索云端消息
timePosition
Number | undefined
搜索的起始时间点。默认为 0 即代表从现在开始搜索,单位:秒。
timePeriod
Number | undefined
从起始时间点开始的过去时间范围,单位秒。默认为 0 即代表不限制时间范围,传 24 * 60 * 60 代表过去一天。
cursor
String | undefined
每次云端搜索的起始位置。第一次搜索时不要传入 cursor,继续搜索时填入上次调用 searchCloudMessages 接口返回的 cursor 的值。
说明:
全量搜索时,cursor 的有效期为 2 分钟。
返回值
Promise
Name
Type
Description
totalCount
Number
如果搜索指定会话,返回满足搜索条件的消息总数。
如果搜索全部会话,返回满足搜索条件的消息所在的所有会话总数量。
searchResultList
Array
满足搜索条件的消息根据会话 ID 分组。
cursor
String
调用搜索接口续拉时需要填的游标。
其中 searchResultList 是个列表,内含搜索结果对象,参数说明如下:
Name
Type
Description
conversationID
String
会话 ID。
messageCount
Number
当前会话一共搜索到了多少条符合要求的消息。
messageList
Array
当前会话中所有满足搜索条件的消息列表。
说明:
1. 如果搜索指定会话,messageList 是本会话中所有满足搜索条件的消息列表。
2. 如果搜索全部会话,messageList 中装载的消息条数会有如下两种可能:
如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],您可以在 UI 上展示 【${messageCount} 条相关记录】。如果您想高亮展示匹配到的消息,请参考 指定会话搜索,将接口返回的 messageList 高亮展示。
如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。

搜索全部会话的消息

不指定 conversationID ,指定关键字搜索。
示例
// 全量搜索,指定关键字
// - 搜索消息里出现 ‘你好’ 或 ‘在哪里’
let promise = chat.searchCloudMessages({
keywordList: ['你好', '在哪里']
});
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); // 搜索消息失败
});

搜索指定会话的消息

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

搜索自定义消息

1. 使用接口 createCustomMessage 来创建自定义消息时,需要把搜索的文本放到 description 参数中。支持关键词与 description 进行匹配。
2. 指定 messageTypeListTencentCloudChat.TYPES.MSG_CUSTOM 做分类搜索,此时会搜索出所有自定义消息。
示例
// 全量搜索,指定关键字和消息类型搜索
// - 搜索消息类型为 ‘自定义消息’,且消息的 description 里出现了 ‘你好’ 或 ‘在哪里’ 的消息
let promise = chat.searchCloudMessages({
keywordList: ['你好', '在哪里'],
messageTypeList: [TencentCloudChat.TYPES.MSG_CUSTOM],
});
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); // 搜索消息失败
});

搜索富媒体消息

富媒体消息包含文件、图片、语音、视频消息。
1. 对于文件消息,界面通常显示文件名。如果调用 createFileMessage 创建文件消息时传入 fileName 参数,fileName 会作为文件消息被搜索的内容,与搜索关键词进行匹配。
2. 对于图片、语音、视频消息,并没有类似 fileName 这种名称,界面通常显示缩略图或时长,此时指定 keywordList 搜索无效。
3. 可以指定 messageTypeListTencentCloudChat.TYPES.MSG_IMAGE/TencentCloudChat.TYPES.MSG_AUDIO/TencentCloudChat.TYPES.MSG_VIDEO做分类搜索,此时会搜索出所有指定类型的消息。
示例
// 全量搜索,只指定消息发送者和消息类型搜索(当指定发送者和消息类型时,关键字列表可以为空)
// - 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息类型为 ‘图片消息’ 、‘语音消息’ 或 ‘文件消息’ 的消息
let promise = chat.searchCloudMessages({
senderUserIDList: ['user1', 'user2'],
messageTypeList: [
TencentCloudChat.TYPES.MSG_IMAGE,
TencentCloudChat.TYPES.MSG_AUDIO,
TencentCloudChat.TYPES.MSG_FILE
],
});
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); // 搜索消息失败
});


搜索地理位置消息

1. 支持对 latitudelongitudedescription与关键词进行匹配。
2. 指定 messageTypeListTencentCloudChat.TYPES.MSG_LOCATION 做分类搜索,此时会搜索出所有地理位置消息。
示例
// 全量搜索,指定关键字和消息类型搜索
// - 搜索消息类型为 ‘地理位置’,且消息的 latitude、longitude、description 里出现了 ‘你好’ 或 ‘在哪里’ 的消息
let promise = chat.searchCloudMessages({
keywordList: ['你好', '在哪里'],
messageTypeList: [TencentCloudChat.TYPES.MSG_LOCATION],
});
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); // 搜索消息失败
});

搜索合并消息

1. 使用接口 createMergerMessage 来创建合并消息时,需要把需要被搜索的文本放到 titleabstractList 参数中,支持 titleabstractList 与关键词进行匹配。
2. 指定 messageTypeListTencentCloudChat.TYPES.MSG_MERGER 做分类搜索,此时会搜索出所有合并消息。
示例
// 全量搜索,指定关键字和消息类型搜索
// - 搜索消息类型为 ‘合并消息’,且消息的 title 或 abstractList 里出现了 ‘你好’ 或 ‘在哪里’ 的消息
let promise = chat.searchCloudMessages({
keywordList: ['你好', '在哪里'],
messageTypeList: [TencentCloudChat.TYPES.MSG_MERGER],
});
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); // 搜索消息失败
});


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈