Все ноды/Data/Values & State
Переменная
Объявляет переменную с именем, типом и начальным значением. Переменная может быть сессионной (живёт в рамках выполнения) или thread-переменной (сохраняется в БД между сообщениями). Подключается к VarSet для записи.
Тип в графе: var
Stateful
Как попробовать
Чтение переменной в ответе
Значение переменной приходит в шаблон через порт «Var».
- Исполнение + данные
- Данные
Запускается сразу
Как применять
Переменная нужна, когда значение должно пережить шаг: счётчик обращений, выбранный язык, собранный по ходу список, флаг «уже поздоровались». Нода объявляет переменную — имя, тип и значение по умолчанию — и читает её. Запись делает соседняя нода Установить переменную; объявленные переменные видит и может менять также нода JavaScript-код.
Если значение не меняется, переменная не нужна — возьмите Константу.
Три области хранения
- Session — живёт один запуск. Значение общее для всех ветвей этого запуска, включая вложенные под-воркфлоу.
- Thread — сохраняется в базе и переживает сообщения одного диалога: следующий ход в том же чате или в той же теме Telegram прочитает записанное.
- Call — не хранится вообще: каждое чтение возвращает значение по умолчанию, а запись игнорируется. Удобно, чтобы временно отключить сохранение, не разбирая граф.
Как это работает
Портов выполнения у ноды нет — это источник значения. В отличие от константы, переменная перечитывается при каждом обращении, поэтому нода, стоящая ниже «Установить переменную», получит уже новое значение.
Читать можно тремя способами: связью из выхода ноды в нужный порт потребителя, через порт
«Var» шаблона (там значение доступно как {{ var }}) и через {{ variables.<имя> }} — этот
способ работает только для области Session.
Частые ошибки
- Два объявления одного имени — ошибка валидации. Граф с двумя Var-нодами, у которых совпадает имя, не пройдёт публикацию: одно имя — одна нода, читать её можно из скольких угодно мест.
- Переменная ничего не запускает. Связь от неё не активирует получателя; шаг, у которого нет другого входящего триггера, просто не выполнится.
- Thread без диалога — это один запуск. Значение привязано к диалогу; в разовом запуске (ручной прогон, вебхук без сессии) хранить его между запусками не к чему, и переменная живёт ровно до конца запуска.
{{ variables.<имя> }}до первого чтения пуст. Значение по умолчанию попадает в переменную, когда Var-ноду впервые прочитали. Если шаблон обращается к ней раньше, он отрендерит пустоту — надёжнее читать через порт.
Входы
—
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Valueoutput | Данныеdata | object |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Значение по умолчаниюdefault_value | string | "" | Значение по умолчанию для переменной |
Областьscope | string | session | Область переменной: session — живёт один запуск; thread — сохраняется в БД между сообщениями; call — не хранится, каждое чтение возвращает значение по умолчанию Варианты: |
Имя переменнойvar_name | string | my_var | Имя переменной |
Типvar_type | string | string | Тип переменной Варианты: |