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

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

Адрес вебхука
URL для триггера «Вебхук» автоматически генерируется системой и привязывается к этому рабочему процессу. Нажмите кнопку справа, чтобы скопировать его и вставить во внешнюю систему.
Поддерживается только HTTP-метод POST; другие методы вернут ошибку 405.
Безопасность
Сейчас поддерживается базовая HTTP-аутентификация. Можно включить эту опцию и задать имя пользователя и пароль. Укажите имя пользователя и пароль в URL вебхука в сторонней системе, чтобы реализовать аутентификацию вебхука (подробнее о стандарте: MDN: HTTP authentication).
Когда имя пользователя и пароль заданы, система проверяет, совпадают ли они в запросе. Если они не переданы или не совпадают, возвращается ошибка 401.
Разбор данных запроса
Когда внешняя система вызывает вебхук, данные в запросе нужно разобрать, прежде чем использовать их в рабочем процессе. После разбора они становятся переменными триггера, на которые можно ссылаться в последующих узлах.
Разбор HTTP-запроса делится на три части:
-
Заголовки запроса
Заголовки запроса обычно являются простыми строковыми парами ключ-значение. Нужные поля заголовков можно настроить напрямую, например
Date,X-Request-Idи т.д. -
Параметры запроса
Параметры запроса — это query-параметры в URL, например параметр
queryвhttp://localhost:13000/api/webhook:trigger/1hfmkioou0d?query=1. Можно вставить полный пример URL или только часть с query-параметрами и нажать кнопку разбора для автоматического разбора пар ключ-значение.
Автоматический разбор преобразует часть URL с параметрами в JSON-структуру и сгенерирует пути вроде
query[0],query[0].aв соответствии с иерархией параметров. Имя пути можно вручную изменить, если оно не подходит, но обычно это не требуется. Псевдоним — отображаемое имя переменной при использовании, оно необязательно. Разбор также генерирует полный список параметров из примера; ненужные параметры можно удалить. -
Тело запроса
Тело запроса — это часть Body HTTP-запроса. Сейчас поддерживаются только тела запроса с
Content-Type, равнымapplication/json. Можно напрямую настроить пути для разбора либо ввести JSON-пример и нажать кнопку разбора для автоматического разбора.
Автоматический разбор преобразует пары ключ-значение в JSON-структуре в пути. Например,
{"a": 1, "b": {"c": 2}}даст путиa,b,b.c. Псевдоним — отображаемое имя переменной при использовании, оно необязательно. Разбор также генерирует полный список параметров из примера; ненужные параметры можно удалить.
Настройки ответа
Конфигурация ответа вебхука отличается для синхронного и асинхронного рабочего процесса. Для асинхронного рабочего процесса ответ настраивается прямо в триггере: при получении запроса вебхука система сразу возвращает настроенный ответ сторонней системе и затем выполняет рабочий процесс. Для синхронного рабочего процесса нужно добавить внутри потока узел «Ответ» и обрабатывать ответ по бизнес-требованиям (подробнее: узел «Ответ»).
Обычно ответ для асинхронно запущенного вебхука имеет код статуса 200 и тело ответа ok. При необходимости можно настроить собственные код статуса, заголовки и тело.

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

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

