Webhook (вебхук) – это механизм оповещения одной системы о событиях в другой системе. Блок «Входящий webhook» используется в качестве стартового блока в сценарии принятия запроса.
В блок добавляются параметры, которые мы собираемся получать. Автоматически создаются локальные переменные с таким же названием как вы указали для параметров. В эти переменные будут записываться значения, которые передаются в запросе.
Запрос — это ссылка, которая отображается внизу блока. Она используется для вызова сценария принятия запроса из сторонних сервисов.
Пример: вы хотите, чтобы при перемещении карточки сделки в CRM клиенту отправлялось сообщение с запросом оценки. Для этого нужно указать в запросе номер телефона клиента и его имя, чтобы бот узнал, на какой телефон отправить сообщение и как к нему обратиться. Пример такого сценария можете посмотреть в статье «Исходящий webhook Битрикс24».
Сейчас с блоком «Входящий webhook» можно связать только блоки «Отправка сообщения*» и «Условие». Мы работаем над расширением списка поддерживаемых блоков.
Настройка блока «Входящий webhook»
1. Скопируйте ссылку из блока;
2. Подставьте в ссылку после токена нужные параметры. Параметры разделяются знаком &.
Например:
https://constructorbot.chatapp.online/api/request/get/?token=токен генерируется
сам&chat_id=номер телефона клиента &id=идентификатор карточки;
3. Создайте поля и впишите в них параметры, которые вы добавили в ссылку.
Если брать ссылку из примера в предыдущем пункте, то нужно создать 2 поля и вписать в первое «chat_id» а во второе «id»;
4. Добавьте блок «Отправка сообщения*»;
5. В «ChatID» введите {{chat_id}};
6. В «Линия» выберите линию, с которой будет отправляться сообщение;
7. В «Мессенджер» выберите мессенджер, из которого будет отправляться сообщение;
8. Введите название сценария;
9. Нажмите «Сохранить» и «Опубликовать»;
10. Теперь нужно перейти в сервис, который будет отправлять запрос, и настроить в нем исходящий webhook. Процесс настройки может отличаться в зависимости от сервиса. Для примера посмотрите статью «Исходящий webhook Битрикс24».
Блок «Входящий webhook» принимает как GET, так и POST запросы.
Получение параметров из тела запроса
Данные, которые передаются через webhook, могут быть в ссылке — www.…/get/?token=…
. В таком случае их нужно вписать в поля блока как описано выше.
Важно: для корректного получения параметров из тела запроса, в ссылке не должно быть кроме токена www.…/get/?token=…
.
А так же может приходить и в теле запроса в формате .json. Тогда их не нужно вписывать в блок:
{
"Email1": "...@gmail.com",
"name_client": "test",
"chat_id": "89999999999",
"tranid": "test",
"formid": "formtest",
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "promo"
}
Чтобы получить данные из таких параметров, нужно просто указать их в боте в фигурных скобках. Например, если ввести в тексте сообщения {{Email1}}, то когда придет webhook, подставится значение ...@gmail.com
.
Обратите внимание, что в конце передаваемого параметра "Email1"
стоит цифра 1. Параметры в теле запроса должны отличаться от системных переменных которые уже есть в боте. Какие еще бывают системные переменные читайте в статье.
Некоторые сервисы передают webhook с вложенными параметрами. Это выглядит так:
{
"payment": {
"name": "Вася"
"Email1": "...@gmail.com",
}
}
В таком случае, чтобы получить имя клиента, мы напишем сначала параметр который содержит в себе параметр с именем — payment
, а через точку укажем нужный параметр. Должно получиться так: {{payment.name}}
.
В некоторых случаях параметры содержат в себе вложенные списки. Тогда в одном параметре может оказаться 2 других параметра с одинаковым названием. В теле запроса список выделяется квадратными скобками, это будет выглядеть так:
"payment" : [
{
"name": "Вася"
"email1": "...@mail.ru"
}
{
"name" : "Петя"
"email1": "...@yandex.ru"
}
]
Как нам отличить друг от друга параметры name
? Все очень просто! Каждый элемент в списке имеет свой порядковый номер. Отсчет начинается с 0. А значит параметр с именем “Вася” будет по счету — 0. В боте это будет указываться так:
payment[0].name
— бот отправит “Вася”;
payment[1].name
— бот отправит “Петя”.
Элемент в формате json отделяется двумя фигурными скобками. Все что внутри будет считаться одним элементом, даже если он содержит несколько параметров.
Видеоурок
Если у вас остались вопросы, мы подготовили видеоурок по блоку входящий webhook.