Отправить через вебхук

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

Полученный в результате ответ от обработчика может быть помещён в переменную, и использован внутри бота. Данная возможность предназначена для опытных специалистов, однако она открывает невероятно широкие возможности для твоих ботов.

Параметры вебхука

  • URL-адрес обработчика - название говорит само за себя :) На данный адрес будет отправлен запрос.

  • Отправить запрос методом - один из шести методов (GET, POST, JSON POST, PUT, PATCH, DELETE), которым будет отправлен запрос. Назначения методов мы разберем немного позже.

  • Сохранить результат - здесь можно выбрать переменную, в которую будет помещен результат выполнения запроса.

  • Заголовки запроса

  • Параметры запроса

Методы запроса

Сейчас будет немного технической информации, но не стоит её пугаться. Ты сталкиваешься с этим каждый день, и даже сейчас с этим работаешь :)

Сервисы и платформы общаются между собой через протокол HTTP. Это один из протоколов передачи информации в сети интернет.

Метод указывает какое конкретное действие нужно сделать с ресурсом.

Самые популярные методы:

Метод "GET" - Используется для получения информации. На эту страничку ты попал именно этим методом.

Метод "POST" - Используется для передачи информации в обработчик. Например, отправка формы с контактными данными.

Метод "JSON POST" - То же самое, что и метод POST, только передается в формате JSON.

Редко встречающиеся методы:

Методы "PATCH" и "PUT" - используются для обновления уже созданного ресурса на сервере.

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

А в PUT содержится новая версия ресурса целиком.

Метод "DELETE" - Говорит серверу о необходимости удалить данный ресурс.

Как мне выбрать, какой метод использовать?

Это зависит от того, интеграцию с чем нужно сделать. Если это онлайн-платформа, например, Bitrix24 или AmoCRM - метод, которым нужно отправлять данные будет описан в документации к ней.

Если ты хочешь отправлять запрос на свой скрипт - ответ на данный вопрос тебе даст программист твоего проекта.

А если программиста нет, и всё это слишком сложно для тебя - напиши нам в техподдержку, мы поможем реализовать твою задачу :)

Заголовки запроса

Здесь всё просто, слева - название заголовка, справа - значение, которое необходимо передать в него :)

Тело запроса

Здесь указываются параметры, которые вам необходимо передать в скрипт-обработчик.

Слева указывается название параметра, справа - его значение.

Так же можно подставлять переменные. Для этого используется такая же конструкция, как при подстановке переменной в блоке сообщения. ({ имя_переменной })

Так же вы можете использовать зарезервированные переменные.

Передача многомерных массивов

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

Это звучит слишком замудрённо, но на самом деле это просто.

Давай рассмотрим на примере.

Если ты хочешь создать массив вида

[
  "user" => [
    "name" => имя_подписчика,
    "last_name" => фамилия_подписчика,
  ],
  "group" [
    "id" => ид_группы,
    "channel_name" => название_группы
  ]
]

используй следующую запись в блоке "Действие":

Сохранение переменной

Если обработчик вернул не JSON объект - результат будет помещён в переменную как простой текст.

В случае, если обработчик вернул в ответ - JSON - он будет сохранён в переменную как объект.

Объект позволяет в дальнейшем обращаться к вложенным параметрам. Рассмотрим пример.

Ответ сервера:

{
  promo: {
    code: "ABC",
    percent: 15,
  }
}

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

Рассмотрим на примере.

Допустим, результат запроса сохранён в переменную "result".

Чтобы получить значение поля "code", мы используем следующую запись:

{ignore}

({result.promo.code}) - в результате выполнения этой инструкции будет выведена строка "ABC".

{/ignore}

Typecast в webhooks

Если нужно преобразовать данные при отправке данных, можно использовать typecast

(bool) - преобразует значение в логическое true/false

Пример:

(bool) true

(int) - преобразует значение в числовое

Пример:

(int) 123

Что, если не удалось выполнить вебхук?

В случае, если при выполнении запроса произошла ошибка (сервер вернул ошибку 4xx или 5xx), платформа ещё несколько раз постарается отправить запрос.

Промежутки времени, через которые вебхук будет отправлен повторно:

  • Первая попытка - 5 секунд

  • Вторая попытка - 30 секунд

  • Третья попытка - 1 минута

  • Четвертая попытка - 30 минут

  • Пятая попытка - 2 часа

В случае, если попытки кончились - выполнения сценария приостанавливается.

Остались вопросы?

Last updated