Разработка бота уведомлений для Битрикс24
Бот уведомлений — это сервисный агент в Битрикс24, который пишет сотрудникам в личный чат при наступлении событий: новый лид, просроченная задача, оплата заказа, алерт с сервера. В отличие от стандартных email-уведомлений Б24, бот работает в реальном времени, попадает в мобильное приложение Битрикс24 и поддерживает кнопки быстрых действий.
Регистрация бота
Бот регистрируется через REST API одним вызовом imbot.register:
POST /rest/imbot.register
{
"NAME": "Уведомления",
"CODE": "notify_bot",
"TYPE": "S", // S = System, не показывается в контактах
"COLOR": "GREEN",
"PROPERTIES": {
"OPENLINE": "N"
}
}
После регистрации Битрикс24 возвращает BOT_ID. Этот идентификатор используется для отправки сообщений от имени бота.
Отправка уведомлений
Сообщение пользователю отправляется через im.message.add или imbot.message.add. Разница: im.message.add создаёт диалог от имени OAuth-пользователя приложения; imbot.message.add — от имени зарегистрированного бота. Для уведомительного бота используем второй вариант.
$b24->callMethod('imbot.message.add', [
'BOT_ID' => $botId,
'DIALOG_ID' => 'u' . $userId, // личный чат с пользователем
'MESSAGE' => '[b]Новый лид:[/b] ' . $leadTitle,
'ATTACH' => [
[
'TITLE' => $leadTitle,
'DESCRIPTION' => "Телефон: {$phone}\nИсточник: {$source}",
'COLOR' => '#ff6600',
'LINK' => $crmUrl,
],
],
'KEYBOARD' => [
'BUTTONS' => [[
['TEXT' => 'Открыть в CRM', 'LINK' => $crmUrl, 'BG_COLOR' => '#2fc6f6'],
['TEXT' => 'Взять в работу', 'COMMAND' => 'take_lead', 'COMMAND_PARAMS' => $leadId],
]],
],
]);
ATTACH — блок с форматированием карточки. KEYBOARD — кнопки под сообщением. При нажатии кнопки с COMMAND Битрикс24 отправляет событие ONIMBOTMESSAGEADD с типом команды — бот обрабатывает его как действие.
Источники событий для уведомлений
CRM-события. Регистрируем обработчик на onCrmLeadAdd, onCrmDealUpdate через event.bind:
POST /rest/event.bind
{
"event": "ONCRMDEALUPDATE",
"handler": "https://your-server.com/webhook/deal-update"
}
Когда сделка переходит в стадию «Выиграна» — бот пишет менеджеру и его руководителю поздравление с суммой и ссылкой.
Задачи. Событие onTaskUpdate — при изменении статуса, дедлайна, ответственного. Бот уведомляет нужного сотрудника.
Внешние системы. Мониторинг (Zabbix, Prometheus Alertmanager) отправляет POST на webhook-endpoint сервера бота → бот пишет дежурному инженеру в чат. Аналогично — платёжные системы, 1С, сторонние CRM.
Расписание. Cron на сервере бота запускает скрипт раз в час — проверяет через tasks.task.list просроченные задачи, через crm.deal.list — сделки без активности более N дней, и отправляет сводку ответственным.
Типовые сценарии уведомлений
| Событие | Получатель | Содержание сообщения |
|---|---|---|
| Новый лид с сайта | Ответственный менеджер | Имя, телефон, источник, кнопка «Взять в работу» |
| Смена стадии сделки | Менеджер + руководитель | Сделка, старая и новая стадия, сумма |
| Задача просрочена | Исполнитель + постановщик | Задача, дата дедлайна, дней просрочки |
| Новый комментарий в задаче | Все участники задачи | Автор, фрагмент текста, ссылка |
| Ошибка на сервере | Дежурный инженер | Тип ошибки, время, сервер, стек |
| Успешная оплата заказа | Отдел обработки | Номер заказа, сумма, покупатель |
Групповые уведомления
Бот может писать в групповые чаты. DIALOG_ID в этом случае — ID чата (chatXXX). Для создания служебного чата под проект или отдел используется im.chat.add, бот добавляется как участник через im.chat.user.add.
Очередь и надёжность
Если источников событий несколько и уведомлений много — ставим очередь (Redis, RabbitMQ). Обработчик webhook'а мгновенно принимает событие и кладёт в очередь (ответ 200 за < 1 секунды). Worker забирает из очереди и шлёт в Битрикс24. Это исключает потерю сообщений при временной недоступности REST API.
Сроки
| Задача | Срок |
|---|---|
| Регистрация бота, базовая отправка сообщений | 1–2 дня |
| Подключение 1–3 источников событий (CRM, задачи) | 2–3 дня |
| Кнопки быстрых действий + обработка команд | 2–3 дня |
| Очередь для надёжной доставки | 1–2 дня |
| Тестирование всех сценариев | 1–2 дня |
Итого: 1–2 недели в зависимости от числа сценариев и источников событий.







