Формы (prechat)
Виджет / Формы

Prechat-форма и темы обращений

Попросите у посетителя имя, email или телефон до начала диалога — по одному вопросу в чате или одной формой.

Когда включать prechat

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

Prechat имеет смысл, когда:

  • Поддержка чаще офлайн, чем онлайн, — нужен email, чтобы ответить позже.
  • Обращения уходят в CRM, и без имени и контактов карточка клиента бесполезна.

Где настраивается

НастройкиКонструктор виджетаФормы и темы. Посетители увидят изменения после того, как вы нажмёте Опубликовать.

Поля prechat

forms.require_name
Тип: booleanПо умолчанию: false
Переключатель «Запрашивать имя». Имя сохраняется в контакт (full_name).
forms.require_email
Тип: booleanПо умолчанию: false
Переключатель «Запрашивать email». Если включён email-мост и выбран канал-мост, ответы операторов уходят на этот адрес, пока посетителя нет в чате.
forms.require_phone
Тип: booleanПо умолчанию: false
Переключатель «Запрашивать телефон». Номер сохраняется в дополнительные данные контакта (extra_data.phone).
forms.prechat_style
Тип: "chat" | "form"По умолчанию: "chat"
Как собирать поля: «Чат-диалог» (бот спрашивает по одному полю прямо в ленте) или «Одна форма» (карточка со всеми полями). Переключатель «Стиль сбора данных» в том же разделе.
forms.pre_chat_message
Тип: string | { ru, en }По умолчанию: null
Поле «Сообщение перед чатом (опционально)». Показывается сообщением бота в начале нового диалога, пока посетитель не отправил первое сообщение. Это не подпись над формой. Пустое поле — ничего не показывается. Текст на каждом языке задаётся через переключатель языка в конструкторе.

Что видит посетитель

Чат-диалог (по умолчанию)

  • Бот спрашивает обязательные поля по очереди — имя, email, телефон — по одному вопросу за раз. Под полем ввода видно, сколько шагов осталось.
  • Ответы проверяются: имя — не короче 2 символов, email и телефон — по формату. Если ответ не подходит, бот просит ввести ещё раз.
  • После последнего поля виджет сохраняет данные в контакт и просит описать вопрос. Следующее сообщение посетителя начинает диалог, а вопросы бота и ответы сохраняются в тикете.
  • Кнопки быстрых ответов, если они настроены, появляются после того, как поля собраны.
  • Вопросы бота — встроенные тексты виджета на его языке (русском или английском). В конструкторе их нет; поменять их можно в НастройкиТексты и рассылкиТексты интерфейса (ключи prechat.chat.*).

Одна форма

Посетитель пишет первое сообщение, и перед отправкой в ленте появляется карточка «Пожалуйста, представьтесь» с полями для обязательных данных и кнопкой «Начать чат». Когда посетитель её заполнит, данные сохраняются в контакт и сообщение уходит. Текст карточки — встроенный текст виджета, pre_chat_message на него не влияет.

Темы обращений

Темы (forms.topics) заводятся в этом же разделе конструктора. Если есть хотя бы одна тема, виджет перед первым сообщением нового диалога спрашивает, о чём вопрос, — как меню тем у Telegram-бота:

  • в чат-диалоге бот после имени, email и телефона (если они нужны) предлагает темы кнопками; тему можно и написать. Затем бот по одному задаёт вопросы выбранной темы: варианты поля «Выбор» — кнопками, у необязательного поля есть кнопка «Пропустить»;
  • в «Одной форме» темы и поля выбранной темы появляются в той же карточке, под полями контакта. Без темы и обязательных полей карточка не отправляется.

Тема и ответы уходят вместе с первым сообщением. Отдельного поля topic у тикета нет: в ticket.custom_fields записываются topic_id, topic_name и значения полей темы (fields) — так же, как у тем бота, поэтому оператор видит тему и ответы в карточке тикета. Первое сообщение с темой можно отправить и самому, через API виджета (POST /api/webhooks/widget/{workspace_id} с полем topic_id).

Формат темы — id, name и custom_fields. До 50 тем; id и name — от 1 до 100 символов; до 20 дополнительных полей на тему. Поле темы — id, label, type (text, email, phone, number, ip или select), required, подсказка placeholder, проверка regex (сверяется с началом ответа) со своим текстом ошибки error_message и, для select, варианты options в виде { value, label }: value — значение, которое присылают и которое сохраняется в тикете, label — подпись (без неё — тот же value). Варианты-строки из старых конфигов читаются как { value, label } с одинаковым текстом. В конструкторе поля темы настраиваются тем же редактором, что и у тем бота; для number и ip он подставляет стандартную проверку.

Значения полей присылают в том же запросе в custom_fields: [{ "id": …, "value": … }]. Пустое обязательное поле, значение select, которого нет среди value вариантов, и ответ, не прошедший regex, отклоняются с ошибкой 422 (required, invalid_option и format). Виджет проверяет ответы так же ещё до отправки.

forms.topics (пример)json
[
  {
    "id": "billing",
    "name": "Биллинг и оплата",
    "custom_fields": [
      {
        "id": "plan",
        "label": "Тариф",
        "type": "select",
        "required": true,
        "options": [
          { "value": "basic", "label": "Basic" },
          { "value": "pro", "label": "Pro" }
        ]
      }
    ]
  },
  { "id": "tech", "name": "Техническая проблема", "custom_fields": [] },
  { "id": "other", "name": "Другое", "custom_fields": [] }
]
Была ли страница полезной?