Розробка бота сповіщень для Bitrix24
Бот сповіщень — це сервісний агент у Bitrix24, який пише співробітникам у приватний чат при настанні подій: новий лід, прострочена задача, оплата замовлення, алерт із сервера. На відміну від стандартних email-сповіщень Б24, бот працює в реальному часі, потрапляє в мобільний додаток Bitrix24 і підтримує кнопки швидких дій.
Реєстрація бота
Бот реєструється через REST API одним викликом imbot.register:
POST /rest/imbot.register
{
"NAME": "Сповіщення",
"CODE": "notify_bot",
"TYPE": "S", // S = System, не показується у контактах
"COLOR": "GREEN",
"PROPERTIES": {
"OPENLINE": "N"
}
}
Після реєстрації Bitrix24 повертає 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 Bitrix24 відправляє подію 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 забирає з черги і надсилає в Bitrix24. Це виключає втрату повідомлень при тимчасовій недоступності REST API.
Строки
| Завдання | Строк |
|---|---|
| Реєстрація бота, базова відправлення повідомлень | 1–2 дні |
| Підключення 1–3 джерел подій (CRM, задачі) | 2–3 дні |
| Кнопки швидких дій + обробка команд | 2–3 дні |
| Черга для надійної доставки | 1–2 дні |
| Тестування всіх сценаріїв | 1–2 дні |
Разом: 1–2 тижні залежно від числа сценаріїв та джерел подій.







