Как ограничить ответ респондента
Данные, которые требуется получить от респондента, могут содержать разную информацию, но соответствовать определенному шаблону (например, номер телефона, адрес, номер паспорта, включая дату и место выдачи, и т.д.). Для сбора таких данных используйте блок Сбор данных с типом Регулярное выражение.
Два способа получить данные, которые вам нужно:
- Настроить проверку данных на корректность. В поле Формат задайте формат данных. Например, для получения номера телефона в поле Формат укажите:
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
(данному формату соответствуют российские мобильные телефонные номера, а также городские с кодом из трех цифр). Респондент может указать номер телефона, начиная с +7 или 8, использовать пробелы, скобки, тире и пр. При этом cистема все равно квалифицирует номер телефона и сохранит его в результатах диалога, либо остановит бот, если пользователь написал сообщение, не содержащее номера телефона. - Настроить маску ввода. В поле Маска укажите маску ввода данных. Поле многострочное, расширяется по мере ввода текста. Описание маски должно автоматически подставлять постоянные символы и контролировать вводимые значения (количество символов, набор символов, диапазон значений, порядок ввода). Если маска указана неверно, она не работает.
Маску ввода нужно указать в формате JSON, прописав для нее параметры (ключи) и их значения.
Внимание | Все ключи и строковые значения указывайте в двойных кавычках – одинарные не работают |
Параметры:
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
}
}
}
Номер банковской карты
{
"mask": "0000 0000 0000 0000",
"lazy": false,
"placeholderChar": "_"
}
ИНН
{
"mask": "0000000000[00]",
"lazy": false,
"placeholderChar": "_"
}
Более подробное описание масок ввода см. IMaskJS.
Внимание | Заполняйте только одно из полей: Маска или Формат. Если маска и формат будут противоречить друг другу, это приведет к остановке диалога: бот будет запрашивать информацию по указанному формату, а респондент не сможет ее указать, т.к. ограничен маской ввода. |
Совет | Если вы используете блок Форма, для получения шаблонных данных добавьте поле и выберите тип Регулярное выражение. |