Розробка бота для внутрішнього чату Бітрікс24
Внутрішній чат Бітрікс24 — це не просто месенджер для листування. Через нього проходять сповіщення CRM, нагадування про завдання, алерти із зовнішніх систем. Бот для внутрішнього чату автоматизує рутину: відповідає на питання співробітників, агрегує дані з різних модулів, виконує команди прямо з діалогового вікна.
Чим внутрішній бот відрізняється від бота для клієнтів
Принципова різниця — в аудиторії та правах доступу. Клієнтський бот працює у відкритих лініях, внутрішній — у модулі im Бітрікс24 з повним доступом до внутрішніх даних порталу.
Внутрішній бот може:
- Отримувати дані CRM, завдань, проектів через REST API без обмежень відкритих ліній.
- Використовувати права конкретного користувача (бот виконує дії від імені свого користувача-власника).
- Працювати в групових чатах, не лише в особистих діалогах.
- Надсилати rich-повідомлення з кнопками, прикріплювати файли з Диску Бітрікс24.
Реєстрація через той самий imbot.register, але без прапорця OPENLINE: Y.
Типові сценарії внутрішнього бота
HR-бот. Співробітник пише /відпустка 15.07-28.07 → бот створює запит на відпустку через timeman.absence.create, сповіщає керівника, відмічає дні в календарі через calendar.event.add. Без ходіння по розділах Бітрікс24.
Бот звітності. Керівник пише /звіт продажі червень → бот робить запит crm.deal.list з фільтром по датах і відповідальних → формує зведення прямо в чаті: кількість угод, сума, конверсія по стадіях.
Черговий бот. Моніторинг зовнішніх систем (сервер, сайт, черга завдань) → при перевищенні порогів надсилає алерт в чат чергового інженера з кнопками «Прийняв», «Ескалювати».
IT-helpdesk бот. Співробітник описує проблему → бот створює завдання в проекті техпідтримки через tasks.task.add, призначає виконавця по ротації, надсилає номер тікету. Статус тікету можна запитати командою /тікет 1234.
Реєстрація та обробка команд
Бот реєструється із зазначенням обробника команд:
POST /rest/imbot.register
{
"CODE": "internal_helper",
"EVENT_MESSAGE_ADD": "https://your-server.com/internal-bot/message",
"EVENT_COMMAND_ADD": "https://your-server.com/internal-bot/command",
"OPENLINE": "N"
}
Команди реєструються через imbot.command.register:
{
"BOT_ID": 456,
"COMMAND": "звіт",
"COMMON": "Y",
"HIDDEN": "N",
"EXTRANET_SUPPORT": "N",
"LANG": [{"LANGUAGE_ID": "uk", "TITLE": "Звіт по продажах", "PARAMS": "період"}]
}
Після реєстрації команда з'являється в автодоповненні чату при введенні /.
Кейс: бот-помічник для відділу продажів
Завдання: 12 менеджерів, часті питання «скільки у мене відкритих угод», «коли останній контакт з клієнтом X», «що по завданнях на сьогодні».
Реалізація: Python (FastAPI) + Бітрікс24 REST API.
Команди:
-
/угоди→ список відкритих угод менеджера з сумами і стадіями (зcrm.deal.list, фільтрASSIGNED_BY_ID= ID користувача з контексту події). -
/клієнт [назва]→ пошук контакту/компанії + остання активність (crm.activity.list). -
/завдання→ завдання на сьогодні зtasks.task.listз дедлайном на поточний день. -
/дзвінок [телефон]→ ініціювати вихідний дзвінок черезvoip.call.start.
Авторизація: бот виконує запити від імені користувача, що написав команду. Для цього використовується USER_ID з події + отримання токена користувача через OAuth-flow при першому зверненні. Токени зберігаються в Redis з TTL = час життя refresh token.
Результат: кожен менеджер економить 15–20 хвилин на день на навігації по інтерфейсу. Навантаження на систему мінімальне — бот робить 3–5 API-запитів на команду.
Головна складність: ротація токенів. Bitrix24 REST-токени живуть 1 годину, refresh token — 30 днів. Якщо користувач не користувався ботом 30 днів — потрібна повторна авторизація. Рішення: webhook замість OAuth для портальних застосунків (webhook не протухає, але має права застосунку, а не конкретного користувача).
Деплой та надійність
Бот-сервіс повинен відповідати на вебхук Бітрікс24 за 3 секунди. Інакше Бітрікс24 вважає запит невдалим і повторює його — що призводить до дублів повідомлень.
Правильна архітектура:
- Вебхук приймає запит, негайно повертає
200 OK. - Завдання кладеться в чергу (Redis Queue, RabbitMQ).
- Воркер обробляє завдання асинхронно, відповідає через
imbot.message.add.
| Компонент | Трудовитрати |
|---|---|
| Базовий бот (3–5 команд) | 16–32 год |
| OAuth авторизація користувачів | 8–16 год |
| Складні команди з агрегацією даних | 16–40 год |
| Черга + асинхронна обробка | 8–16 год |
| Деплой, моніторинг, тести | 8–16 год |







