Как использовать ответы вебхуков в сценариях
В сценариях можно не только вызывать вебхук, но и принимать ответ на запрос и продвигать клиента по цепочке в зависимости от полученного результата.
Можно использовать как сам факт успешной доставки вебхука, так и конкретные значения из ответа.
Сценарий по статусу вызова
Пример задачи: клиент должен подтвердить учетную запись с помощью Flash Call, который вызывается через вебхук. Если вебхук успешно отправлен и сервис ответил 2хх (код успеха), то сценарий завершается. Если же сервис ответил ошибкой, то нужно отправить email с ссылкой подтверждения.
Настройка вебхука
Для создания вебхука следуйте инструкции.
Чтобы он мог принимать ответы, обязательны следующие шаги:
1. Добавьте параметр ${WebhookRequest.TransactionalId}
в адрес, заголовок или тело запроса.
2. Добавьте заголовок Accept:application/json
Заголовок можно указать в точке интеграции или задать в конкретном вебхуке.
3. Включите обработку ответа с помощью настройки «Принимать ответы в формате JSON»:
Настройка сценария
Чтобы использовать ответ вебхука, в сценарии должны быть:
1. Блок «Группа шагов» с отправкой корректно настроенного вебхука:
При выборе подходящей механики появляется уведомление о возможности проверить ответ.
2. Блок «Условие» с проверкой по «Ответу вебхука»:
- Если сервис ответит на вызов HTTP-кодом 2xx, событие уйдет в ветку «Да».
- В вебхуках с переменными также обязательно должны быть получены значения для всех переменных, даже если стоит проверка только на статус ответа.
- Если ответ не будет получен в течение 30 секунд или в ответе придет код 5xx или 429, вебхук попробует отправиться ещё 3 раза с промежутком в 5 минут. После трех неудачных попыток отправки событие уйдет в ветку «Нет».
- Если вернется ответ с кодами 4xx (кроме 429), либо вебхук не удастся сформировать из-за ошибок в шаблонизаторе, событие также уйдет в ветку «Нет».
3. Продолжения для веток по успешному и неуспешному вызову.
Сценарий по данным из ответа
Пример задачи: сервис генерирует для клиентов уникальные промокоды. Нужно отправить телефон пользователя в данный сервис с помощью вебхука, получить для него промокод из ответа и записать его в карточку клиента.
Настройка вебхука
Для создания вебхука следуйте инструкции.
Чтобы он мог принимать ответы, обязательны следующие шаги:
1. Добавьте параметр ${WebhookRequest.TransactionalId}
в адрес, заголовок или тело запроса.
2. Добавьте заголовок Accept:application/json
Заголовок можно указать в точке интеграции или задать в конкретном вебхуке.
3. Включите обработку ответа с помощью настройки «Принимать ответы в формате JSON»:
3.1. Нажмите «Добавить переменную».
- Название — придумайте имя переменной, в которую будет записано значение из ответа вебхука.
- Полное название — автоматически составляется из префикса Webhooks, системного имени вебхука и заданного названия переменной. Именно полное название будет использоваться в сценарях для записи в карточку клиента и в рассылках для подстановки значения. Например, для переменной
code
полное название будетWebhooks.WebWebhookW.code
- Путь в теле ответа — откуда брать значение для переменной.
Как заполнить путь в теле ответа
Для этого нужно знать, как выглядит ответ от сервиса.
Например, возвращается следующий код:
{
"firstName": "Павел",
"promocode": {
"promocodeValue": "QWERTY",
"promocodeId": "1"
},
"subjects": [
"Art",
"History"
],
"subscriptions": [
{
"pointOfContact": "Email",
"isSubscribed": "true"
},
{
"pointOfContact": "SMS",
"isSubscribed": "false"
}
]
}
Путь к разным данным:
- невложенный параметр (
"Павел"
) — просто ключ (firstName
); - параметр в объекте (
"QWERTY"
) — верхнеуровневые объекты и название ключа через точку (promocode.promocodeValue
); - параметр в массиве (
"Art"
) — название массива и индекс элемента в квадратных скобках (subjects[0]
); - параметр в объекте массива (
"true"
) — название массива и индекс элемента в квадратных скобках, название ключа через точку (subscriptions[0].isSubscribed
).
Получается, для обращения к промокоду в ответе путь — promocode.promocodeValue
Корректность выражений можно проверить с помощью онлайн-сервисов, например https://jsonpath.com
Настройка сценария
Чтобы использовать ответ вебхука, в сценарии должны быть:
1. Блок «Группа шагов» с отправкой корректно настроенного вебхука:
При выборе подходящей механики появляется уведомление о возможности проверить ответ.
2. Блок «Условие» с проверкой по «Ответу вебхука».
В условиях автоматически ставится проверка по успешной отправке:
- Если сервис ответит на вызов вебхука HTTP-кодом 2xx и переменная из ответа пройдет проверку, событие уйдет в ветку «Да».
- При наличии других переменных в вебхуке для них также обязательно должны быть получены значения, даже если они не проверяются в сценарии
- Если в ответе придет код 5xx или 429, вебхук попробует отправиться ещё 3 раза с промежутком в 5 минут. После трех неудачных попыток отправки событие уйдет в ветку «Нет».
- Если вернется ответ с кодами 4xx (кроме 429), либо вебхук не удастся сформировать из-за ошибок в шаблонизаторе, событие также уйдет в ветку «Нет».
2.1. Добавьте условие по переменной.
Опции проверки:
-
Есть значение — передано ли значение для переменной в ответе;
-
Равна / Содержит / Начинается с / Не равна / Не содержит — проверки на содержимое значения переменной.
3. Дальше переменную можно записать клиенту в карточку или вывести в рассылке без сохранения в системе. Данные функции доступны только в ветке «Да» после проверки ответа.
-
Чтобы прописать значение клиенту, в последующей «Группе шагов» добавьте редактирование данными из вебхука:
При необходимости создайте дополнительное поле для сохранения данных.
Запись ответа доступна только для полей типа «Строка».
-
Чтобы вывести значение в рассылке, используйте параметр вебхука в виде
WebhookVariables.GetValue("Полное название параметра вебхука")
или скопируйте его в сценарии:
Используйте в верстке рассылки как любой другой параметр шаблонизатора: