Как использовать ответы вебхуков в сценариях

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

Можно использовать как сам факт успешной доставки вебхука, так и конкретные значения из ответа.

Сценарий по статусу вызова

Пример задачи: клиент должен подтвердить учетную запись с помощью Flash Call, который вызывается через вебхук. Если вебхук успешно отправлен и сервис ответил 2хх (код успеха), то сценарий завершается. Если же сервис ответил ошибкой, то нужно отправить email с ссылкой подтверждения.

Настройка вебхука

Для создания вебхука следуйте инструкции.

Чтобы он мог принимать ответы, обязательны следующие шаги:

1. Добавьте параметр ${WebhookRequest.TransactionalId} в адрес, заголовок или тело запроса.

Снимок экрана 2023-06-08 в 16.56.20.png

2. Добавьте заголовок Accept:application/json

Заголовок можно указать в точке интеграции или задать в конкретном вебхуке.

Снимок экрана 2023-06-08 в 17.06.37.png

3. Включите обработку ответа с помощью настройки «Принимать ответы в формате JSON»:

Снимок экрана 2023-06-08 в 17.09.51.png

Настройка сценария

Чтобы использовать ответ вебхука, в сценарии должны быть:

1. Блок «Группа шагов» с отправкой корректно настроенного вебхука:

Снимок экрана 2023-06-08 в 17.26.00.png

При выборе подходящей механики появляется уведомление о возможности проверить ответ.

2. Блок «Условие» с проверкой по «Ответу вебхука»:

Снимок экрана 2023-06-08 в 17.26.59.png

  • Если сервис ответит на вызов HTTP-кодом 2xx, событие уйдет в ветку «Да».
    • В вебхуках с переменными также обязательно должны быть получены значения для всех переменных, даже если стоит проверка только на статус ответа.
  • Если ответ не будет получен в течение 30 секунд или в ответе придет код 5xx или 429, вебхук попробует отправиться ещё 3 раза с промежутком в 5 минут. После трех неудачных попыток отправки событие уйдет в ветку «Нет».
  • Если вернется ответ с кодами 4xx (кроме 429), либо вебхук не удастся сформировать из-за ошибок в шаблонизаторе, событие также уйдет в ветку «Нет».

3. Продолжения для веток по успешному и неуспешному вызову.

Снимок экрана 2023-06-08 в 17.31.19.png

Сценарий по данным из ответа

Пример задачи: сервис генерирует для клиентов уникальные промокоды. Нужно отправить телефон пользователя в данный сервис с помощью вебхука, получить для него промокод из ответа и записать его в карточку клиента.

Настройка вебхука

Для создания вебхука следуйте инструкции.

Чтобы он мог принимать ответы, обязательны следующие шаги:

1. Добавьте параметр ${WebhookRequest.TransactionalId} в адрес, заголовок или тело запроса.

Снимок экрана 2023-06-08 в 16.56.20 — копия.png

2. Добавьте заголовок Accept:application/json

Заголовок можно указать в точке интеграции или задать в конкретном вебхуке.

Снимок экрана 2023-06-08 в 17.06.37.png

3. Включите обработку ответа с помощью настройки «Принимать ответы в формате JSON»:

Снимок экрана 2023-06-08 в 17.09.51.png

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

Снимок экрана 2023-06-08 в 22.20.53.png

Корректность выражений можно проверить с помощью онлайн-сервисов, например https://jsonpath.com

Настройка сценария

Чтобы использовать ответ вебхука, в сценарии должны быть:

1. Блок «Группа шагов» с отправкой корректно настроенного вебхука:

Снимок экрана 2023-06-08 в 21.01.58.png

При выборе подходящей механики появляется уведомление о возможности проверить ответ.

2. Блок «Условие» с проверкой по «Ответу вебхука».

В условиях автоматически ставится проверка по успешной отправке:

  • Если сервис ответит на вызов вебхука HTTP-кодом 2xx и переменная из ответа пройдет проверку, событие уйдет в ветку «Да».
    • При наличии других переменных в вебхуке для них также обязательно должны быть получены значения, даже если они не проверяются в сценарии
  • Если в ответе придет код 5xx или 429, вебхук попробует отправиться ещё 3 раза с промежутком в 5 минут. После трех неудачных попыток отправки событие уйдет в ветку «Нет».
  • Если вернется ответ с кодами 4xx (кроме 429), либо вебхук не удастся сформировать из-за ошибок в шаблонизаторе, событие также уйдет в ветку «Нет».

2.1. Добавьте условие по переменной.

Опции проверки:

  • Есть значение — передано ли значение для переменной в ответе;

  • Равна / Содержит / Начинается с / Не равна / Не содержит — проверки на содержимое значения переменной.

    Снимок экрана 2023-06-08 в 21.50.49.png

3. Дальше переменную можно записать клиенту в карточку или вывести в рассылке без сохранения в системе. Данные функции доступны только в ветке «Да» после проверки ответа.

  • Чтобы прописать значение клиенту, в последующей «Группе шагов» добавьте редактирование данными из вебхука:

    Снимок экрана 2023-06-08 в 21.58.10.png

При необходимости создайте дополнительное поле для сохранения данных.
Запись ответа доступна только для полей типа «Строка».

  • Чтобы вывести значение в рассылке, используйте параметр вебхука в виде WebhookVariables.GetValue("Полное название параметра вебхука") или скопируйте его в сценарии:

    Снимок экрана 2023-06-08 в 21.58.49.png

Используйте в верстке рассылки как любой другой параметр шаблонизатора:

Снимок экрана 2023-06-08 в 22.00.15.png