Данный раздел поможет новым пользователям познакомиться с платформой Fasttrack и пройти небольшой путь: от первого сообщения до сбора контактов, информационного меню и автоворонок
Основы конструктора
Прежде чем собирать сценарии, разберёмся с тремя вещами, из которых состоит любой сценарий: сообщениями, переходами между узлами и тестированием.
Каждый шаг сценария в конструкторе Fasttrack — это узел (node) в дереве узлов с сообщением и (-или) логикой

Создание сообщений
Давайте вместе создадим первое сообщение:
Шаг 1. Перейдите в раздел Конструктор и добавьте новый узел

Шаг 2. Введите название узла, например, Приветствие пользователя, и сохраните изменения

Шаг 3. В настройках узла, чтобы добавить контентную часть, нажмите Редактировать в блоке Контент

Шаг 4. Нажмите Добавить сообщение и выберите тип контента, который необходимо добавить в данный узел. Например, текст

Шаг 5. Перед вами откроется редактор сообщения. Здесь можно написать текст, настроить его форматирование, добавить вложения, инлайн-кнопки, если они поддерживаются мессенджером. Также под редактором сообщения есть настройки, применяемые для текущего сообщения
Когда сообщение будет готово, сохраните узел

Переход между узлами
Первый узел готов. Теперь поговорим о том, как происходят переходы между узлами в сценариях
Узлы сами по себе ничего не значат, пока в них не попадает пользователь
Переходы между узлами могут осуществляться с помощью:
- Инлайн и QR кнопок (об их отличиях можно прочитать здесь)
- Специальных тегов switch и push_message.node
- Автоматических переходов в автоворонках
Кнопки для перехода между узлами
Кнопки бывают разных типов. Мы разберем самый простой и часто используемый — кнопки для перехода между узлами
Шаг 1. В узле с сообщением добавьте кнопку и впишите текст на ней (например, «Да» / «Нет», «Каталог», «Связаться с менеджером»)
Для этого выберите узел, в котором хотите добавить кнопку → нажмите на сообщение в блоке Контент → Добавить ряд кнопок

Шаг 2. Нажмите +, чтобы добавить кнопку в ряд кнопок. Перед вами откроется окно настроек кнопки. Нас интересует название кнопки и целевой узел, то есть узел, в который произойдет переход пользователя при нажатии на кнопку. В конце настройки не забудьте сохранить изменения.
💡 Если на момент добавления кнопки целевого узла нет, то сначала необходимо его создать

💡 Поле Тип действия по умолчанию имеет значение Переход на узел, поэтому сейчас мы его не трогаем
Добавленная кнопка отобразится под текстом сообщения

Тестирование узлов
Тестировать работу узлов в сценарии можно двумя способами.
Первый способ — запускать бота командой /start и проходить диалог «как пользователь» до нужного места, чтобы убедиться, что переходы, сообщения и логика работают корректно в реальных условиях
Второй способ — включить для своего чата в чат-центре режим отладки и запускать конкретные узлы напрямую, отправляя боту ключевую фразу в формате n + id узла (например, n219426). Так можно быстро проверять отдельные узлы без прохождения сценария целиком

Сценарий 1: сбор данных пользователя
Цель сценария — собрать у пользователя номер телефона, email и дату рождения, провалидировать введённые данные, сохранить их в атрибуты пользователя и дать пользователю подтвердить или исправить то, что он ввёл.
Логика сценария
Концепция сценария:
- Данные, которые вводит пользователь, сохраняются в атрибуты пользователя — они отображаются в его карточке.
- Для каждого типа данных — отдельный узел-вопрос с включённой валидацией по регулярному выражению.
- Если ответ пользователя соответствует регулярному выражению — происходит переход на узел сохранения введённого значения в атрибут.
- После того как все три значения собраны, показывается узел подтверждения — с сообщением вида «Номер телефона: {{attributes.profile_phone_number}}» и так далее. Пользователь либо подтверждает данные, либо выбирает, что изменить, после чего изменение происходит при необходимости.
💡 Паттерн «узел-вопрос → валидация → узел сохранения → следующий вопрос» подходит для сбора любых данных, не только этих трёх атрибутов
Атрибуты пользователя
Атрибут — переменная, привязанная к конкретному пользователю, где хранится любое значение: имя, номер телефона, дата рождения и так далее. Заполненные атрибуты отображаются в карточке пользователя.
Для сценария понадобятся три атрибута:
- Номер телефона и Email — это системные атрибуты, которые уже есть в проекте по умолчанию, отдельно их создавать не нужно.
- Дата рождения — нужно создать самостоятельно: перейдите в Настройки → Атрибуты клиента и добавьте новый атрибут.

Добавление атрибута пользователя — Дата рождения
Шаг 1. В разделе атрибутов клиента нажмите Создать атрибут

Шаг 2. В открывшемся окне заполните поля:
- Тип — для даты рождения подойдет тип данных datetime. Подробнее о типах атрибутов написано в данном разделе
- Название — это название атрибута, которое будет отображаться в профиле пользователя и в разделе атрибутов клиента
- Произвольное описание — здесь можно описать атрибут, например, для чего используется, кем был создан, каким образом заполняется значение
- Группы — для удобства атрибуты можно группировать по различным признакам. Например, пользователь, заказ, программа лояльности.
- Позиция — данный параметр нужен для того, чтобы вручную настроить сортировку (позиции) атрибутов в профиле клиента. По умолчанию при создании атрибута всегда присваивается значение 1. Атрибуты с одинаковым значением позиции сортируются системой автоматически
- Показывать в профиле — данный переключатель отвечает за то, будет ли атрибут отображаться в профиле клиента
- Ключ — это системное название атрибута. Определяет то, как можно будет обращаться к атрибуту в сценариях

Узлы запроса данных
Для заполнения каждого атрибута — свой узел-вопрос:
Шаг 1. Создайте узел, в котором бот спрашивает нужные данные (например, «Введите номер телефона»), и включите в нём режим свободного ввода «Перевести в узел».

Шаг 2. Настроим проверку введенного номера телефона и переход в узел сохранения
• В поле Фильтр (регулярное выражение) вставьте регулярное выражение, соответствующее типу данных
регулярные выражения для атрибутов, рассматриваемых в текущей статье, представлены ниже.
| Что проверяем? | Регулярное выражение |
| • Номер телефона (РФ, разные форматы) | ^[\d\s\-\+\(\)]{10,15}$ |
^[\w\.\-]+@[\w\-]+\.[a-zA-Z]{2,}$ | |
| • Дата рождения | ^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])\.(19|20)\d{2}$ |
• Поле Тестовая строка используется для проверки регулярного выражения


• Поле Целевой узел позволяет указать узел, в который произойдет переход пользователя в случае, если отправленное значение прошло проверку регулярным выражением
На данном этапе необходимо создать узел, в котором настроим сохранение введенного значения в атрибут. Для этого нажмите правой кнопкой мыши на текущий узел в дереве узлов и выберите + Добавить дочерний узел и введите наименование для нового узла, например, Сохранение номера телефона в атрибут, нажмите Enter, чтобы сохранить указанное наименование нового узла
Теперь в текущем узле выберите созданный узел в поле Целевой узел

• В поле Сообщение, если ответ не подходит под фильтр нужно написать сообщение, которое получит пользователь, если введенные данные не пройдут проверку регулярным выражением, например, «Не удалось распознать номер телефона. Попробуйте ввести его еще раз»

💡 Не забывайте сохранять промежуточный результат настройки узла
💡 В случае, если введенное значением пользователем не подходит под фильтр, кроме текста, уведомляющего об этом, также придет текст сообщения текущего узла
Шаг 3. Остается настроить сохранение значения, введенное пользователем в соответствующий атрибут.
Для этого в узле сохранения активируйте переключатель Действия, нажмите Расширенный режим (DTL-код) и вставьте процедуру, которая сохраняет последнее введенное пользователем значение в атрибут с номером телефона:
{% set_attribute "profile_phone_number" request.content %}

Отправка сообщения с атрибутом
Чтобы отправить сообщение с подстановкой значения атрибута, откройте редактор сообщения и напишите текст. Чтобы вставить значение атрибута или переменной, укажите их полное наименование в фигруных скобках, например, {{attributes.profile_phone_number}}

Теперь после сохранения номера в атрибут, пользователь получит сообщение, подтверждающее корректное поведение сценария