Webhook — это техническое сообщение, которое посылает наша система другой системе.
Некоторые примеры сценариев, для которых пригодятся вебхуки:
Среди готовых шаблонов в сервисе вы также можете найти готовые примеры вебхуков для отправки запросов в различные сервисы.
Давайте посмотрим, как настроить триггерную отправку вебхука.
Зайдите в раздел Триггерные сообщения и создайте новое сообщение. На шаге Содержание выберите тип - Webhook:
Откроется интерфейс для настройки вебхука:
На этом шаге нужно выбрать метод запроса, указать URL-адрес для отправки запроса, указать тело запроса. Можно также указать Query-параметры и добавить заголовки запроса.
Метод запроса
У GET-запроса нет тела, все данные указываются в URL.
PATCH: получает данные в стороннем сервисе и заменяет данные лида на стороне Carrot quest.
PUT: получает данные в стороннем сервисе и дополняет информацию о лиде в Carrot quest полученными данными.
DELETE: удаляет указанные данные на стороне Carrot quest. Обычно не имеет тела, но бывают исключения.
Тело запроса
Тело запроса содержит данные, которые будут отправлены на сервер. Оно представлено в формате JSON. Вы можете использовать язык шаблонов Jinja для динамического заполнения тела запроса переменными, например, записанными свойствами или событиями из карточки пользователя. Если сервис, в который вы отправляете запрос, принимает Python, можно использовать его.
В теле нужно указать параметры и переменные. Можно добавить свойство пользователя в Jinja - подробнее об этом читайте тут.
Пример 1: в теле запроса передаём свойства пользователя с помощью Jinja:
{ "name": "{{ user['$name'] }}", "email": "{{ user['$email'] }}", "phone": "{{ user['$phone'] }}", "order_id": "{{ user['order_id'] }}"
Пример 2: в теле запроса передаём персонализированный текст СМС-сообщения и номер телефона с помощью Jinja
{ "route": "sms", "from": "<SENDER_NAME>", "to": "{{ user['$phone'] }}", "text": "Ваш заказ №{{ event['номер заказа'] }} приянт и будет доствален по адресу {{ event['адрес доставки'] }} в {{ event['время доставки'] }}."
Обратите внимание: перед составлением тела вебхука нужно изучить документацию сервиса, в который отправляется вебхук. Это поможет понять, какой формат вебхука принимает сервис (набор значений и ключей может отличаться от сервиса к сервису) и каким образом происходит парсинг, в теле запроса или в query-параметрах.
URL-адрес и Query-параметры
URL-адрес — это адрес сервера, на который будет отправляться запрос. Этот адрес должен быть предоставлен сервисом, с которым вы хотите интегрироваться.
Query-параметры — это дополнительные параметры, которые добавляются к URL-адресу запроса. Они используются для передачи данных в URL-строке и также могут быть заполнены с использованием Jinja.
Пример URL с Query-параметрами, где используется Jinja:
https://your-bitrix24-instance.com/webhook-endpoint?user_id={{ user['$user_id'] }}&order_id={{ user['order_id'] }}
Заголовки запроса
Заголовки запроса передают метаинформацию о запросе. Некоторые заголовки автоматически добавляются системой:
Вы также можете добавить свои заголовки, например, для авторизации или указания специфических параметров. Например:
Обратите внимание: не рекомендуется хранить и передавать конфиденциальные данные в заголовках запроса.
После настройки тела вебхука можно перейти на шаг Когда отправлять. Укажите событие, при срабатывании которого будет отправляться webhook.
❗ Важно: Если добавить несколько событий в качестве триггеров, то webhook будет отправляться при срабатывании ЛЮБОГО из триггеров.
Выберите, через какое время после срабатывания триггера будет отправляться webhook (сразу после срабатывания или через промежуток времени), а так же в какое время будет отправляться webhook: в любое или только в определенное время суток.
На шаге Кому отправлять можно выбрать, кому мы будем показывать сообщение среди тех, у кого сработал триггер.
Можно отправить вебхук всем пользователям, либо тем, кто соответствует хотя бы одному условию:
“Всем” эквивалентно логическому “И”, т.е. все условия должны быть выполнены. = “Любому” эквивалентно логическому “Или”, т.е. если выполнен хотя бы один фильтр (или даже все), то пользователь проходит.
Свойства пользователя
Указываются свойства, которым должен удовлетворять пользователь, у которого сработал триггер.
События пользователя
Указываются события, которые выполнял пользователь к моменту срабатывания триггера.
❗ Важно: Если у триггерного сообщения стоит задержка показа (см. предыдущий шаг “Выбор триггера”), то свойства и события проверяются через это время: сработал триггер — прошло N времени — фильтры проверили пользователя.
❗ Важно: Не обязательно каждый раз выбирать события и свойства пользователя, можно выбрать сохранённый сегмент.
Укажите условие повторной отправки: отправлять это сообщение только 1 раз или повторять, если он снова выполнит условия, не раньше чем N времени, а так же выберите цель сообщения на следующих шагах настройки.
На шаге Проверка и запуск проверьте правильность настроек webhook, введите название сообщения и, если необходимо, укажите событие для цепочек сообщений.
Если всё настроено верно, то нажмите “Сохранить и запустить”, если необходимо, чтобы сообщение сразу начало свою работу, или на “Сохранить и запустить позже”.
Подробнее о webhook читайте в документации.