Как читать граф
Граф движется от стартового слота по связям. Обычные шаги идут последовательно, а роутеры создают несколько вариантов продолжения.
| Элемент | Значение |
|---|---|
| Карточка | Слот — одно действие сценария. |
| Линия | Переход к следующему действию. |
| Кнопка + | Добавление следующего шага в конкретной точке. |
| Номер # | Уникальный номер слота внутри агента. |
| Обучить | Проверка черновика и обновление дебаг-виджета. |
| Опубликовать | Обновление Telegram, MAX, ВКонтакте, виджетов сайта и таймеров. |
Связи и ветки
Обычный слот имеет одно продолжение. Условие, кнопочное меню и распознавание тем создают несколько веток. У каждого обычного слота, кроме старта, должен оставаться один прямой вход.
Fallback
Fallback — запасная ветка условия, кнопочного меню или распознавания тем. Она используется, если ни один вариант не подошёл или клиент ввёл текст вместо кнопки.
Jump
Слот перехода помогает вернуть несколько веток в одну существующую точку. Вместо нескольких прямых входов создайте переходы к общему слоту: так структура остаётся однозначной.
Если нужна петля, делайте её через переход. Так iisy понимает, что это осознанный возврат, а не случайно замкнутая линия.
Сервисные ветки
От старта могут отходить специальные ветки, которые не являются основным началом сценария: таймеры и перехваты. Они живут рядом с основным маршрутом и запускаются только при своём событии.
| Ветка | Когда запускается | Для чего |
|---|---|---|
| Таймер | Когда чат уже остановился и ждёт клиента заданное время. | Напоминания и отложенные действия. |
| Перехват | Когда новое сообщение клиента точно совпало с командой. | Глобальные команды вроде /start, /menu, /help. |
Если у сервисного слота нет следующего шага, он не влияет на сценарий: таймеру или перехвату нужен явный выход в обычную ветку графа.
Где граф останавливается
Сценарий выполняется подряд, пока не встретит шаг, который ожидает клиента.
| Слот | Останавливает выполнение | Как продолжается |
|---|---|---|
| Ожидание | Да | После следующего сообщения клиента. |
| Кнопочное меню | Да | После кнопки или текстового ввода. |
| Текст | Нет | Сразу переходит дальше. |
| Условие | Нет | Сразу выбирает подходящую ветку. |
| Внешний запрос | Нет | После ответа внешнего сервиса. |
| ИИ-агент с продолжением | Нет | После ответа и, при необходимости, вызова инструмента. |
| Финальный ИИ-агент | Да | Если Agent отправляет ответ в чат и не имеет следующего слота. |
| Таймер | Нет | Запускает отдельную ветку, пока чат находится в стоп-слоте. |
Конец ветки и циклы
Если выполняемая ветка дошла до конца и у последнего слота нет следующей связи, iisy возвращает граф к старту. Это удобно для коротких веток: например, сохранить значение, ответить клиенту и снова ждать основное меню.
При публикации iisy заранее проходит граф без реальных LLM-вызовов и внешних запросов. Проверка учитывает переменные, которые меняют слоты памяти, и смотрит, может ли сценарий дойти до стоп-слота.
Как сохранять структуру понятной
- Давайте слотам названия по действию: «Спросить телефон», «Проверить город», «Отправить заявку».
- Возвращайте похожие ветки в общий поток через переход.
- Для повторов меняйте состояние через слот памяти и выводите сценарий к стоп-слоту.
- Не размещайте в одном графе несколько несвязанных клиентских процессов без необходимости.
- Проверяйте каждую ветку в дебаг-виджете.
- Добавляйте запасной маршрут к пользовательским развилкам до публикации.