К содержанию
Trialix

Вебхуки сценариев и шаг «Код»

Как ваша система запускает сценарий 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