Как ограничить ответ респондента

Данные, которые требуется получить от респондента, могут содержать разную информацию, но соответствовать определенному шаблону (например, номер телефона, адрес, номер паспорта, включая дату и место выдачи, и т.д.). Для сбора таких данных используйте блок Сбор данных с типом Регулярное выражение.

Два способа получить данные, которые вам нужно:
  1. Настроить проверку данных на корректность. В поле Формат задайте формат данных. Например, для получения номера телефона в поле Формат укажите: ^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$ (данному формату соответствуют российские мобильные телефонные номера, а также городские с кодом из трех цифр). Респондент может указать номер телефона, начиная с +7 или 8, использовать пробелы, скобки, тире и пр. При этом cистема все равно квалифицирует номер телефона и сохранит его в результатах диалога, либо остановит бот, если пользователь написал сообщение, не содержащее номера телефона.

  2. Настроить маску ввода. В поле Маска укажите маску ввода данных. Поле многострочное, расширяется по мере ввода текста. Описание маски должно автоматически подставлять постоянные символы и контролировать вводимые значения (количество символов, набор символов, диапазон значений, порядок ввода). Если маска указана неверно, она не работает.

Маску ввода нужно указать в формате JSON, прописав для нее параметры (ключи) и их значения.

Warning
Все ключи и строковые значения указывайте в двойных кавычках – одинарные не работают
Параметры:
  • mask – маска или тип. Сейчас используется только один тип масок: IMask.MaskedRange" - диапазон числовых значений;

  • lazy – показывать подстановочный шаблон: true – нет, false – да;

  • placeholderChar – подстановочный символ, по умолчанию _;

  • blocks – объект с отдельными паттернами подстановки;

  • autofix – автоисправление при работе с диапазоном: true – да, false – нет;

  • maxLength – длина маски: если меньше диапазона, то будут добавлены нули в начале;

  • to – верхняя граница диапазона (только числа);

  • from – нижняя граница диапазона (только числа).

Символы, которые можно использовать для задания значения в параметре mask:
  • 0 – любая цифра;

  • a – любая буква;

  • * – любой символ;

  • [] – ввод значения на место символов в скобках не обязателен;

  • {} – фиксированная часть маски;

  • ` – предотвращает смещение символов назад;

  • определения должны отделаться от маски двойной обратной наклонной чертой – например, \\0.

Примеры:

Телефон РФ. Маска отображается респонденту в поле ввода сообщения.
{
  "mask": "+{7}(000)000-00-00",
  "lazy": false,
  "placeholderChar": "_"
  }
Телефон РФ. Маска не отображается в поле ввода сообщения. Респондент вводит данные в поле – они отображаются согласно маске.
{
  "mask": "+{7}(000)000-00-00",
  "lazy": true,
  "placeholderChar": "_"
  }
Паспорт РФ
{
  "mask": "00 00 000000",
  "lazy": false,
  "placeholderChar": "_"
  }
Время
{
  "mask": "HH:mm",
  "lazy": false,
  "placeholderChar": "_",
  "blocks": {
    "HH": {
      "mask": "IMask.MaskedRange",
      "autofix": true
      "from": 0,
      "to": 23
    },
    "mm": {
      "mask": "IMask.MaskedRange",
      "autofix": true,
      "from": 0,
      "to": 59
    }
  }
}
  1. Номер банковской карты

{
  "mask": "0000 0000 0000 0000",
  "lazy": false,
  "placeholderChar": "_"
}
ИНН
{
  "mask": "0000000000[00]",
  "lazy": false,
  "placeholderChar": "_"
}

Более подробное описание масок ввода см. IMaskJS.

Warning
Заполняйте только одно из полей: Маска или Формат. Если маска и формат будут противоречить друг другу, это приведет к остановке диалога: бот будет запрашивать информацию по указанному формату, а респондент не сможет ее указать, т.к. ограничен маской ввода.
Блок Регулярное выражение
Tip
Если вы используете блок Форма, для получения шаблонных данных добавьте поле и выберите тип Регулярное выражение.

Статья помогла вам?