Вебхуки сценариев и шаг «Код»
Как ваша система запускает сценарий Trialix запросом на адрес вебхука, как получить ответ сценария сразу и что может шаг «Код». Настройка сценария - «Сценарии».
Адреса
- Основной адрес:
https://api.trialix.ru/v1/hooks/s/<токен>. Токен выпускается в панели шага «Вебхук» и показывается один раз; в Trialix хранится только его хэш. Новый адрес заменяет прежний. - Тестовый адрес: тот же адрес с окончанием
/testили отдельный адрес, который показывается после «Слушать тестовый адрес». Принимает запросы 10 минут после включения; первое событие сохраняется образцом входа, сценарий не запускается. Пока прослушивание не включено, ответ - 404 с кодомnot_listening. - Метод - POST (или GET, если так выбрано в шаге). Тело - JSON или форма
application/x-www-form-urlencoded, до 256 КБ.
Проверка запроса
- Секрет в адресе: токен длинный и случайный, адрес не публикуйте.
- Секрет заголовка: если адрес выпущен кнопкой «Адрес и секрет заголовка», каждый запрос должен содержать
X-Trialix-Secret: <секрет>; без него - 401. Проверка одна и та же для основного и тестового адреса. - Повтор: заголовок
Idempotency-KeyилиX-Trialix-Idempotency-Key; без него ключ повтора - хэш тела. Повтор с тем же ключом в течение суток - 409 с номером прежнего запуска. - Частота: не больше 120 запросов в минуту на адрес, сверх - 429.
Сценарий видит запрос как {"body": …, "headers": …, "query": …}. Заголовки Authorization, Cookie, X-Trialix-Secret и адреса прокси в сценарий не передаются. Адреса из тела запроса Trialix не вызывает: запросы наружу делают только шаги «HTTP-запрос» и «Действие в системе» с проверкой адресов.
Ответ
| Режим шага | Код | Тело |
|---|---|---|
| Сразу (по умолчанию) | 202 | {"runId": "…"} |
| «Ответить из шага «Результат»», сценарий дошёл до «Результата» | 200 | результат шага «Результат» как JSON |
| то же, сценарий завершился ошибкой | 500 | {"error": {"code": "scenario_failed", "message": "Сценарий завершился с ошибкой"}, "runId": "…"} |
| то же, сценарий ждёт подтверждения человеком | 202 | {"runId": "…", "status": "waiting"} |
| то же, не успел за заданное время (1-30 с, по умолчанию 10) | 202 | {"runId": "…", "status": "running"} |
| сценарий не опубликован или адрес не найден | 404 | {"error": {…}} |
| квота запусков месяца исчерпана | 429 | {"error": {…}} |
Подробности ошибки в ответ не попадают - их видно в журнале запусков сценария. После 202 сценарий доработает сам; ваша система может не ждать.
Шаг «Код»
Код на JavaScript или Python исполняется в отдельном процессе без сети и без доступа к файлам:
- JavaScript - отдельный процесс Node.js с моделью разрешений (файлы, дочерние процессы, потоки и расширения запрещены) и изолированный контекст без
require,process,fetch, таймеров иeval. Память - 128 МБ. - Python - отдельный процесс в изолированном режиме: открытие файлов, сокеты, запуск процессов, функции ОС и загрузка модулей после старта запрещены, запись файлов и процессорное время ограничены, память - 256 МБ.
- У обоих: пустое окружение (нет адресов и доступов), предел времени 1-10 секунд с принудительным завершением, результат - JSON до 256 КБ, вывод - до 50 строк в журнале.
Код получает только поля «Вход» шага и возвращает результат; к данным компании, подключениям и моделям из кода доступа нет.
Обновлено 18.10.2026