Главная · Блог · Входящий вебхук в чат-бот: как запустить сценарий из своей системы
Входящий вебхук в чат-бот: как запустить сценарий из своей системы
Обычно сценарий бота запускает человек: нажал «Старт», написал слово, открыл виджет. Но бывает, что событие происходит не в мессенджере, а в вашей системе: заявка с формы на сайте, заказ в учётной программе, оплата в сервисе. Чтобы такое событие тоже запускало сценарий, в ЧБТ есть триггер «Входящий webhook» — адрес, на который ваша система отправляет запрос. Разбираем, как его настроить, что можно передать, что сценарий сделает дальше и чего этот триггер честно не умеет.
Что такое входящий вебхук
Вебхук — это адрес, на который одна программа отправляет запрос, когда у неё что-то произошло. «Исходящий» — когда бот сам отправляет данные наружу: в ЧБТ это действие «HTTP-запрос». «Входящий» — наоборот: внешняя система стучится к боту.
В ЧБТ входящий вебхук — один из триггеров сценария, наравне с «Команда (/start)», «Ключевые слова» и «Deeplink». У триггера есть свой адрес. Как только на него приходит POST-запрос, сценарий запускается с того шага, который вы выбрали в поле «С какого шага начать».
Триггер есть и в режиме «Шаги», и на «Холсте», от тарифа он не зависит.
Главное ограничение — до настройки
Входящий вебхук запускает сценарий как отдельное событие в канале чата на сайте. Он не продолжает переписку конкретного клиента в Telegram, MAX или ВКонтакте и не может написать ему первым. Если блок «Сообщение» стоит в такой ветке, текст уйдёт не клиенту в мессенджер, а в диалог контакта вебхука — его будет видно в «Диалогах», и только.
Поэтому входящий вебхук подходит, чтобы занести событие в ЧБТ и отреагировать командой: завести сделку, уведомить оператора, поставить тег, переслать данные дальше. Чтобы сообщить клиенту о событии в его мессенджере, нужен уже начатый диалог: ответить в него может оператор или ваша система через API ЧБТ. Как уведомлять клиентов честными способами — в статье про уведомления через бота.
Что нужно для работы
- Подключённый чат на сайте. Сценарий вебхука работает в канале виджета. Если такого канала в проекте нет, запрос получит ответ 404 с ошибкой
no web channel. - Включённый сценарий с триггером «Входящий webhook» и заполненным «Путь webhook». Выключенный сценарий вебхук не найдёт — ответ 404
no_trigger. - Система, которая умеет отправлять POST-запрос. Это может быть ваш сайт, CRM, учётная программа, форма с настройкой вебхука или сервис автоматизации — Make, n8n, Albato.
На Бесплатном тарифе каждый новый контакт вебхука расходует один из 30 диалогов месяца — учитывайте это, если событий много.
Как настроить триггер
- Откройте сценарий и в панели триггеров нажмите «Добавить триггер».
- В «Когда запускать» выберите «Входящий webhook».
- «Путь webhook» — короткое имя события латиницей, например
order-createdилиsite-form. - «Секрет» новому триггеру выдаётся сразу. Кнопка «Сгенерировать» меняет его на новый — старый адрес после этого перестаёт работать, кабинет спросит подтверждение.
- Скопируйте готовый адрес из поля «URL для POST-запросов». Он выглядит так:
https://app.chbt.io/webhook/inbound/<бот>/order-created?token=<секрет>. - В «С какого шага начать» выберите первый шаг ветки.
В одном сценарии может быть несколько триггеров, поэтому один и тот же сценарий можно запускать и вебхуком, и, например, ключевым словом.
Что отправить в запросе
Метод — POST. В теле ЧБТ читает три поля:
uid(илиuser_id) — кто это. Один uid — один контакт в ЧБТ: повторные запросы с тем же uid попадут в его карточку и его диалог. Удобно передавать номер заказа, телефон или id клиента в вашей системе. Без uid каждый запрос создаст новый контакт.text(илиmessage) — текст события. Он сохраняется как входящее сообщение контакта и виден в «Диалогах».name— имя контакта, до 120 символов. Его можно подставлять в тексты как{{name}}.
Пример:
curl -X POST "https://app.chbt.io/webhook/inbound/<бот>/site-form" \
-H "X-Webhook-Token: <секрет>" \
-H "Content-Type: application/json" \
-d '{"uid":"79001234567","name":"Анна","text":"Заявка с сайта: кухня 3 м, замер в субботу"}'Остальные поля тела ЧБТ не разбирает: отдельных переменных из них не появится. Всё, что нужно увидеть команде, кладите в text.
Секрет: в адресе или в заголовке
Секрет защищает адрес от чужих запросов. Передать его можно двумя способами:
- параметром
?token=в адресе — подходит для систем, где можно вписать только URL; - заголовком
X-Webhook-Token— если система умеет заголовки, это аккуратнее: секрет не оседает в логах вместе с адресом.
Запрос без секрета или с неверным получит ответ 401 unauthorized, и сценарий не запустится. У старых триггеров, созданных до появления секретов, его может не быть — тогда вебхук принимает запросы без проверки. Нажмите «Сгенерировать», чтобы включить проверку, и обновите адрес в своей системе.
Что поставить после триггера
Ветка вебхука — это обычный сценарий, только без живого собеседника. Полезные шаги:
- «Действие» → «Сделка в CRM» — заявка с сайта сразу ложится в канбан. В «Название сделки» можно подставить имя:
Заявка с сайта — {{name}}, задать «Сумма» и «Этап». - «Действие» → «Уведомить оператора» — команда получает уведомление в кабинете и push. «Текст уведомления» тоже понимает переменные.
- «Действие» → «Добавить тег» — например
заявка-сайт, чтобы потом отфильтровать такие контакты в «Контактах». - «Действие» → «HTTP-запрос» — переслать событие дальше: в Google Таблицу, внешнюю CRM, свой сервер. В запрос уйдёт и текст события.
- «Условие» — развести события по веткам, например по тегу контакта.
Какие события удобно передавать
- Заявка с формы сайта или лендинга — чтобы она попала в ту же CRM, что и заявки из мессенджеров, и менеджер не проверял две почты.
- Звонок или заявка из колл-трекинга — контакт с телефоном в uid и короткой сводкой в text.
- Новый заказ в учётной системе — сделка с суммой на нужном этапе и уведомление ответственному.
- Оплата на стороннем сервисе — тег
оплатил, чтобы такие клиенты были видны в «Контактах» рядом с остальными. - Событие из Make или n8n — когда сценарий автоматизации собрал данные из нескольких источников и должен отдать итог команде в ЧБТ.
Общее у всех — событию нужна реакция команды, а не автоматический ответ клиенту в мессенджер.
Пример: заявка с сайта в CRM за минуту
Мебельная мастерская принимает заявки формой на сайте. Нужно, чтобы каждая заявка сразу оказывалась в ЧБТ — там, где менеджер уже отвечает клиентам из Telegram и виджета.
- Сценарий «Заявки с сайта»: триггер «Входящий webhook», путь
site-form. - Первый шаг — «Действие»: «Добавить тег»
заявка-сайт, «Сделка в CRM» с названиемСайт — {{name}}на этапе «Новый», «Уведомить оператора» с текстомНовая заявка с сайта: {{name}}. - Форма сайта отправляет POST с
uid— телефоном,name— именем иtext— тем, что клиент написал в форме.
Менеджер получает push, открывает сделку и в «Диалогах» видит текст заявки. Позвонить или написать клиенту он может как обычно. Если форма сама не умеет отправлять такие поля, поставьте между ней и ЧБТ сервис автоматизации: он примет данные формы и отправит их в нужном виде.
Как проверить вебхук
Тест-чат редактора здесь не поможет: «Проверить сценарий» имитирует переписку, а вебхук приходит извне. Проверяйте настоящим запросом:
- Отправьте запрос из примера выше — из терминала, Postman или тестового режима вашей системы.
- Ответ
{"ok":true}— сценарий запущен. Ответы с ошибкой подскажут причину: 401 — секрет, 404no_trigger— путь не совпал или сценарий выключен, 404no web channel— нет чата на сайте, 400 — неверный адрес. - Откройте «Контакты»: появился контакт с переданным именем, а у него — тег из ветки.
- Загляните в «CRM» и «Диалоги»: сделка и текст события на месте.
Используйте для проверки отдельный uid, например test-1, чтобы потом легко найти и удалить тестовый контакт.
Входящий вебхук, API и подписки — что выбрать
| Задача | Инструмент |
|---|---|
| Событие в вашей системе должно запустить действия в ЧБТ: сделку, тег, уведомление | Триггер «Входящий webhook» |
| Бот должен отправить данные клиента во внешнюю систему | Действие «HTTP-запрос» — подробно в статье про HTTP-запрос из бота; для amoCRM и GetCourse есть готовые интеграции на событие «Заявка» |
| Внешняя система должна узнавать о сообщениях и диалогах | «Подписки на события» в разделе интеграций |
| Внешняя система должна ответить клиенту в уже начатый диалог | API ЧБТ с токеном из «Подключения по API» |
Инструменты сочетаются: например, вебхук заводит заявку с сайта, а «HTTP-запрос» в той же ветке пересылает её в учётную систему.
Частые ошибки
- Ждут сообщения клиенту в Telegram. Вебхук сценарий запускает, но клиенту в мессенджер не пишет. Для этого нужен его начатый диалог и ответ оператора или API.
- Передают данные отдельными полями.
phone,city,commentв теле ЧБТ не разберёт — объединяйте нужное вtext, а для контакта используйтеuidиname. - Нет uid. Каждый запрос создаёт новый контакт — и на Бесплатном тратит диалог месяца.
- Сменили секрет и забыли про систему. После «Сгенерировать» старый адрес перестаёт работать — обновите его там, откуда идут запросы.
- Отключили чат на сайте. Вебхуку нужен канал виджета, без него запросы получают 404.
Интеграции чат-ботаHTTP-запрос из чат-ботаЛиды из бота в CRMCRM и контакты