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
contentfield is searchable. -
For file messages, only the
namefield is searchable. -
For custom messages, the searchable fields are determined by the
searchPropsparameter inregisterMessageType.
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