ITUISearchService

ITUISearchService

Methods

searchCloudMessages(options) → {Promise.<any>}

搜索云端消息

【v2.5.1起支持】
注意1:此功能当前处于限免阶段,您可通过即时通信 IM 功能及购买咨询交流群联系我们为您开通体验完整功能。
注意2:此接口本地限频 2 次/秒。
注意3:搜索【全部会话】的消息,如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],您可以在 UI 上展示 【${messageCount} 条相关记录】。如果您想高亮展示匹配到的消息,请参考【指定搜索】,将接口返回的 messageList 高亮展示。
注意4:搜索【全部会话】的消息,如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。
注意5:社群、topic、直播群,不支持搜索云端消息。

Examples
// 全量搜索,指定关键字
// - 搜索消息里出现 ‘你好’
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
});
// 全量搜索,指定关键字列表和消息发送者搜索
// - 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息里出现了 ‘你好’ 的消息
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
   senderUserIDList: ['user1', 'user2'],
});
// 全量搜索,指定关键字和消息类型搜索
// - 搜索消息类型为 ‘文本消息’ 或 ‘自定义消息’,且消息里出现了 ‘你好’的消息
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 全量搜索,搜索所有图片消息(当指定发送者或消息类型时,关键字列表可以为空)
let promise = TUISearchService.searchCloudMessages({
   messageTypeList: [TUIChatEngine.TYPES.MSG_IMAGE],
});
// 全量搜索,只指定消息发送者和消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)
// - 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息类型为 ‘文本消息’ 或 ‘自定义消息’ 的消息
let promise = TUISearchService.searchCloudMessages({
   senderUserIDList: ['user1', 'user2'],
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 全量搜索,指定关键字和时间(过去一天)搜索
// - 搜索过去一天,消息里出现了 ‘你好’ 或 ‘在哪里’的消息
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
   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 = TUISearchService.searchCloudMessages({
   keyword: '你好',
   conversationID: 'GROUPPublic001'
});
// 指定会话,指定消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)
// - 在 'GROUPPublic001' 会话中,搜索图片消息。
let promise = TUISearchService.searchCloudMessages({
   conversationID: 'GROUPPublic001',
   messageTypeList: [TUIChatEngine.TYPES.MSG_IMAGE],
});
// 指定会话,指定关键字和消息类型搜索
// - 搜索在 'GROUPPublic001' 会话中,消息里出现 ‘你好’,且消息类型为 ‘文本消息’ 或 ’自定义消息’ 的消息。
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
   conversationID: 'GROUPPublic001'
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 指定会话,指定关键字和时间(过去一天)搜索
// - 搜索过去一天,在 'GROUPPublic001' 会话中,消息里出现 ‘你好’的消息。
let promise = TUISearchService.searchCloudMessages({
   keyword: '你好',
   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); // 搜索消息失败
});
Parameters:
Name Type Description
options SearchCloudMessagesParams

需要搜索的消息的参数

Returns:
Type
Promise.<any>

searchCloudUsers(options) → {Promise.<any>}

搜索云端用户

【v2.5.1起支持】
搜索范围:根据关键词对所有用户的昵称(nick) 进行模糊搜索匹配, 对所有用户的 userID 进行精准搜索匹配。
注意1:此功能属于增值服务,需要您购买云端搜索插件,请点击 购买
注意2:获取的用户列表中的资料是不完整的(仅包括头像 avatar、昵称 nick、用户账号 userID、性别 gender、生日 birthday、个性签名 selfSignature 等,能够满足用户搜索结果列表的渲染需求,不包含自定义字段),若要查询详细用户资料,可参考:getUserProfile
注意3:云端限频 2次/秒, 本地接口调用默认限制 20次/5秒。
注意4:单次最大搜索数结果量为 100 条。

Examples
// 搜索指定关键字
// - 搜索用户里出现 'test' 的用户
let promise = TUISearchService.searchCloudUsers({
   keyword: 'test',
});
// 搜索指定关键字列表和用户性别搜索
// - 搜索用户里出现 'test',且用户性别为 '女性' 的用户
let promise = TUISearchService.searchCloudUsers({
   keyword: 'test',
   gender: TUIChatEngine.TYPES.GENDER.FEMALE,
});
// 搜索指定关键字列表和出生时间范围搜索
// - 搜索用户里出现 'test' ,且用户出生时间在 19500101 至 20240101 之间的用户
// - 注意,当同时设置 miniBirthday 和 maxBirthday 时,miniBirthday 必须小于 maxBirthday
let promise = TUISearchService.searchCloudUsers({
   keyword: 'test',
   miniBirthday: 19500101,
   maxBirthday: 20240101,
});
// 搜索指定关键字列表和出生时间范围搜索
// - 搜索用户里出现 'test',且用户出生时间在 19500101 之后的用户
let promise = TUISearchService.searchCloudUsers({
   keyword: 'test',
   miniBirthday: 19500101,
});
// 搜索指定关键字列表和出生时间范围搜索
// - 搜索用户里出现 'test' ,且用户出生时间在 20240101 之前的用户
let promise = TUISearchService.searchCloudUsers({
   keyword: 'test',
   maxBirthday: 20240101,
});

promise.then(function(imResponse) {
 // 搜索用户成功
   const { totalCount, cursor, searchResultList } = imResponse.data;
   console.log(totalCount); // 满足搜索条件的用户总数量
   console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成
   console.log(searchResultList); // 满足搜索条件的用户列表,分页返回分组结果,每页最大返回 100, count 设定
   for (let i = 0; i < searchResultList.length; i++) {
      const profileItem = searchResultList[i];
      const { userID, nick, gender, avatar } = profileItem;
      console.log(userID); // 用户 ID
      console.log(nick); // 用户昵称
      console.log(gender); // 用户性别
      console.log(avatar); // 用户头像
    }
}).catch(function(imError) {
   console.error(imError); // 搜索用户失败
});
Parameters:
Name Type Description
options SearchCloudUsersParams

需要搜索的用户的参数

Returns:
Type
Promise.<any>

searchCloudGroups(options) → {Promise.<any>}

获取云端群组列表

【v2.5.1起支持】
搜索范围:根据关键词对所有群的群名称 (name) 进行模糊匹配搜索, 对所有群组的 groupID 进行精准搜索匹配。
注意1:此功能属于增值服务,需要您购买云端搜索插件,请点击 购买
注意2:该接口获取的群列表中的资料是不完整的(仅包括群组ID groupID、群组头像 avatar、群组名称 name、群组类型 type、群组人数 memberCount、群组简介 introduction、群主 ownerID 等,能够满足群搜索结果列表的渲染需求),若要查询详细群资料,可参考:getGroupProfile
注意3:云端限频 2次/秒, 本地接口调用默认限制 20次/5秒。
注意4:不支持直播群(TUIChatEngine.TYPES.GRP_AVCHATROOM)类型的搜索。
注意5:单次最大搜索数结果量为 100。

Examples
// 搜索指定关键字
// - 搜索群组里出现 'test' 的群组
let promise = TUISearchService.searchCloudGroups({
   keyword: 'test',
});
// 搜索指定关键字列表和群组类型
// - 搜索用户里出现 'test',且群组类型为 '陌生人社交群(TUIChatEngine.TYPES.GRP_PUBLIC)' 或 '好友工作群(TUIChatEngine.TYPES.GRP_WORK)' 的群组
let promise = TUISearchService.searchCloudGroups({
   keyword: 'test',
   groupTypeList: [TUIChatEngine.TYPES.GRP_PUBLIC, TUIChatEngine.TYPES.GRP_WORK],
});

promise.then(function(imResponse) {
 // 搜索群组成功
   const { totalCount, cursor, searchResultList } = imResponse.data;
   console.log(totalCount); // 满足搜索条件的群组总数量
   console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成
   console.log(searchResultList); // 满足搜索条件的群组列表,分页返回分组结果,每页最大返回 100 条,根据传入 count 设定
   for (let i = 0; i < searchResultList.length; i++) {
      const groupItem = searchResultList[i];
      const { groupID, name, type, avatar, memberCount, introduction, ownerID } = groupItem;
      console.log(groupID); // 群 ID
      console.log(name); // 群名称
      console.log(type); // 群类型
      console.log(avatar); // 群头像
      console.log(memberCount); // 群组当前成员数量
      console.log(introduction); // 群简介
      console.log(ownerID); // 群主 userID
    }
}).catch(function(imError) {
   console.error(imError); // 搜索用户失败
});
Parameters:
Name Type Description
options SearchCloudGroupsParams

需要搜索的群组的参数

Returns:
Type
Promise.<any>