Разработка Telegram-бота с интеграцией Битрикс24
Telegram-бот, подключённый к Битрикс24 через открытую линию — это не то же самое, что Telegram-бот с прямой интеграцией в CRM. В первом случае клиентские сообщения просто попадают в очередь операторов. Во втором — бот самостоятельно обрабатывает обращения, создаёт сделки, проверяет статусы и передаёт оператору только нерешённые вопросы.
Два подхода к интеграции
Вариант 1: Через открытые линии Битрикс24. Telegram-бот подключается в разделе «Контакт-центр → Открытые линии → Подключить каналы → Telegram». Все сообщения из Telegram попадают в очередь операторов. Простая настройка, но бот здесь — просто ретранслятор.
Вариант 2: Самостоятельный Telegram-бот с интеграцией в Битрикс24. Бот развёртывается на отдельном сервере, получает сообщения через Telegram Bot API (webhook или long polling), сам обрабатывает сценарии и взаимодействует с Битрикс24 через REST API. Полный контроль над логикой.
Большинство реальных задач требует второго подхода — когда нужна автоматизация, а не просто переадресация переписки.
Архитектура самостоятельного бота
Клиент в Telegram
↓
Telegram Bot API (webhook)
↓
Сервер бота (Python aiogram / Node.js telegraf)
↓ ↓ ↓
Логика Битрикс24 REST API Внешние сервисы
бота (crm.*, im.*, tasks.*) (1С, склад, etc.)
Сервер получает update от Telegram, определяет intent пользователя (FSM или NLP), выполняет нужные действия в Битрикс24, возвращает ответ в Telegram.
Ключевые интеграционные точки с Битрикс24
Идентификация клиента. При первом обращении бот запрашивает телефон через KeyboardButton(request_contact=True) Telegram. Полученный номер используется для поиска контакта в CRM: crm.contact.list с фильтром PHONE = '+7...'. Если нашёл — привязывает telegram_id к UF_CRM_TELEGRAM_ID контакта. Если нет — создаёт новый контакт.
Создание лидов и сделок. Каждое новое обращение через Telegram создаёт лид: crm.lead.add с SOURCE_ID = 'MESSENGER' и полем UTM_SOURCE = 'telegram'. Все сообщения диалога пишутся в комментарий лида через crm.timeline.comment.add.
Статус заказа. Бот принимает номер заказа → делает запрос crm.deal.list по пользовательскому полю UF_ORDER_NUMBER → возвращает текущую стадию и ожидаемую дату. Клиент получает ответ за 2-3 секунды без оператора.
Запись на услугу. Бот показывает доступные слоты из Битрикс24 Расписания (модуль calendar) через calendar.accessibility.get → клиент выбирает время → создаётся встреча calendar.event.add с привязкой к контакту CRM.
Передача в Битрикс24 чат для оператора
Когда бот не может обработать запрос, переводит на оператора. Правильная реализация:
- Бот сохраняет историю диалога (последние N сообщений) в Redis.
- Создаёт обращение в открытой линии через
imopenlines.crm.chat.getLinkили прямым созданием чата черезim.chat.add. - Отправляет историю первым сообщением, чтобы оператор видел контекст.
- Клиент продолжает переписку в Telegram, оператор отвечает из Битрикс24.
Кейс: бот для сети автосервисов
Задача: 12 точек, клиенты хотят записываться на ТО через Telegram, проверять готовность автомобиля, получать чек.
Сценарии бота:
- Запись на ТО → выбор точки (инлайн-кнопки) → выбор услуги → выбор даты/времени из расписания Битрикс24 → подтверждение → SMS-напоминание за день.
- Статус ремонта → ввод номера авто → запрос к
crm.deal.listпоUF_CAR_NUMBER→ текущий этап из стадии сделки. - Готов авто → автоматическое уведомление в Telegram при смене стадии на «Готов к выдаче» (триггер через
crm.deal.onUpdate→ вебхук на сервер бота →bot.send_message).
Технический стек: Python + aiogram 3 + Redis (FSM состояния) + PostgreSQL (логирование) + Bitrix24 REST.
Проблема: Telegram ограничивает частоту отправки — не более 30 сообщений в секунду в разные чаты. При массовой рассылке уведомлений (все записи на завтра) нужна очередь с задержками.
| Компонент | Трудозатраты |
|---|---|
| Базовый бот + вебхук | 8-16 ч |
| Идентификация клиентов в CRM | 8-16 ч |
| FSM сценарии (запись, статус) | 16-32 ч |
| Интеграция с расписанием Битрикс24 | 8-16 ч |
| Исходящие уведомления + очередь | 8-16 ч |
| Деплой, SSL, мониторинг | 4-8 ч |







