Розробка 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С, склад, тощо)
Сервер отримує update від Telegram, визначає intent користувача (FSM або NLP), виконує потрібні дії в Бітрікс24, повертає відповідь у Telegram.
Ключові інтеграційні точки з Бітрікс24
Ідентифікація клієнта. При першому зверненні бот запитує телефон через KeyboardButton(request_contact=True) Telegram. Отриманий номер використовується для пошуку контакту в CRM: crm.contact.list з фільтром PHONE = '+...'. Якщо знайшов — прив'язує 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 год |







