Перейти к содержанию

Узел condition

Развилка с двумя выходами, решаемая CEL-выражением по фрейму.

{
  "id": "confident",
  "type": "condition",
  "condition": "vars.score > 0.7 && vars.topic != 'billing'",
  "then": "answer",
  "else": "escalate"
}

Условие и две дороги из него

  • Выражение вычисляется по текущему фрейму и приводится к булеву, так что пустая строка, 0 и пустой список уводят исполнение в else так же надёжно, как false.
  • then обязателен. else — нет.
  • Узел ничего не пишет во фрейм, он только выбирает. Чтобы протащить дальше вычисленное значение, запишите его стадией до развилки или через expose.
  • Событие condition_evaluated фиксирует решение: {"result": true, "next": "answer"}.

В редакторе переменные, которые читает выражение, становятся портами данных карточки — условие не выглядит на канвасе чёрным ящиком:

Условие в инспекторе

Когда дорога кончается

Если условие ложно, а else нет — идти некуда, и прогон просто заканчивается: terminal не достигнут, поэтому сессия возвращает result = null и ни одного артефакта.

Иногда это и требуется («дальше делать нечего»), но гораздо чаще это забытая ветка. Когда конец дороги задуман, скажите это через terminal — тогда результат говорит, какой именно это был конец.