Поиск по истории уведомлений im.notify.history.search
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Scope:
imКто может выполнять метод: любой пользователь
Метод im.notify.history.search ищет уведомления текущего пользователя по тексту, типу, дате и автору.
Параметры метода
Обязательные параметры отмечены *
|
Название |
Описание |
|
SEARCH_TEXT |
Текст для поиска в тексте уведомления. Регистр не учитывается. Если других фильтров нет, длина без учета пробелов по краям — от |
|
SEARCH_TYPE |
Тип уведомления в формате Не учитывается, если передан |
|
SEARCH_TYPES |
Массив типов уведомлений, например Если в массиве один элемент, допустим формат |
|
SEARCH_DATE |
Дата и время в формате RFC 3339, например Не учитывается, если переданы |
|
SEARCH_DATE_FROM |
Начало периода в формате RFC 3339. Передавайте вместе с Если передать только |
|
SEARCH_DATE_TO |
Конец периода в формате RFC 3339. Передавайте вместе с |
|
SEARCH_AUTHORS |
Массив идентификаторов авторов уведомлений, например Получить идентификаторы пользователей можно методом user.get |
|
GROUP_TAG |
Группа уведомлений для дополнительной фильтрации. Допустимые значения:
Работает только вместе с другими фильтрами |
|
LAST_ID |
Идентификатор последнего уведомления на предыдущей странице — поле Для первой страницы не передавайте. Значение должно состоять только из цифр, иначе метод вернет ошибку |
|
LIMIT |
Количество уведомлений на странице. По умолчанию — Не передавайте |
|
CONVERT_TEXT |
Метод принимает параметр, но не учитывает его |
Передайте хотя бы один фильтр: SEARCH_TEXT длиной от 3 символов, SEARCH_TYPE, SEARCH_TYPES, SEARCH_DATE, SEARCH_AUTHORS или пару SEARCH_DATE_FROM и SEARCH_DATE_TO. Иначе метод вернет ошибку SEARCH_TEXT_ERROR. Несколько фильтров объединяются условием И.
Как получить все результаты поиска
Метод сортирует уведомления по убыванию даты создания, затем по убыванию id.
- Запросите первую страницу без
LAST_ID. В ответе будет полеtotal_results— общее количество найденных уведомлений - Для следующей страницы передайте те же фильтры и
LAST_ID=idпоследнего элемента массиваnotifications. На этих страницах поляtotal_resultsнет - Повторяйте шаг 2, пока метод не вернет меньше уведомлений, чем
LIMIT
Примеры кода
Как использовать примеры в документации
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"SEARCH_TEXT":"счет","SEARCH_TYPE":"rest|rest_notify","SEARCH_DATE_FROM":"2026-11-01T00:00:00+03:00","SEARCH_DATE_TO":"2026-11-10T00:00:00+03:00","LIMIT":20}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/im.notify.history.search
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"SEARCH_TEXT":"счет","SEARCH_TYPE":"rest|rest_notify","SEARCH_DATE_FROM":"2026-11-01T00:00:00+03:00","SEARCH_DATE_TO":"2026-11-10T00:00:00+03:00","LIMIT":20,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/im.notify.history.search
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
// total_results is returned only on the first page (without LAST_ID)
type NotifyHistorySearchResult = {
chat_id: number
notifications: Array<{
id: number
chat_id: number
author_id: number
date: ISODate
notify_type: number
notify_module: string
notify_event: string
notify_tag: string
notify_sub_tag: string
notify_title: string
setting_name: string
text: string
params: object | null
notify_read: 'Y' | 'N'
notify_buttons?: string
}>
users: Array<{
id: number
active: boolean
name: string
first_name: string
last_name: string
work_position: string | null
color: string
avatar: string
avatar_hr: string
gender: 'M' | 'F'
birthday: string
extranet: boolean
network: boolean
bot: boolean
connector: boolean
external_auth_id: string
internal_account: boolean
intranet_user: boolean
status: string
idle: false
last_activity_date: ISODate | false
mobile_last_date: false
desktop_last_date: false
absent: ISODate | false
departments: number[]
phones: Record<string, string> | false
bot_data: object | null
type: string
website: string
email: string
}>
total_results?: number
}
try {
const response = await $b24.actions.v2.call.make<NotifyHistorySearchResult>({
method: 'im.notify.history.search',
params: {
SEARCH_TEXT: 'счет',
SEARCH_TYPE: 'rest|rest_notify',
SEARCH_DATE_FROM: '2026-11-01T00:00:00+03:00',
SEARCH_DATE_TO: '2026-11-10T00:00:00+03:00',
LIMIT: 20,
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Found:', result.total_results, 'On page:', result.notifications.length)
// Pass the id of the last notification as LAST_ID to get the next page
const last = result.notifications.at(-1)
if (last && result.notifications.length === 20) {
console.info('Next page LAST_ID:', last.id)
}
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function searchNotifyHistory() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'im.notify.history.search',
params: {
SEARCH_TEXT: 'счет',
SEARCH_TYPE: 'rest|rest_notify',
SEARCH_DATE_FROM: '2026-11-01T00:00:00+03:00',
SEARCH_DATE_TO: '2026-11-10T00:00:00+03:00',
LIMIT: 20,
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Found:', result.total_results, 'On page:', result.notifications.length)
// Pass the id of the last notification as LAST_ID to get the next page
const last = result.notifications.at(-1)
if (last && result.notifications.length === 20) {
console.info('Next page LAST_ID:', last.id)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', searchNotifyHistory)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.im.notify.history.search(
search_text="счет",
search_type="rest|rest_notify",
search_date_from="2026-11-01T00:00:00+03:00",
search_date_to="2026-11-10T00:00:00+03:00",
limit=20,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service->core->call(
'im.notify.history.search',
[
'SEARCH_TEXT' => 'счет',
'SEARCH_TYPE' => 'rest|rest_notify',
'SEARCH_DATE_FROM' => '2026-11-01T00:00:00+03:00',
'SEARCH_DATE_TO' => '2026-11-10T00:00:00+03:00',
'LIMIT' => 20,
]
);
$result = $response->getResponseData()->getResult();
print_r($result);
} catch (Throwable $exception) {
echo $exception->getMessage();
}
BX24.callMethod(
'im.notify.history.search',
{
SEARCH_TEXT: 'счет',
SEARCH_TYPE: 'rest|rest_notify',
SEARCH_DATE_FROM: '2026-11-01T00:00:00+03:00',
SEARCH_DATE_TO: '2026-11-10T00:00:00+03:00',
LIMIT: 20,
},
function(result) {
if (result.error()) {
console.error(result.error().ex);
} else {
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'im.notify.history.search',
[
'SEARCH_TEXT' => 'счет',
'SEARCH_TYPE' => 'rest|rest_notify',
'SEARCH_DATE_FROM' => '2026-11-01T00:00:00+03:00',
'SEARCH_DATE_TO' => '2026-11-10T00:00:00+03:00',
'LIMIT' => 20,
]
);
if (!empty($result['error'])) {
echo 'Error: ' . $result['error_description'];
} else {
var_dump($result['result']);
}
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "im.notify.history.search", b24.Params{
"SEARCH_TEXT": "счет",
"SEARCH_TYPE": "rest|rest_notify",
"SEARCH_DATE_FROM": "2026-11-01T00:00:00+03:00",
"SEARCH_DATE_TO": "2026-11-10T00:00:00+03:00",
"LIMIT": 20,
}, b24.WithIdempotent())
if err != nil {
return fmt.Errorf("im.notify.history.search: %w", err)
}
var item struct {
ChatID int `json:"chat_id"`
TotalResults int `json:"total_results"`
Notifications []struct {
ID int `json:"id"`
Text string `json:"text"`
} `json:"notifications"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.TotalResults, len(item.Notifications))
// id последнего уведомления передайте в LAST_ID для следующей страницы
if n := len(item.Notifications); n == 20 {
fmt.Println("LAST_ID:", item.Notifications[n-1].ID)
}
Обработка ответа
HTTP-статус: 200
{
"result": {
"chat_id": 2535,
"notifications": [
{
"id": 44021,
"chat_id": 2535,
"author_id": 15,
"date": "2026-11-10T16:37:49+03:00",
"notify_type": 2,
"notify_module": "rest",
"notify_event": "rest_notify",
"notify_tag": "",
"notify_sub_tag": "",
"notify_title": "",
"setting_name": "rest|rest_notify",
"text": "Проверьте счет [B]№ 42[/B]",
"params": null,
"notify_read": "N"
}
],
"users": [
{
"id": 15,
"active": true,
"name": "Иван Петров",
"first_name": "Иван",
"last_name": "Петров",
"work_position": null,
"color": "#58cc47",
"avatar": "https://cdn-ru.bitrix24.ru/b1234567/main/avatar.png",
"avatar_hr": "https://cdn-ru.bitrix24.ru/b1234567/main/avatar.png",
"gender": "M",
"birthday": "",
"extranet": false,
"network": false,
"bot": false,
"connector": false,
"external_auth_id": "socservices",
"internal_account": true,
"intranet_user": false,
"status": "online",
"idle": false,
"last_activity_date": "2026-11-10T16:36:42+03:00",
"mobile_last_date": false,
"desktop_last_date": false,
"absent": false,
"departments": [],
"phones": {
"personal_mobile": "79001234567"
},
"bot_data": null,
"type": "user",
"website": "",
"email": ""
}
],
"total_results": 1
},
"time": {
"start": 1794317871,
"finish": 1794317871.341717,
"duration": 0.341717004776001,
"processing": 0,
"date_start": "2026-11-10T16:37:51+03:00",
"date_finish": "2026-11-10T16:37:51+03:00",
"operating_reset_at": 1794318420,
"operating": 0
}
}
Возвращаемые данные
|
Название |
Описание |
|
result |
Объект с результатами поиска (подробное описание). Если у пользователя еще нет системного чата уведомлений или передан только |
|
time |
Информация о времени выполнения запроса |
Объект result
|
Название |
Описание |
|
chat_id |
Идентификатор системного чата уведомлений пользователя |
|
notifications |
Массив найденных уведомлений на странице (подробное описание). Если ничего не найдено — пустой массив |
|
users |
Массив авторов найденных уведомлений (подробное описание). В массив не попадают системные уведомления с |
|
total_results |
Общее количество найденных уведомлений. Есть только в ответе на запрос без |
Объект notification
|
Название |
Описание |
|
id |
Идентификатор уведомления. Используйте |
|
chat_id |
Идентификатор системного чата уведомлений пользователя |
|
author_id |
Идентификатор автора уведомления. Для системных уведомлений — |
|
date |
Дата и время создания уведомления |
|
notify_type |
Тип уведомления. Возможные значения:
|
|
notify_module |
Идентификатор модуля, который отправил уведомление |
|
notify_event |
Код события уведомления |
|
notify_tag |
Тег уведомления или пустая строка |
|
notify_sub_tag |
Дополнительный тег уведомления или пустая строка |
|
notify_title |
Заголовок уведомления или пустая строка |
|
setting_name |
Код типа уведомления в формате |
|
text |
Текст уведомления. Форматирование передается BB-кодами, например |
|
params |
Дополнительные параметры уведомления, например вложение |
|
notify_read |
Статус прочтения уведомления. Возможные значения: |
|
notify_buttons |
JSON-строка с кнопками уведомления. Поле есть только у уведомлений с |
Объект user
|
Название |
Описание |
|
id |
Идентификатор пользователя |
|
active |
Признак активности пользователя |
|
name |
Имя и фамилия пользователя |
|
first_name |
Имя пользователя |
|
last_name |
Фамилия пользователя |
|
work_position |
Должность пользователя или |
|
color |
Цвет пользователя в формате hex |
|
avatar |
Ссылка на аватар или пустая строка |
|
avatar_hr |
Ссылка на аватар высокого разрешения или пустая строка |
|
gender |
Пол пользователя. Возможные значения: |
|
birthday |
День рождения в формате |
|
extranet |
Признак внешнего пользователя |
|
network |
Признак пользователя Битрикс24 Network |
|
bot |
Признак бота |
|
connector |
Признак пользователя открытых линий |
|
external_auth_id |
Код внешней авторизации |
|
internal_account |
Признак внутренней учетной записи: |
|
intranet_user |
Признак сотрудника: у пользователя есть подразделение и внутренняя учетная запись |
|
status |
Статус пользователя |
|
idle |
В этом методе всегда |
|
last_activity_date |
Дата последней активности пользователя или |
|
mobile_last_date |
В этом методе всегда |
|
desktop_last_date |
В этом методе всегда |
|
absent |
Дата окончания отсутствия пользователя или |
|
departments |
Массив идентификаторов подразделений |
|
phones |
Телефоны пользователя (подробное описание) или |
|
bot_data |
Данные бота или |
|
type |
Тип пользователя. Возможные значения: |
|
website |
Сайт пользователя |
|
email |
Email пользователя |
Объект phones
В объекте есть только заполненные телефоны.
|
Название |
Описание |
|
work_phone |
Рабочий телефон |
|
personal_mobile |
Мобильный телефон |
|
inner_phone |
Внутренний телефон |
Обработка ошибок
HTTP-статус: 400
{
"error": "SEARCH_TEXT_ERROR",
"error_description": "SEARCH_TEXT can't be less then 3 symbols"
}
|
Название |
Описание |
|
error |
Строковый код ошибки. Состоит из цифр, латинских букв и знака подчеркивания. Может прийти пустым — тогда причину показывает только |
|
error_description |
Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки |
Возможные коды ошибок
|
Статус |
Код |
Описание |
Значение |
|
|
|
SEARCH_TEXT can't be less then 3 symbols |
Не передан ни один фильтр, а |
|
|
|
Last notification ID can't be string |
Значение |
|
|
|
Incorrect date/time: abc |
Значение |
Статусы и коды системных ошибок
HTTP-статус: 4xx, 5xx
Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.
|
Статус |
Код |
Описание |
|
|
|
Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Превышен лимит на интенсивность запросов |
|
|
|
Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит |
|
|
|
В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука |
|
|
|
Методы вызываются только по протоколу HTTPS |
|
|
|
REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24 |
|
|
|
REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — |
|
|
|
Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом |
|
|
|
Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа |
|
|
|
Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на |
|
|
|
Срок действия access-токена истек |
|
|
|
Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям |
|
|
|
Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта |
Продолжите изучение
- Отправить уведомление im.notify
- Отправить персональное уведомление im.notify.personal.add
- Отправить системное уведомление im.notify.system.add
- Получить уведомления im.notify.get
- Получить схему типов уведомлений im.notify.schema.get
- Прочитать список уведомлений im.notify.read.list
- Прочитать или вернуть непрочитанным уведомление im.notify.read
- Прочитать все уведомления im.notify.read.all
- Ответить на уведомление с быстрым ответом im.notify.answer
- Взаимодействовать с кнопками уведомлений im.notify.confirm
- Удалить уведомление im.notify.delete