Требуется одобрение
Узел, который останавливает выполнение, пока человек не одобрит или не отклонит его, и отправляет его дальше по ветке решения.
4 мин чтения
Требуется одобрение останавливает выполнение, пока по нему не решит человек. Одобрение отправляет выполнение дальше через Одобрено, а отклонение — или отсутствие решения в срок — через Отклонено.
- Узел
- Требуется одобрение
- Тип
require_approval- Категория
- Деньги
- Порты
- Одобрено
approvedподключение обязательно - Отклонено
rejectedподключение обязательно
- Одобрено
- Завершает путь
- Нет
Что делает узел
Когда выполнение доходит до узла, Slen заводит заявку на согласование с примечанием узла и сроком, до которого по ней нужно решить, и отправляет событие вебхука approval.requested. Выполнение останавливается на узле, и его статус становится waiting.
Запрос, который начал выполнение, сразу получает ответ 202. В ответе waiting_on называет узел, его type — approval, а resume_at — null: выполнение двигает решение, а не часы. Выполнение, начатое в асинхронном режиме, получило ответ раньше, и его статус становится waiting, когда оно доходит до узла.
Участник решает на странице Согласования или API-ключ решает через API — Согласования. В течение минуты после решения выполнение продолжается с узла:
одобрено — через Одобрено;
отклонено — через Отклонено;
не решено в срок — заявка становится
expired, и выполнение выходит через Отклонено, как если бы его отклонили.
Пока выполнение ждёт, ничего не зарезервировано. Вызов модели после узла оценивается и резервируется, когда выполнение до него доходит, — после решения, по бюджетам, какими они будут тогда.
Когда использовать
Чтобы человек одобрял трату до того, как она случится, — большую задачу, дорогую модель, запрос клиента, за которым вы присматриваете.
Поставьте перед узлом Условие, чтобы решения ждали только те запросы, которым оно нужно. Так делает шаблон Согласование запросов — Шаблоны AI-флоу.
Чтобы узнавать о заявке, не открывая консоль, подпишитесь на
approval.requestedиapproval.decided— Вебхуки.Чтобы задержать выполнение на заданное время без человека, используйте Очередь.
Заявка на странице Согласования может прийти и без этого узла — от узла AI-модель, чья политика перерасхода просит человека одобрить вызов, который оказался дороже своего холда. Отклонение или отсутствие решения в течение 24 часов отклоняет вызов с кодом overrun_stopped, и выполнение выходит из узла модели через Отказ. У нового узла модели политики перерасхода нет, а политика, которая у узла есть, практически не срабатывает, — Согласования, AI-модель.
Настройки
| Настройка | Для чего она |
|---|---|
expires_hours | Сколько времени у человека на решение, в целых часах. Не меньше 1 и по умолчанию не больше 71. Если никто не решил в срок, это считается отклонением. Узел без значения даёт 24 часа. |
note | Слова, которые читает вместе с заявкой тот, кто решает, — например, почему трата требует решения. Необязательно. Хранятся первые 500 символов. |
В конструкторе настройки — это поля Решить в течение (часов) и Примечание для принимающего решение. Новый узел даёт 24 часа и не имеет примечания.
Самый долгий срок решения по умолчанию — 71 час: выполнение может ждать в общей сложности 72 часа, и решение должно прийти раньше. Более долгий срок отклоняется при публикации флоу.
Порты
| Порт | Выполнение выходит через него, когда |
|---|---|
| Одобрено | Заявка одобрена. Обязательный |
| Отклонено | Заявка отклонена или никто не решил в срок. Обязательный |
Флоу, в котором любой из портов никуда не ведёт, не публикуется — Порты и ветвление.
Выход
После решения узел оставляет свой вердикт следующим узлам.
{
"status": "approved",
"reason": "Within the quarter plan",
"approval_id": "74438200973595136",
"decided_at": "2026-10-02T09:41:00+00:00"
}status— этоapproved,rejectedилиexpired. И отклонение, и истёкший срок выходят через Отклонено, поэтому Условие на этой ветке различает их поnodes.<key>.output.status, где<key>— ключ этого узла во флоу.reason— то, что человек написал вместе с решением, илиnull. У заявки с истёкшим сроком тамnot decided in time.Кто решил, в выходе нет. Его называет событие вебхука
approval.decided.
Ошибки
Своих ошибок узел не выдаёт. Его настройки проверяются при проверке флоу и при его публикации.
В API запись issues называет такую проверку в params.detail; её code — invalid_node_config.
| Проверка | Сообщение в конструкторе |
|---|---|
require_approval_invalid_expires_hours | Срок решения «{node}» должен быть целым числом часов, не меньше 1. |
require_approval_expires_too_late | Срок решения «{node}» дольше, чем хранится ожидающее выполнение: не больше {max} ч. |
До узла нельзя дойти от узла Резерв бюджета раньше, чем до модели, ни по одной связи, кроме ветки Отказ: у ожидающего выполнения ничего не зарезервировано. Такой флоу не публикуется — Финансовая цепочка.
По заявке, чьё выполнение закрыли раньше, чем кто-то решил, — после того как оно прождало слишком долго, — решить уже нельзя.
Пример
- Запрос — По умолчанию → Требуется одобрение
- Требуется одобрение — Одобрено → AI-модель
- Требуется одобрение — Отклонено → Отклонить запрос
- AI-модель — Успех → Вернуть ответ
Запрос получает ответ waiting, как только выполнение доходит до узла Требуется одобрение. После одобрения AI-модель резервирует деньги и вызывает модель, а Вернуть ответ завершает выполнение как completed. После отклонения или когда никто не решил в срок Отклонить запрос завершает его как rejected, и никаких денег не было зарезервировано.
См. также
Согласования — решить по заявке в консоли или через API.
Асинхронные запуски и ожидание — как приложение ждёт выполнения, которое ответило
waiting.Очередь — ждать заданное время вместо решения.
Собрано из openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d