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