Подсценарии (дочерние сценарии)
Подсценарии позволяют разбить сложный бот на отдельные логические модули. Основной сценарий вызывает подсценарий, пользователь проходит его, а затем возвращается обратно в основной сценарий.
Когда использовать
- Переиспользуемые блоки: форма сбора контакта, опрос, оплата — которые вызываются из нескольких мест.
- Длинные сценарии, которые удобнее редактировать по частям.
- Модульная архитектура бота.
Создание подсценария
- Откройте переключатель сценариев (название текущего сценария в шапке редактора).
- Наведите курсор на нужный основной сценарий — появится иконка + (Создать подсценарий).
- Нажмите +. Новый подсценарий появится в списке с отступом под родительским.
- Нажмите на подсценарий, чтобы открыть его в редакторе и настроить.
Важно: подсценарий необходимо опубликовать отдельно, нажав «Опубликовать» внутри него. Публикация основного сценария не затрагивает подсценарии автоматически.
Быстрое копирование команд в подсценарий
Через контекстное меню на канве можно выбрать действие «Копировать в дочерний сценарий». Оно создаёт новый дочерний сценарий и переносит туда выделенные узлы.
- Копируются только подходящие для подсценария узлы: например, обычные команды и фреймы с командами внутри.
- Узлы «Триггер» и «Автосообщение» при таком переносе автоматически пропускаются.
- Стартовая нода в новом подсценарии сохраняется автоматически. Если её по какой-то причине не было, редактор создаст её сам.
- После копирования старт нового подсценария автоматически привязывается к первой перенесённой команде, если связь ещё не была настроена.
- Если вместе с командами выбран фрейм, он тоже переносится в дочерний сценарий вместе с попавшими внутрь командами.
Вызов подсценария из основного сценария
В любой команде основного сценария добавьте кнопку (инлайн или обычную) с действием 🔀 Вызвать подсценарий:
| Поле | Описание |
|---|---|
| Подсценарий | Выберите нужный подсценарий из списка. |
| Команда возврата | (Опционально) Команда в этом (основном) сценарии, к которой бот вернётся после выхода из подсценария. Если не указана, бот останется на старте подсценария. |
При нажатии кнопки бот:
- Сохраняет текущее состояние.
- Загружает подсценарий и переходит к его стартовой команде.
Дополнительные опции кнопки «Вызвать подсценарий»
| Опция | Описание |
|---|---|
| Передавать переменные | Перед входом в подсценарий записывает указанные пары ключ/значение в переменные пользователя. Позволяет передать контекст из основного сценария в подсценарий (например, идентификатор выбранного товара). |
| Обновить текущее сообщение | После начала подсценария вместо нового сообщения бот редактирует то сообщение, из которого была нажата кнопка. |
Возврат в основной сценарий
В подсценарии добавьте кнопку с действием ↩️ Вернуться в основной сценарий.
Поле Команда возврата заполняется автоматически — оно берётся из кнопки «Вызвать подсценарий» в основном сценарии. Изменять его вручную не нужно в большинстве случаев.
Если пользователь находится внутри подсценария и вручную отправляет команду боту, конструктор автоматически выводит его из подсценария обратно в родительский сценарий и уже там обрабатывает эту команду.
При нажатии кнопки бот:
- Выходит из подсценария.
- Загружает основной сценарий и переходит к указанной команде возврата.
Дополнительные опции кнопки «Вернуться в основной сценарий»
| Опция | Описание |
|---|---|
| Передавать переменные | Перед возвратом записывает указанные пары ключ/значение в переменные пользователя. Удобно для передачи результата работы подсценария обратно в основной сценарий. |
| Обновить текущее сообщение | После возврата вместо нового сообщения бот редактирует то сообщение, из которого была нажата кнопка возврата. |
Важные ограничения
- Глубина вложенности: только 1 уровень (подсценарий внутри подсценария не поддерживается).
- Переменные: переменные пользователя общие для основного и дочернего сценария.
- Команды меню Telegram: в подсценарии недоступна опция «Показывать в меню» — команды меню принадлежат только основному сценарию.
- Публикация: каждый подсценарий публикуется отдельно. Если подсценарий не опубликован, кнопка вызова не сработает.
- Меню Telegram при публикации: публикация подсценария не изменяет и не очищает команды меню бота. Меню пересобирается только при публикации основного сценария.
Пример структуры
📋 Основной сценарий
└ 📋 Сбор контакта ← подсценарий
└ 📋 Оплата ← подсценарий
В основном сценарии кнопка «Оставить контакт» вызывает подсценарий «Сбор контакта». После того как пользователь заполнил форму, кнопка «Готово» в подсценарии возвращает его к команде «Спасибо» в основном сценарии.
Удаление сценария
Удалить сценарий можно прямо из переключателя сценариев в шапке редактора.
- Откройте переключатель сценариев.
- В нижней части выпадающего меню (под пунктом «Создать новый») нажмите 🗑 Удалить сценарий.
- В появившемся диалоговом окне подтвердите удаление.
Что удаляется
- Сам сценарий со всеми его нодами, блоками и связями.
- Все подсценарии этого сценария (если удаляется основной сценарий).
- История версий (снапшоты) сценария и его подсценариев.
- Состояния пользователей, которые в момент удаления находились внутри сценария.
Опубликованные данные удаляются вместе с черновиком — операция необратима.
Ограничения
- Если у бота остался только один сценарий, кнопка «Удалить сценарий» не отображается — последний сценарий удалить нельзя.
- При удалении текущего сценария редактор автоматически переключится:
- на следующий по списку основной сценарий — если удалялся основной сценарий;
- на родительский основной сценарий — если удалялся подсценарий.
