iisy docs
Главная Открыть iisy
Конструктор

Переменные связывают шаги диалога

Как сохраняются данные чата, где работают шаблоны и как писать условия без лишнего синтаксиса.

Обновлено 27 июня 2026Графовый билдер iisy

Где хранятся данные

Переменные принадлежат конкретному чату. Значение, сохраненное для одного клиента, не появляется в диалогах других клиентов.

Они сохраняются между сообщениями и перезаписываются, когда сценарий записывает новое значение с тем же именем.

Готовые переменные

ИмяЗначение
last_messageПоследнее сообщение клиента или выбранное значение кнопки.
last_buttonТекст последней нажатой сценарной кнопки.
last_agent_messageПоследний текстовый ответ Agent-слота.
last_external_responseПолный последний ответ внешнего запроса.
last_external_statusHTTP-статус последнего внешнего запроса.
last_external_errorТехническая ошибка последнего внешнего запроса, если запрос не удалось выполнить.
channel_sourceКанал текущего чата: например telegram, max, vk, widget или debug.
external_idИдентификатор пользователя внутри конечного канала. В Telegram — Telegram ID, в других каналах — их внутренний ID пользователя.
external_nameИмя пользователя, полученное из канала.
external_surnameФамилия пользователя, если канал её передал.
external_usernameНикнейм пользователя в конечном канале.
contact_phoneТелефон, которым пользователь поделился через кнопку Telegram.
contact_nameПолное имя из отправленного контакта.
contact_first_nameИмя из отправленного контакта.
contact_last_nameФамилия из отправленного контакта.
contact_user_idTelegram ID владельца контакта, если Telegram его передал.
last_router_topicТема, выбранная слотом распознавания.
last_router_slot_idИдентификатор выбранной тематической ветки.
last_router_confidenceУверенность распознавания от 0 до 1.
last_router_reasonКороткое объяснение результата распознавания.
last_router_fallbackПризнак перехода в ветку «Не распознано».

Шаблоны {{ }}

Шаблоны работают в текстах, названиях кнопок, промптах Agent-слота и настройках внешнего запроса.

Здравствуйте, {{ name }}!
Ваш город: {{ city }}.
Заказ №{{ order_id }} находится в статусе «{{ order_status }}».

Слот памяти может сохранить простое значение или взять его из другой переменной:

name = {{ last_message }}
age = {{ last_message | integer }}
confirmed = true
tags = ["lead", "telegram"]

Вложенные поля объекта читаются через точку. Например, сообщение из JSON-ответа можно вывести как {{ last_external_response.message }}, если поле message находится в корне ответа. Для стабильной схемы API удобнее настроить извлечение нужного поля в отдельную переменную ресурса.

Если внешний сервис возвращает объект с вложенным телом, путь должен повторять реальную структуру ответа. Самый надежный способ — сначала вывести или проверить ответ в тесте ресурса, затем сохранить нужное поле в отдельную переменную.

Условия

В ветке условия пишется только выражение. Не добавляйте {{ }} и конструкцию {% if %}.

"ии" in last_message
city == "Москва"
age >= 18
(tariff == "pro" and confirmed) or "поддержка" in last_message
last_message is match("^\+?[0-9]{11}$")
true

Условия проверяются сверху вниз. Размещайте более точные варианты выше, а fallback true — последним.

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

ПроблемаКак исправить
В тексте видно пустое местоПроверьте, была ли переменная сохранена до использования.
Условие всегда пропускаетсяУберите {{ }} и проверьте кавычки вокруг текста.
Старое значение осталосьЗапишите новое значение или используйте другое имя для нового состояния.
Внешний ответ не появилсяПроверьте путь ответа и имя переменной в ресурсе внешнего запроса.
iisy · Документация конструктора ИИ-агентов и сценарных ботов