+7 (727) 355-53-65
Войти Начать бесплатно
Сменить регион сайта
Казахстан и СНГ (выбрано)
Английский Россия

Блок «Входящий webhook»

Webhook (вебхук) – это механизм оповещения одной системы о событиях в другой системе. Блок «Входящий webhook» используется в качестве стартового блока в сценарии принятия запроса.

В блок добавляются параметры, которые мы собираемся получать. Автоматически создаются локальные переменные с таким же название, которое указано для параметров. В эти переменные будут записываться значения, которые передаются в запросе.

Запрос — это ссылка, которая отображается внизу блока. Она используется для вызова сценария принятия запроса из сторонних сервисов.

Пример: вы хотите, чтобы при перемещении карточки сделки в CRM клиенту отправлялось сообщение с запросом оценки. Для этого нужно указать в запросе номер телефона клиента и его имя, чтобы бот узнал, на какой телефон отправить сообщение и как к нему обратиться. Пример такого сценария можете посмотреть в статье «Исходящий webhook Битрикс24».

Сейчас с блоком «Входящий webhook» можно связать только блоки «Отправка сообщения*» и «Условие». Мы работаем над расширением списка поддерживаемых блоков. 

Настройка блока «Входящий webhook»

1. Скопируйте ссылку из блока;

2. Подставьте в ссылку после токена нужные параметры. Параметры разделяются знаком &. 

Например: 

https://constructorbot.chatapp.online/api/request/get/?token=токен генерируется 
сам&chat_id=номер телефона клиента &id=идентификатор карточки;

 

Важно: в блок «Входящий webhook» нельзя добавлять системные переменные.

3. Создайте поля и впишите в них параметры, которые вы добавили в ссылку.

Если брать ссылку из примера в предыдущем пункте, то нужно создать 2 поля и вписать в первое «chat_id» а во второе «id»;

4. Добавьте блок «Отправка сообщения*»;

5. В «ChatID» введите {{chat_id}};

6. В «Линия» выберите линию, с которой будет отправляться сообщение;

7. В «Мессенджер» выберите мессенджер, из которого будет отправляться сообщение;

8. Введите название сценария;

9. Нажмите «Сохранить» и «Опубликовать»;

10. Теперь нужно перейти в сервис, который будет отправлять запрос, и настроить в нем исходящий webhook. Процесс настройки может отличаться в зависимости от сервиса. Для примера посмотрите статью «Исходящий webhook Битрикс24».

Блок «Входящий webhook» принимает как GET, так и POST запросы.

Получение параметров из тела запроса

1. Данные, которые передаются через webhook, могут быть в ссылке —  www.…/get/?token=…. В таком случае их нужно вписать в поля блока, как описано выше.

Важно: для корректного получения параметров из тела запроса, в ссылке должен быть только адрес токена www.…/get/?token=….

2. Также параметры могут приходить в теле запроса в формате .json. Тогда их не нужно вписывать в блок:

{
  "Email1": "...@gmail.com",
  "name_client": "test",
  "chat_id": "89999999999",
  "tranid": "test",
  "formid": "formtest",
  "utm_source": "google",
  "utm_medium": "cpc",
  "utm_campaign": "promo"
}

3. Чтобы получить данные из таких параметров, укажите их в боте в фигурных скобках. Например, если ввести в тексте сообщения {{Email1}}, то когда придет webhook, подставится значение ...@gmail.com.

Обратите внимание, что в конце передаваемого параметра "Email1" стоит цифра 1. Параметры в теле запроса должны отличаться от системных переменных которые уже есть в боте. Какие еще бывают системные переменные читайте в статье.

4. Некоторые сервисы передают webhook с вложенными параметрами. Это выглядит так:

{
  "payment": {
      "name": "Вася"
      "Email1": "...@gmail.com",
   }

}

В таком случае, чтобы получить имя клиента, мы напишем сначала параметр который содержит в себе параметр с именем — payment, а через точку укажем нужный параметр. Должно получиться так: {{payment.name}}.


5. Когда в вебхуке есть параметры в ссылке, бот принимает параметры из тела запроса. Если в ссылке и в теле запроса одинаковое название поля, то значение возьмется из тела запроса.
При получении POST-запроса бот смотрит параметры из ссылки и тела одновременно.

6. В некоторых случаях параметры содержат в себе вложенные списки. Тогда в одном параметре может оказаться 2 других параметра с одинаковым названием. В теле запроса список выделяется квадратными скобками, это будет выглядеть так:

"payment" : [
{
       "name": "Вася"
       "email1": "...@mail.ru"
}
{
       "name" : "Петя"
       "email1": "...@yandex.ru"
}
]

Как нам отличить друг от друга параметры name? Все очень просто! Каждый элемент в списке имеет свой порядковый номер. Отсчет начинается с 0. А значит параметр с именем “Вася” будет по счету — 0. В боте это будет указываться так:

payment[0].name — бот отправит “Вася”; 

payment[1].name — бот отправит “Петя”.

Элемент в формате json отделяется двумя фигурными скобками. Все что внутри будет считаться одним элементом, даже если он содержит несколько параметров.

Видеоурок

Если у вас остались вопросы, мы подготовили видеоурок по блоку входящий webhook.

Оставить заявку на услуги интегратора