Как создать и использовать форму регистрации для бота

Что Мы Делаем

Пошаговая инструкция на примере формы регистрации в программе лояльности: вместо того чтобы задавать пользователю несколько вопросов подряд в диалоге с ботом, соберём все данные одной веб-формой — Имя, Email, Дата рождения, Пол и согласие на получение рассылок — и передадим их в сценарий бота.

Общая логика работы с веб-формами (все вкладки, типы полей, скоринг, интеграции) подробно разобрана в справочнике «Как работать с веб-формами» — здесь мы пройдём по ней на конкретном рабочем примере, без лишнего функционала.

Шаг 1. Создаём форму

Переходим в Маркетинг → Лидогенерация → Веб-формы для бота и нажимаем кнопку «Форма для бота».

Заполняем:

  • Название — например, Регистрация в ПЛ
  • Короткое описание — например, Форма регистрации в программе лояльности
  • Уникальный идентификатор — например, registraciya_v_pl

Шаг 2. Собираем поля в конструкторе

Переходим на вкладку «Конструктор» и добавляем поля. Для каждого поля сразу задаём техническое имя переменной — под этим именем значение будет доступно в сценарии бота дальше:

Поле формыТипИмя переменнойКомментарий
ИмяСтрокаnameобязательное
EmailПочтаemailобязательное, встроенная валидация email
Дата рожденияДатаbirthdateформат DD.MM.yyyy
ПолСписок (радиокнопки)sexварианты «Мужской» / «Женский»
Хотите получать рассылки?Список (радиокнопки)newsletterварианты «Хочу» / «Не хочу»; подсказка поля — «За подписку на рассылку дарим 1000 бонусов на следующую покупку»

Про Поле «Дата Рождения»

У типа поля «Дата» есть обязательное поле «Формат даты» — именно в нём задаётся формат ввода, в нашем случае DD.MM.yyyy. Дополнительно можно ограничить «Доступные даты»: без ограничений, только определённые даты или период — например, чтобы отсечь заведомо невозможные значения даты рождения.

Поле «Пол» — тип «Список» с видом ответа «Один вариант (радиокнопки)», варианты «Мужской» / «Женский».

Поле «Хотите получать рассылки?» устроено так же — «Список» с радиокнопками «Хочу» / «Не хочу». Именно оно и служит согласием на рассылку в этом сценарии.

Текстовый Блок С Дисклеймером

Под полями формы можно добавить отдельный блок «Текст» со стандартной фразой согласия — например: «Отправляя свои данные вы соглашаетесь с условиями пользовательского соглашения и правилами обработки персональных данных».

В редакторе текста сразу же можно оформить нужные слова гиперссылками на документы — например, сослаться прямо на пользовательское соглашение и политику обработки персональных данных, не вынося ссылки отдельным блоком.

Шаг 3. Настраиваем посадочные узлы

Переходим на вкладку «Настройки» и указываем посадочные узлы (они должны быть заранее созданы в сценарии бота):

  • Посадочный узел если форма заполненаРегистрация - выход из формы
  • Посадочный узел для закрытия страницы без сохранения формыРегистрация - форма не заполнена

Шаг 4. Добавляем блок «Переход в мессенджер»

Возвращаемся в «Конструктор» и в конец формы добавляем блок «Переход в мессенджер».

Обязательный Шаг

Без блока «Переход в мессенджер» форма не сможет отправить данные обратно в бота — пользователь просто останется на странице формы, посадочные узлы не сработают.

У этого блока есть собственные настройки согласия с документами:

  • Название и ссылка — до двух документов (например, пользовательское соглашение и политика обработки персональных данных)
  • Согласие с документами — «Требуется» (пользователь должен поставить галочку, чтобы продолжить; можно включить «Согласен по умолчанию») или «Не требуется»

Можно Заменить Текстовый Блок Из Шага 2

Текстовый блок-дисклеймер, который мы добавляли в шаге 2, — это просто текст со ссылками, а не настоящий чекбокс. Если нужно, чтобы пользователь явно поставил галочку согласия, лучше отказаться от текстового блока и оформить согласие именно здесь: указать документы в этих полях и включить «Требуется» — тогда это будет полноценный обязательный чекбокс, а не просто текст под полями формы.

Шаг 5. Публикуем форму

Нажимаем «Опубликовать» в правом верхнем углу карточки формы — пока это не сделано, пользователи бота увидят старую (пустую) версию формы.

Шаг 6. Добавляем кнопку в сценарий бота

В узле отправки формы добавляем кнопку с типом «Форма» и выбираем Регистрация в ПЛ — для этого сценария дополнительные параметры не нужны, так как скрытых полей в форме нет.

Альтернативный вариант — тип кнопки «Ссылка» с тегом:

{% form_url "registraciya_v_pl" %}

Он даёт больше контроля над оформлением кнопки, но в этом сценарии не обязателен.

Шаг 7. Забираем данные в посадочном узле

В посадочном узле «Регистрация — выход из формы» получаем данные тегом form_data и сохраняем нужные поля в атрибуты профиля:

{% form_data "registraciya_v_pl" as form %}
{% with data=form.data %}
{% set_attribute "profile_full_name" data.name %}
{% set_attribute "profile_email" data.email %}
{% set_attribute "profile_birth_date" data.birthdate %}
{% set_attribute "profile_gender" data.sex %}
{% set_attribute "profile_marketing_consent" data.newsletter %}
{% endwith %}
{% switch "Регистрация - создание клиента" %}

Подробнее Про Атрибуты Профиля

Что такое атрибуты профиля, зачем они нужны и как с ними работать в сценариях бота — разберём отдельно в статье «Как работать с атрибутами профиля» (статья ещё в разработке).

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

Если Форма Не Заполнена

В узле «Регистрация — форма не заполнена» данные из формы недоступны — здесь можно, например, повторно предложить пройти регистрацию или просто вернуть пользователя в основной сценарий бота.

Итог

Вот как в итоге выглядит опубликованная и заполненная форма для пользователя:

Мы создали форму из пяти полей, настроили посадочные узлы для обоих исходов (успех / отмена), добавили кнопку в сценарий бота и забрали данные в атрибуты профиля через form_data — никакого скоринга, вебхуков и внешних интеграций для этой задачи не понадобилось.

Подробнее про каждую вкладку конструктора, типы полей и остальные возможности веб-форм — в документации «Как работать с веб-формами»