enВойти в Senler

Выполнение шага

Выберите момент продолжения автоматизации и передайте результат выполнения из приложения.

Откройте созданный шаг приложения.

Настройте продолжение автоматизации

Теперь определите, что произойдёт после выполнения шага. Откройте вкладку «Выполнение».

Сначала в блоке «Как продолжить автоматизацию» выберите выходы шага:

  • «Один выход „Далее“» — у узла будет один выход, а webhook не должен возвращать branch;
  • «Фиксированные ветки» — разработчик заранее задаёт от 2 до 20 веток, их постоянные ключи и названия на двух языках; webhook возвращает ключ выбранной ветки в branch;
  • «Ветки после настройки» — собственная встроенная форма создаёт ветки отдельно для каждого настроенного узла; webhook возвращает один из сохранённых ключей.

После первой публикации способ продолжения изменить нельзя. У опубликованной фиксированной ветки нельзя менять технический ключ или передавать его другой ветке.

Затем в блоке «Когда продолжить автоматизацию» укажите, когда можно переходить к выбранному выходу:

  • «Сразу после отправки webhook» — Senler ставит webhook в очередь и сразу идёт по выходу «Далее». Ответ приложения и поля результата не используются. Этот вариант подходит для команды, итог которой не влияет на дальнейшую схему;
  • «После ответа webhook» — Senler ждёт HTTP-ответ до 60 секунд и берёт из него ветку и результат. При ошибке или таймауте повтор шага контролирует Runner;
  • «После запроса от приложения» — webhook только запускает долгую операцию. Вместе с запросом приложение получает одноразовые URL и токен завершения, а затем отдельным запросом возвращает результат в течение 7 дней.

Немедленный режим совместим только с выходом «Далее» и шагом без полей результата. Для веток или данных результата выберите ожидание ответа webhook либо отдельного запроса приложения.

Шаги автоматизаций. Отмеченные элементы: 1. вкладку «Выполнение»; 2. «Как продолжить автоматизацию»; 3. «Когда продолжить автоматизацию»
1. вкладку «Выполнение» · 2. «Как продолжить автоматизацию» · 3. «Когда продолжить автоматизацию»

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

Фиксированные ветки шага автоматизации. Отмеченные элементы: 1. «Фиксированные ветки»; 2. «Добавить ветку»; 3. ключ ветки; 4. название на русском; 5. название на английском; 6. Удалить ветку
1. «Фиксированные ветки» · 2. «Добавить ветку» · 3. ключ ветки · 4. название на русском · 5. название на английском · 6. Удалить ветку

Если выбранные режимы несовместимы, форма покажет сообщение с объяснением и не применит выбор. «Понятно» закрывает это сообщение; настройки нужно исправить отдельно.

Шаги автоматизаций. 1. сообщение с объяснением
1. сообщение с объяснением

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

Обработайте webhook

При выполнении шага Senler отправляет на указанный URL POST-запрос. В режимах «Сразу после отправки webhook» и «После запроса от приложения» доставка ставится в очередь; в режиме «После ответа webhook» Senler удерживает запрос до ответа, но не более 60 секунд.

{
  "event_id": "event-id",
  "idempotency_key": "automation-task-id",
  "event_type": "automation_step",
  "timestamp": "2026-08-20T08:00:00.000Z",
  "app_id": "app-id",
  "installation_id": "installation-id",
  "project_id": "project-id",
  "automation_id": "automation-id",
  "run_id": "run-id",
  "task_id": "task-id",
  "node_id": "node-id",
  "lead_id": null,
  "dialog_id": null,
  "channel_id": null,
  "is_test": false,
  "channel_type": null,
  "platform_user_id": null,
  "step_id": "step-id",
  "step_name": "create_deal",
  "parameters": {
    "amount": 1500
  },
  "configuration": {
    "pipeline_id": "sales"
  }
}

is_test равен true, когда шаг выполняется в тестовом диалоге редактора. В таком запуске поля канала и платформенного пользователя могут быть null; не записывайте тестовые данные как боевые. Поля контекста лида и диалога также могут быть null, особенно в фоновой автоматизации. Запрос подписывается общим секретом приложения по правилам webhook приложения. Проверяйте подпись и допустимый возраст запроса до обработки данных.

В режиме «После ответа webhook» ответ должен быть JSON-объектом. Для шага с ветками верните branch, а объявленные данные конструктора поместите в result:

{
  "branch": "created",
  "result": {
    "deal_id": "deal-42"
  }
}

Для одного выхода не возвращайте branch. Пустое тело допустимо, только если шагу не нужны ветка и обязательные поля результата. Невалидный JSON, неизвестная ветка, неправильный тип результата или ошибка webhook завершают шаг ошибкой.

В режиме «Сразу после отправки webhook» Senler не читает ответ: процесс уже продолжился через выход «Далее».

В режиме «После запроса от приложения» исходный webhook дополнительно содержит объект completion:

{
  "method": "PUT",
  "url": "https://api.senler.io/api/automation-step-executions/task-id/completion",
  "token": "one-time-execution-token",
  "expires_at": "2026-08-27T08:00:00.000Z"
}

После завершения долгой операции отправьте PUT на completion.url, передайте токен как Authorization: Bearer <completion.token> и укажите успешный результат:

{
  "status": "succeeded",
  "branch": "created",
  "result": {
    "deal_id": "deal-42"
  }
}

Для неуспешного завершения передайте status: "failed", стабильный error_code и безопасный error_message. Успешно принятый запрос возвращает { "accepted": true }. URL и токен относятся только к одному выполнению и перестают действовать после срока из expires_at; не сохраняйте токен как общий секрет приложения.

Доставка или задача могут выполняться повторно, поэтому внешнее действие должно быть идемпотентным. Используйте idempotency_key из исходного webhook, чтобы повтор не создал дубликат во внешней системе.