Skip to content

Состояние процесса ​

State хранит этап диалога или процесса между запусками n8n. Например, бот может помнить, что у одного пользователя он ждёт имя, а у другого — подтверждение.

Вместо таблицы и большого набора If workflow отправляет событие в state_transition и получает:

  • предыдущее и новое состояние;
  • сохранённый context;
  • номер версии;
  • список effects, которые нужно выполнить дальше.

Повтор одного event_id безопасен: переход не выполнится второй раз. Состояния изолированы по workspace, machine и subject.

Формат machine ​

Machine — это JSON без исполняемого кода. Переходы лежат в states, а assign обновляет context. Значение {"$path": "event.payload.text"} копирует данные из события; это не строковый шаблон.

json
{
  "initial": "waiting_name",
  "context": {},
  "states": {
    "waiting_name": {
      "on": {
        "text_received": {
          "target": "confirming",
          "guard": {
            "path": "event.payload.text",
            "op": "ne",
            "value": ""
          },
          "assign": {
            "name": {"$path": "event.payload.text"}
          },
          "effects": [
            {
              "type": "show_confirmation",
              "name": {"$path": "event.payload.text"}
            }
          ]
        }
      }
    },
    "confirming": {
      "on": {
        "confirm": {"target": "done"},
        "edit": {"target": "waiting_name"}
      }
    },
    "done": {"type": "final"}
  }
}

Пути начинаются с event.* или context.*. Guards поддерживают all, any, not и операции eq, ne, exists, in, gt, gte, lt, lte. Любая логика, которая вызывает API или connector, остаётся в n8n: machine только возвращает массив effects.

Ответ transition ​

state_transition возвращает previous_state, state, context, effects, transitioned, version и definition_version. Форма ответа и пример также доступны агенту через automation_describe_action.

В dry-run используется отдельная симуляция: переход вычисляется на текущем состоянии, но instance и history в базе не изменяются.

В n8n ​

Используйте:

  • Life OS Trigger для входящего события;
  • Life OS Action для перехода состояния и внешних действий;
  • обычный Switch для маршрутизации возвращённых effects.

Агент сам создаёт machine, action bindings и event subscription. Ключи Telegram, CRM и других систем в workflow не помещаются.

Документация Life OS