tencent cloud

文档反馈

最后更新时间:2023-08-03 17:13:05

    功能描述

    搜索云端消息,提升 IM SDK 使用体验,可以帮助用户从纷繁复杂的信息中直接找到预期内容,快捷方便;也可以作为运营工具,增加相关内容的引导,简洁高效。
    注意:
    1. 搜索云端消息功能 v3.1.0 起支持。
    2. 此功能当前处于限免阶段,您可通过即时通信 IM 功能及购买咨询交流群联系我们为您开通体验完整功能。
    3. 此接口本地限频 2 次/秒。
    4. 搜索【全部会话】的消息,如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],您可以在 UI 上展示 【${messageCount} 条相关记录】。如果您想高亮展示匹配到的消息,请参考 指定搜索,将接口返回的 messageList 高亮展示。
    5. 搜索【全部会话】的消息,如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。
    6. 社群、topic、直播群,不支持搜索云端消息。

    搜索云端消息

    接口
    chat.searchCloudMessages(options);
    参数
    参数 options 为 Object 类型,包含的属性值如下:
    Name
    Type
    Description
    keywordList
    Array | undefined
    关键字列表,最多支持 5 个。
    注意:
    当消息发送者以及消息类型均未指定时,关键字列表必须非空;否则,关键字列表可以为空。
    
    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); // 当前会话搜索的消息结果
    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_FILE做分类搜索,此时会搜索出所有指定类型的消息。
    示例
    // 全量搜索,只指定消息发送者和消息类型搜索(当指定发送者和消息类型时,关键字列表可以为空)
    // - 搜索消息发送者为 ‘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); // 搜索消息失败
    });
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持