Входящий Webhook
Webhook — это механизм автоматического оповещения одной системы о событиях в другой. Например, когда в Битрикс24 появляется новый клиент, webhook отправляет об этом данные в ChatApp -- запускается нужный сценарий: например, система автоматические отправляет пользователю приветственное сообщение. Блок «Входящий webhook» в ChatApp используют в качестве стартового блока в сценарии принятия запроса. Например, чтобы принимать запросы из Битрикс24 -- как только информация о клиенте обновится, вебхук запустит нужный сценарий в ChatApp. Как это работает Для корректной работы блока необходимо заполнить его поля параметрами. Параметры в вебхуке — какие данные вы хотите получать из других систем для работы вашего бота. Интеграция работает в три этапа: 1. Вебхук передаёт запрос. 2. Автоматически создаются локальные переменные. 3. Значения полученных в ответе на запрос параметров сохраняются в переменные, которые можно использовать в сценариях. Запрос — специальная сгенерированная системой ссылка внизу блока. Она нужна для вызова сценария принятия запроса из сторонних сервисов. Это и есть вебхук, который используется для передачи данных в ChatApp.
Нажмите на кнопку «Добавить поле» для добавления нужного параметра.
Настройка блока «Входящий webhook»
1. Добавьте блок «Входящий webhook» на рабочую область в Редакторе сценариев.
2. Введите название сценария и сохраните его. Если сценарий не сохранен, работать с переменными не получится.
3. Создайте поля и впишите в них параметры, которые нужно передать. Например, параметры chat_id — телефон клиента и id — идентификатор карточки. Автоматически создаются локальные переменные с такими же названиями.
| Важно: в блок «Входящий webhook» нельзя добавлять системные переменные. | |
/?token= -- токен генерируется сам
&chat_id= -- номер телефона клиента
&id= -- идентификатор карточки
5. Добавьте блок «Отправка сообщения*». 6. В «ChatID» введем пременную {{chat_id}}; 7. В поле «Линия» выберите линию, с которой будет отправляться сообщение, в поле «Мессенджер» выберите канал, по которому отправится сообщение.
8. Введите текст отправляемого сообщения, прикрепите эмодзи,
добавьте константу или переменную,
или результат работы блоков.
9. Сохраните ваш сценарий.
10. Перейдите в сервис, который будет отправлять запрос, и настройте в нем исходящий webhook. Процесс настройки может отличаться в зависимости от сервиса.
Получение параметров из тела запроса
1. Параметры, которые передаются через webhook, могут быть в ссылке — 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"
}
Чтобы получить данные из таких параметров, укажите их в боте в фигурных скобках. Например, если ввести в тексте сообщения {{Email1}}, то когда придет webhook, подставится значение ...@gmail.com.| Важно: имена передаваемых параметров в теле запроса должны отличаться от системных переменных, которые уже есть в боте. В примере в конце передаваемого параметра "Email1" стоит цифра 1. | |
| Важно: для корректного получения параметров из тела запроса, в ссылке должен быть только адрес токена www.…/get/?token=…. | |
{
"payment": {
"name": "Вася"
"Email1": "...@gmail.com",
}
}
В таком случае, чтобы получить имя клиента, укажите параметр, который содержит в себе параметр с именем — payment, а через точку укажите нужный параметр. Должно получиться так: {{payment.name}}.
4. Когда в вебхуке есть параметры в ссылке, бот принимает параметры из тела запроса. Если в ссылке и в теле запроса одинаковое название поля, то значение возьмется из тела запроса.
При получении POST-запроса бот смотрит параметры из ссылки и тела одновременно.
5. В некоторых случаях параметры содержат в себе вложенные списки. Тогда в одном параметре может оказаться 2 других параметра с одинаковым названием. В теле запроса список выделяется квадратными скобками, это будет выглядеть так:
"payment" : [ { "name": "Вася" "email1": "...@mail.ru" } { "name" : "Петя" "email1": "...@yandex.ru" } ]
Как отличить друг от друга одинаковые параметры name? Каждый элемент в списке имеет свой порядковый номер. Отсчет начинается с 0. Значит, параметр с именем “Вася” будет по счету — 0. В боте это будет указываться так:payment[0].name — бот отправит “Вася”;
payment[1].name — бот отправит “Петя”.
| Внимание: элемент в формате json отделяется двумя фигурными скобками. Все что внутри будет считаться одним элементом, даже если он содержит несколько параметров. | |
Возврат результатов блоков
С помощью блока «Входящий вебхук» также можно вернуть результаты работы блоков в теле ответа на запрос. Чтобы блок присылал ответ, нажмите на значок подсказки i в левом нижнем углу блока, скопируйте ссылку и используйте в нужном сервисе вместо стандартной ссылки запроса.