Внешнее действие
Внешнее действие — это действие автоматизации, которое отправляет данные карточки на указанный URL.
Сейчас внешнее действие запускается по кнопке процесса: пользователь нажимает кнопку в карточке, а Noiro отправляет HTTP-запрос во внешний сервис.
Внешнее действие нужно, когда часть работы должна выполняться в системе клиента: ERP, биллинге, внутреннем сервисе согласования, скоринге, классификаторе или другой интеграции.
Что нужно настроить
Заголовок раздела «Что нужно настроить»В режиме Проектирование создайте или откройте кнопку процесса и добавьте действие Внешнее действие.
Укажите URL внешнего сервиса. Noiro будет отправлять на этот адрес данные карточки при нажатии кнопки.
После создания Noiro покажет signing secret. Сохраните его у себя сразу: повторно посмотреть секрет нельзя. Если секрет нужно заменить, откройте автоматизацию и нажмите Перегенерировать secret.
Единая подпись
Заголовок раздела «Единая подпись»И Noiro, и ваш сервис используют один и тот же способ подписи тела запроса:
X-Noiro-Timestamp: 2026-05-03T12:00:00ZX-Noiro-Signature: v1=<hmac_sha256(signing_secret, timestamp + "." + raw_body)>Content-Type: application/jsonX-Noiro-Signature переводится как подпись. Она нужна, чтобы принимающая сторона проверила, кто отправил запрос, и что тело запроса не было изменено.
Как Noiro отправляет запрос
Заголовок раздела «Как Noiro отправляет запрос»Когда пользователь нажимает кнопку, Noiro отправляет POST на настроенный URL и подписывает сырой body этим способом.
Endpoint должен быстро принять запрос и сразу вернуть:
HTTP/1.1 200 OKContent-Type: text/plain
OKПосле такого ответа Noiro считает, что внешний сервис принял запуск в обработку, и ждёт callback. Долгую работу нужно выполнять после ACK и возвращать результат отдельным callback.
При временных ошибках доставки Noiro делает несколько повторных попыток. Повторяются сетевые ошибки, 429 и 5xx. Для 429 Noiro использует заголовок Retry-After, если он передан. Ошибки 4xx, включая 408 Request Timeout, не повторяются: endpoint должен быстро принять запрос и вернуть 200 OK. Если после попыток запрос всё равно не принят, Noiro сам помечает запуск внешнего действия как неуспешный.
В теле запроса есть:
runId— идентификатор запуска внешнего действия;automationId— идентификатор автоматизации;callbackUrl— адрес, куда нужно вернуть результат;block— карточка, по которой нажали кнопку;customFieldValues— значения пользовательских полей карточки.
Как проверить подпись
Заголовок раздела «Как проверить подпись»На стороне вашего сервиса:
- Возьмите сырой body запроса без повторной сериализации.
- Возьмите значение
X-Noiro-Timestamp. - Соберите строку
timestamp + "." + raw_body. - Посчитайте
HMAC-SHA256с вашимsigning secret. - Сравните результат с частью после
v1=вX-Noiro-Signatureчерез constant-time compare.
Также стоит отклонять слишком старые timestamp, например старше пяти минут.
Как вернуть результат
Заголовок раздела «Как вернуть результат»В теле запроса Noiro передаёт callbackUrl. После обработки отправьте на него POST.
Callback подписывается так же, как запрос Noiro к вашему сервису. Noiro проверяет X-Noiro-Signature тем же signing secret.
X-Noiro-Timestamp: 2026-05-03T12:00:30ZX-Noiro-Signature: v1=<hmac_sha256(signing_secret, timestamp + "." + raw_body)>Content-Type: application/jsonТело callback:
{ "data": { "comment": "Клиент просит срочный ответ", "priority": "high" }, "fileIds": [ "018f0d1e-7d43-7c42-a6b5-2d4c7c2b2c31" ]}Callback принимает только данные результата. Статус запуска фиксирует Noiro: если подпись корректна и результат удалось применить к карточке, запуск становится успешным; если применить результат не удалось, Noiro помечает запуск как неуспешный.
Если внешний сервис должен прикрепить файлы, он передаёт только fileIds уже загруженных файлов. Callback не принимает binary/base64-контент и не скачивает файлы по внешним ссылкам.