Skip to main content

Search Messages (Electron)

tip

This document is only applicable to the Electron Solution and should be used exclusively with the Electron modules ([@rongcloud/electron] and [@rongcloud/electron-renderer]).

This document explains how to use the SDK-provided interfaces to search for messages stored locally on the client.

Search Local Messages by Keyword​

tip

This interface has been supported since SDK version 5.4.0.

Call electronExtension.searchMessages to search for local messages in a specified conversation using keywords.

  • For text messages, only the content field is searchable.

  • For file messages, only the name field is searchable.

  • For custom messages, the searchable fields are determined by the searchProps parameter in registerMessageType.

Interface​

RongIMLib.electronExtension.searchMessages(conversation, keyword, startTime, count)


#### Parameters

| Parameter | Type | Required | Description |
|:--- |:--- |:--- |:--- |
| conversation | [IConversationOption] | Yes | Target conversation |
| keyword | string | Yes | Search keyword |
| startTime | number | Yes | Search for messages before this timestamp |
| count | number | Yes | Number of messages to return |
| messageTypes | string[] | No | Specifies the message types to search (supported since version 5.9.8) |


#### Example Code

```js
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: "<Target User ID>",
channelId: ""
}
const keyword = 'Search keyword'
const startTime = Date.now()
const count = 10

RongIMLib.electronExtension.searchMessages(conversation, keyword, startTime, count).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
}).catch(error => {
console.log(error)
})


## Search Local Messages Within a Specified Time Range \{#searchMessageInTimeRange}

:::tip
This interface has been supported since SDK version 5.4.0.
:::

Call [electronExtension.searchMessageInTimeRange](https://doc.rongcloud.cn/apidoc/im-web/latest/zh_CN/modules/electronExtension.html#searchMessageInTimeRange) to search for messages within a specified time range across all channels of a given conversation.


#### Interface

```js
RongIMLib.electronExtension.searchMessageInTimeRange(conversation, option)


#### Parameters

| Parameter | Type | Required | Description |
|:--- |:--- |:--- |:--- |
| conversation | [IConversationOption] | Yes | Target conversation |
| option | [ISearchMessageInTimeRangeOption] | Yes | Search parameters |


#### Example Code

```js
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: "<Target User ID>"
}
const option = {
keyword: 'hello',
startTime: 0,
endTime: 1632728573423,
offset: 0,
limit: 5
}
RongIMLib.electronExtension.searchMessageInTimeRange(conversation, option).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code)
}
}).catch(error => {
console.log(error)
})


## Search Local Messages by User ID \{#searchMessagesByUser}

:::tip
This interface has been supported since SDK version 5.7.10.
:::

Call [electronExtension.searchMessagesByUser](https://doc.rongcloud.cn/apidoc/im-web/latest/zh_CN/modules/electronExtension.html#searchMessagesByUser) to search for historical messages sent by a specific user across all channels of a specified conversation.


#### Interface

```js
RongIMLib.electronExtension.searchMessagesByUser(conversation, userId, startTime, count)


#### Parameters

| Parameter | Type | Required | Description |
|:--- |:--- |:--- |:--- |
| conversation | [IConversationOption] | Yes | Target conversation |
| userId | string | Yes | User ID |
| startTime | number | Yes | Search for messages before this timestamp |
| count | number | Yes | Number of messages to return |


#### Example Code

```js
const conversation = {
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: "<Conversation ID>",
channelId: ""
}
const userId = 'User ID'
const startTime = Date.now()
const count = 10

RongIMLib.electronExtension.searchMessagesByUser(conversation, userId, startTime, count).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
}).catch(error => {
console.log(error)
})
<!-- links -->
[@rongcloud/electron]: https://www.npmjs.com/package/@rongcloud/electron
[@rongcloud/electron-renderer]: https://www.npmjs.com/package/@rongcloud/electron-renderer

[IConversationOption]: https://doc.rongcloud.cn/apidoc/im-web/latest/zh_CN/modules.html#IConversationOption
[ISearchMessageInTimeRangeOption]: https://doc.rongcloud.cn/apidoc/im-web/latest/zh_CN/interfaces/ISearchMessageInTimeRangeOption.html