Чатбот, який гарно спілкується, але нікуди не пише дані, — це демо, а не інструмент. Цінність з'являється в момент, коли бот сам створює контакт у CRM, бронює слот у календарі й пінгує менеджера, коли лід гарячий. Цей гайд — інтеграційний плейбук: як технічно з'єднати бота з CRM і календарем, як влаштувати function-calling, і де ставити тригери передачі людині.
Розбираємо на рівні архітектури, без прив'язки до одного вендора — підхід однаковий для Telegram-бота, віджета на сайті чи WhatsApp.
Архітектура: що з чим говорить
Працююча зв'язка має чотири шари:
- Канал — Telegram / сайт-віджет / Instagram / WhatsApp. Звідси приходить повідомлення.
- Мозок бота — LLM (наприклад, через function-calling) + логіка сценарію. Вирішує, що відповісти і яку дію викликати.
- Шар інтеграцій — код або no-code (n8n/Make), що викликає API CRM і календаря.
- Системи призначення — CRM (HubSpot, Pipedrive, KeyCRM, Бітрікс24), календар (Google Calendar, Calendly), сповіщення (Telegram-чат менеджера, email).
Ключ — шар 3. Саме він перетворює «бот поспілкувався» на «бот зробив».
Function-calling: як бот викликає дії
Сучасний підхід — дати LLM набір «інструментів» (функцій), які він може викликати, коли вважає за потрібне. Замість жорсткого сценарію if-else бот сам розуміє намір і обирає дію.
Типовий набір функцій для продажового/сервісного бота:
create_lead(name, contact, source, score, notes)— створити контакт у CRMcheck_availability(date_range)— подивитись вільні слоти в календаріbook_appointment(slot, contact, service)— забронювати записupdate_lead_stage(lead_id, stage)— перевести по воронціnotify_manager(lead_id, reason)— пінгнути менеджераhandoff_to_human(reason)— передати діалог оператору
LLM отримує опис кожної функції (назва, параметри, коли викликати), а виконує їх ваш код. Це і є function-calling: модель повертає «хочу викликати book_appointment з такими параметрами», ваш backend реально дзвонить у Google Calendar API і повертає результат назад у діалог.
Важлива деталь: модель не виконує дій сама — вона лише пропонує. Реальний дзвінок в API завжди робить ваш код. Це і безпечніше (ви контролюєте, що дозволено), і надійніше (валідація параметрів до виклику).
Приклад потоку: від «привіт» до запису в CRM
Щоб усе вище стало конкретним, ось як виглядає один діалог зсередини:
- Клієнт пише в Telegram: «Скільки коштує чатбот?»
- LLM розпізнає намір «дізнатись ціну» і веде коротку кваліфікацію (потреба, масштаб, бюджет).
- Після відповідей модель вирішує викликати
create_lead(...)зі зібраними даними й порахованим скорингом. - Backend спершу робить
search_contact(phone)— дедуплікація. Контакту немає → POST у CRM API → отриманоlead_id. - Скоринг ліда = 9 → модель викликає
notify_manager(lead_id, "hot"). У Telegram-чат команди падає картка з саммарі. - Клієнт пише: «Можна на завтра дзвінок?» →
check_availability→book_appointment→ подія в Google Calendar + .ics клієнту. - Усе це — в межах однієї розмови, без жодного ручного кроку з боку менеджера.
Саме ця послідовність відрізняє «чат-іграшку» від інструмента, що приносить гроші.
Крок за кроком: підключення CRM
- Створіть API-доступ у CRM. Майже всі CRM дають API-ключ або OAuth-додаток. Для KeyCRM/Pipedrive/HubSpot це кілька кліків у налаштуваннях.
- Опишіть мапінг полів. Поля бота → поля CRM: name→Contact.Name, бюджет→Deal.Amount, скоринг→Custom field. Зафіксуйте це до коду.
- Реалізуйте
create_lead. Бот наприкінці кваліфікації викликає функцію → backend робить POST у CRM API → повертає lead_id. - Дедуплікація. Перед створенням — пошук за телефоном/email, щоб не плодити дублі. Якщо контакт є — оновлюємо, не дублюємо.
- Скоринг у CRM. Записуйте бал ліда в окреме поле — менеджер сортує чергу за ним.
Крок за кроком: підключення календаря
- Сервісний акаунт або OAuth до Google Calendar / Calendly.
check_availability— бот тягне вільні слоти з урахуванням робочих годин і буферів між зустрічами.book_appointment— створює подію, додає клієнта як гостя, шле .ics і підтвердження.- Часові пояси. Завжди фіксуйте TZ явно — інакше клієнт з іншого міста отримає зустріч «не в той час».
- Нагадування. Подія з бронюванням → автонагадування за 24 год і 2 год (різко знижує no-show — про це окрема стаття).
Помилки й надійність: що піде не так
Інтеграція — це не «налаштував і забув». Реальні системи падають, і бот має це переживати гідно:
- API CRM недоступне. Не втрачайте лід! Якщо POST не пройшов — складіть запис у чергу (retry з експоненційною затримкою) і все одно пінгніть менеджера сирими даними в Telegram.
- Ліміти запитів (rate limits). У всіх API є квоти. Закладайте throttling і черги, інакше на піку частина лідів просто не запишеться.
- Невалідні дані. Клієнт ввів «телефон» текстом «передзвоніть колись». Валідуйте параметри до виклику функції й перепитуйте, а не пишіть сміття в CRM.
- Часткова помста. Лід створився, а бронювання впало. Робіть кроки ідемпотентними й логуйте кожен — щоб можна було допровести вручну.
- Тихі помилки. Найгірше — коли бот «думає», що записав, а насправді ні. Кожен виклик функції має повертати явний успіх/помилку в діалог.
Безпека й приватність
Бот працює з персональними даними, тож:
- Ключі API — у секретах, не в коді й не в промпті. Окремий ключ із мінімальними правами під кожну інтеграцію.
- Принцип найменших привілеїв. Боту не потрібен доступ «на видалення угод» — лише створення/оновлення.
- Згода й прозорість. Повідомте клієнта, що дані йдуть у CRM; для EU-аудиторії — це вимога GDPR.
- Логи без зайвого. Не зберігайте у відкритих логах телефони/email більше, ніж потрібно.
Тригери передачі людині
Не все має робити бот. Закладіть явні тригери ескалації:
| Тригер | Дія |
|---|---|
| Фраза «хочу людину / менеджера» | Миттєвий handoff_to_human |
| Скоринг ліда ≥ 8 | notify_manager + позначка «гарячий» |
| Бот не зрозумів 2 рази поспіль | Передача оператору |
| Запит на знижку / нестандартні умови | Передача менеджеру з продажів |
| Скарга / негатив (sentiment) | Ескалація + прапорець у CRM |
| Технічний/юридичний запит поза скоупом | Передача профільному спеціалісту |
Тригери — це не «коли бот зламався», а свідома логіка маршрутизації.
No-code чи код?
| Критерій | n8n / Make (no-code) | Власний код |
|---|---|---|
| Швидкість запуску | дні | тижні |
| Гнучкість логіки | середня | повна |
| Вартість на масштабі | росте з обсягом | стабільна |
| Складні сценарії/скоринг | обмежено | без обмежень |
| Підтримка | простіша | потрібен розробник |
Для старту й середніх обсягів no-code (n8n) часто оптимальний. Коли логіка ускладнюється або обсяги ростуть — переходять на код. Часто роблять гібрид: ядро на коді, периферія на n8n.
Як тестувати інтеграцію перед запуском
Не вмикайте бота на бойовій CRM наосліп. Чек-лист перед продакшеном:
- Sandbox-середовище. Спочатку всі записи летять у тестову CRM/календар, не в бойовий.
- Happy path. Пройдіть повний сценарій: кваліфікація → create_lead → book_appointment → нагадування. Перевірте, що поля змапились правильно.
- Edge cases. Дублі контактів, невалідний телефон, скасування брони, два бронювання поспіль, недоступне API.
- Часові пояси. Забронюйте з різних TZ — переконайтесь, що час правильний у клієнта й у вас.
- Навантаження. Прогоніть десяток паралельних діалогів — чи не впирається в rate limits.
- Перевірка сповіщень. Гарячий лід реально пінгує менеджера? Картка містить саммарі?
Тільки після зеленого чек-листа — перемикання на бойову CRM.
Скільки коштує й скільки часу займає
Орієнтири для українського ринку, щоб ви розуміли масштаб:
- Базова інтеграція (бот → одна CRM, створення лідів + сповіщення) — від $1000, кілька днів роботи.
- З бронюванням (CRM + календар + нагадування) — додає кілька днів і відповідну вартість.
- Повна зв'язка (мультиканальність, скоринг, маршрутизація, дашборд) — від $1500+, до пари тижнів.
Точна вилка залежить від складності вашої воронки й кількості систем. Часто розумно почати з базової інтеграції, переконатись на даних, що вона приносить ліди, і поетапно нарощувати функціонал.
Поширені питання при підключенні
- «А якщо в нас екзотична CRM?» Майже всі CRM мають API або webhook. Навіть якщо ні — є проміжний шар (n8n/Make), що з'єднає майже будь-що.
- «Чи зламається бот, коли ми міняємо поля в CRM?» Тому й роблять мапінг полів окремим шаром — змінити мапу простіше, ніж переписувати логіку.
- «Хто володіє даними?» Ви. Бот лише пише у вашу CRM під вашим ключем; усі ліди залишаються у ваших системах.
Як MaxICo Labs це вирішує
Ми підключаємо чатботів до вашої CRM і календаря «під ключ»: проєктуємо набір функцій, реалізуємо інтеграції, налаштовуємо скоринг, дедуплікацію й тригери передачі людині — так, щоб бот не балакав, а реально рухав угоди по воронці.
- Інтеграція з KeyCRM, Pipedrive, HubSpot, Бітрікс24 та ін.
- Бронювання в Google Calendar / Calendly з нагадуваннями
- Function-calling: запис у CRM, апдейт стадій, сповіщення менеджеру
- Дедуплікація, скоринг лідів, маршрутизація гарячих
- Гібрид n8n + код під ваш масштаб і бюджет
Хочете, щоб бот сам клав ліди у вашу CRM?
Напишіть Валерію в чат на сайті — підкажемо, які інтеграції потрібні саме вашій воронці, або забронюйте безкоштовний дзвінок, і ми спроєктуємо архітектуру під вашу CRM.