Все ноды/Data/Values & State

Переменная

Объявляет переменную с именем, типом и начальным значением. Переменная может быть сессионной (живёт в рамках выполнения) или thread-переменной (сохраняется в БД между сообщениями). Подключается к VarSet для записи.

ПеременнаяS
Value

Тип в графе: var

Stateful

Как попробовать

Чтение переменной в ответе

Значение переменной приходит в шаблон через порт «Var».

Вход
ПеременнаяS
Шаблон
Выход
  • Исполнение + данные
  • Данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Переменная нужна, когда значение должно пережить шаг: счётчик обращений, выбранный язык, собранный по ходу список, флаг «уже поздоровались». Нода объявляет переменную — имя, тип и значение по умолчанию — и читает её. Запись делает соседняя нода Установить переменную; объявленные переменные видит и может менять также нода JavaScript-код.

Если значение не меняется, переменная не нужна — возьмите Константу.

Три области хранения

  • Session — живёт один запуск. Значение общее для всех ветвей этого запуска, включая вложенные под-воркфлоу.
  • Thread — сохраняется в базе и переживает сообщения одного диалога: следующий ход в том же чате или в той же теме Telegram прочитает записанное.
  • Call — не хранится вообще: каждое чтение возвращает значение по умолчанию, а запись игнорируется. Удобно, чтобы временно отключить сохранение, не разбирая граф.

Как это работает

Портов выполнения у ноды нет — это источник значения. В отличие от константы, переменная перечитывается при каждом обращении, поэтому нода, стоящая ниже «Установить переменную», получит уже новое значение.

Читать можно тремя способами: связью из выхода ноды в нужный порт потребителя, через порт «Var» шаблона (там значение доступно как {{ var }}) и через {{ variables.<имя> }} — этот способ работает только для области Session.

Частые ошибки

  • Два объявления одного имени — ошибка валидации. Граф с двумя Var-нодами, у которых совпадает имя, не пройдёт публикацию: одно имя — одна нода, читать её можно из скольких угодно мест.
  • Переменная ничего не запускает. Связь от неё не активирует получателя; шаг, у которого нет другого входящего триггера, просто не выполнится.
  • Thread без диалога — это один запуск. Значение привязано к диалогу; в разовом запуске (ручной прогон, вебхук без сессии) хранить его между запусками не к чему, и переменная живёт ровно до конца запуска.
  • {{ variables.<имя> }} до первого чтения пуст. Значение по умолчанию попадает в переменную, когда Var-ноду впервые прочитали. Если шаблон обращается к ней раньше, он отрендерит пустоту — надёжнее читать через порт.

Входы

Выходы

ПортПроводДанныеПримечания
ValueoutputДанныеdataobject

Настройки

ПолеТипПо умолчаниюОписание
Значение по умолчаниюdefault_valuestring""

Значение по умолчанию для переменной

Областьscopestringsession

Область переменной: session — живёт один запуск; thread — сохраняется в БД между сообщениями; call — не хранится, каждое чтение возвращает значение по умолчанию

Варианты: thread — Thread (сохраняется в БД), call — Call (не хранится, всегда значение по умолчанию), session — Session (на время выполнения)

Имя переменнойvar_namestringmy_var

Имя переменной

Типvar_typestringstring

Тип переменной

Варианты: string — String (строка), integer — Integer (целое), float — Float (дробное), boolean — Boolean (да/нет), json — JSON, csv — CSV (текст), dataframe — DataFrame (таблица)