Формы
Форма — это инструмент для последовательного сбора данных от пользователя. Форма состоит из набора полей, которые пользователь заполняет одно за другим.
📝 Назначение
Формы используются для структурированного получения информации от пользователей: регистрационные данные, заказы, обратная связь, опросы и т.д.
Ключевые возможности:
- Последовательный сбор данных (поле за полем)
- Валидация вводимых данных (email, телефон, число)
- Поддержка различных типов полей (текст, выбор, медиа)
- Условное отображение полей
- Автоматическое сохранение результатов
💡 Совет: Формы удобно использовать вместо длинных диалогов с пользователем — они обеспечивают предсказуемый порядок и формат данных.
🔄 Как это работает
| Шаг | Действие |
|---|---|
| 1 | Создаёте форму в разделе /adm → Формы |
| 2 | Добавляете поля (строка, число, выбор, фото и т.д.) |
| 3 | Настраиваете валидацию для каждого поля |
| 4 | Запускаете форму реакцией StartForm |
Пользователь видит поля одно за другим. После заполнения всех полей форма завершается, и вы обрабатываете результаты в триггере «Финиш формы».
⚠️ Важно: Форму можно запустить только в личном чате с ботом. Запустить форму для другого пользователя удалённо нельзя.
⚡ Доступные реакции
| Реакция | Назначение | Ссылка |
|---|---|---|
| StartForm | Запустить форму | Подробнее |
| CancelForm | Принудительно остановить активную форму | Подробнее |
| SendFormResult | Отправить собранные данные формы в чат | Подробнее |
| ErrorFormField | Вызвать ошибку валидации для текущего поля | Подробнее |
📋 Типы полей формы
| Категория | Тип поля | Описание |
|---|---|---|
| Инфо | Информационный пост | Отображает текст с кнопкой «Далее». Не собирает данные |
| Выбор | Выбор | Кнопки для одиночного или множественного выбора |
| Текст | Строка | Текстовое поле |
| Текст | Число | Поле для ввода чисел |
| Текст | Телефон | Поле для ввода номера телефона (с кнопкой «Отправить номер») |
| Текст | Ссылка | Поле для ввода URL |
| Текст | Юзернейм | Поле для ввода @username |
| Текст | Дата | Поле для выбора даты (календарь) |
| Текст | Почта | Поле для ввода email |
| Вложения | Фото, Видео, Аудио, Файл, Стикер | Приём медиафайлов |
🔧 Триггеры формы
| Триггер | Когда срабатывает | Типичное использование |
|---|---|---|
| Старт формы | При запуске формы, до первого поля | Инициализация данных |
| Финиш формы | После успешного заполнения всех полей | Обработка результатов |
| Отмена формы | При нажатии кнопки «Отменить форму» | Очистка данных |
| Лимит интервала | При попытке запустить форму слишком часто | Предупреждение |
| Перед полем | Перед отображением каждого поля | Подготовка данных |
| После поля | После успешного ввода данных в поле | Сохранение ответа |
| Ошибка поля | При ошибке валидации | Отправка сообщения об ошибке |
📍 Доступ к результатам
После заполнения формы данные доступны в переменной:
${form.fields.ключ}
где ключ — значение, указанное в настройках поля.
Примеры:
${form.fields.name} # текстовое поле
${form.fields.age} # число
${form.fields.photo} # медиафайл (объект с file_id)
${form.fields.choose.0} # одиночный выбор (первый элемент)
${form.fields.choose} # мультивыбор (массив)
🧪 Пример использования
Задача: Собрать контактные данные пользователя.
Форма:
- Поле «Имя» (тип: Строка, обязательное)
- Поле «Email» (тип: Почта, обязательное)
- Поле «Телефон» (тип: Телефон, режим «Предоставить номер»)
- Поле «Комментарий» (тип: Строка, опциональное)
Реакции в триггере «Финиш формы»:
SetVarCloud→ сохранить имя, email, телефонSendMessage→ «Спасибо! Мы свяжемся с вами.»
🔗 Связанные разделы
| Раздел | Описание |
|---|---|
| Формы в админке | Подробное руководство по созданию форм |
| Реакция StartForm | Запуск формы |
| Реакция CancelForm | Отмена формы |
| Реакция SendFormResult | Отправка результатов |
| Реакция ErrorFormField | Ошибка валидации |
🔗 Ссылка на официальную документацию
Telegram Bot API — отправка форм (формы реализованы на стороне платформы EnotPro)