Вебхук

Рабочий процесс: WebhookProfessional Edition+

Введение

Триггер «Вебхук» предоставляет URL, который может вызываться сторонними системами через HTTP-запросы. Когда происходит событие во внешней системе, она отправляет HTTP-запрос на этот URL и запускает выполнение рабочего процесса. Это подходит для уведомлений, инициируемых внешними системами, например обратных вызовов платежей, сообщений и т.д.

Создание рабочего процесса

При создании рабочего процесса выберите тип «Вебхук»:

Создание рабочего процесса «Вебхук»

Примечание

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

Настройка триггера

Настройка триггера «Вебхук»

Адрес вебхука

URL для триггера «Вебхук» автоматически генерируется системой и привязывается к этому рабочему процессу. Нажмите кнопку справа, чтобы скопировать его и вставить во внешнюю систему.

Поддерживается только HTTP-метод POST; другие методы вернут ошибку 405.

Безопасность

Сейчас поддерживается базовая HTTP-аутентификация. Можно включить эту опцию и задать имя пользователя и пароль. Укажите имя пользователя и пароль в URL вебхука в сторонней системе, чтобы реализовать аутентификацию вебхука (подробнее о стандарте: MDN: HTTP authentication).

Когда имя пользователя и пароль заданы, система проверяет, совпадают ли они в запросе. Если они не переданы или не совпадают, возвращается ошибка 401.

Разбор данных запроса

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

Разбор HTTP-запроса делится на три части:

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

    Заголовки запроса обычно являются простыми строковыми парами ключ-значение. Нужные поля заголовков можно настроить напрямую, например Date, X-Request-Id и т.д.

  2. Параметры запроса

    Параметры запроса — это query-параметры в URL, например параметр query в http://localhost:13000/api/webhook:trigger/1hfmkioou0d?query=1. Можно вставить полный пример URL или только часть с query-параметрами и нажать кнопку разбора для автоматического разбора пар ключ-значение.

    Разбор параметров запроса

    Автоматический разбор преобразует часть URL с параметрами в JSON-структуру и сгенерирует пути вроде query[0], query[0].a в соответствии с иерархией параметров. Имя пути можно вручную изменить, если оно не подходит, но обычно это не требуется. Псевдоним — отображаемое имя переменной при использовании, оно необязательно. Разбор также генерирует полный список параметров из примера; ненужные параметры можно удалить.

  3. Тело запроса

    Тело запроса — это часть Body HTTP-запроса. Сейчас поддерживаются только тела запроса с Content-Type, равным application/json. Можно напрямую настроить пути для разбора либо ввести JSON-пример и нажать кнопку разбора для автоматического разбора.

    Разбор тела запроса

    Автоматический разбор преобразует пары ключ-значение в JSON-структуре в пути. Например, {"a": 1, "b": {"c": 2}} даст пути a, b, b.c. Псевдоним — отображаемое имя переменной при использовании, оно необязательно. Разбор также генерирует полный список параметров из примера; ненужные параметры можно удалить.

Настройки ответа

Конфигурация ответа вебхука отличается для синхронного и асинхронного рабочего процесса. Для асинхронного рабочего процесса ответ настраивается прямо в триггере: при получении запроса вебхука система сразу возвращает настроенный ответ сторонней системе и затем выполняет рабочий процесс. Для синхронного рабочего процесса нужно добавить внутри потока узел «Ответ» и обрабатывать ответ по бизнес-требованиям (подробнее: узел «Ответ»).

Обычно ответ для асинхронно запущенного вебхука имеет код статуса 200 и тело ответа ok. При необходимости можно настроить собственные код статуса, заголовки и тело.

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

Узел «Ответ»

См. также: узел «Ответ»

Пример

В рабочем процессе с триггером «Вебхук» можно возвращать разные ответы в зависимости от бизнес-условий, как показано на рисунке ниже:

Пример рабочего процесса с вебхуком

Используйте узел «Условие», чтобы определить, выполнен ли определённый бизнес-статус. Если да — верните успешный ответ, иначе — ответ об ошибке.