Разработка бота для внутреннего чата Битрикс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": "ru", "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 ч |







