Проверка формата введенных собеседником данных | Слот Regular Expression и под-слот Result
Слот Regular Expression – слот, позволяющий проверить содержимое переменной client_message на соответствие заданному посредством регулярного выражения формату. В зависимости от соответствия выполняется переход в соответствующую ветку Сценария.

Слот Regular Expression является комплексным слотом и не может существовать без дочерних под-слотов Result. Под-слоты Result начинают собственные ветки, в которые осуществляется переход после проверки сообщения на соответствие регулярному выражению.

Слот Regular Expression обрабатывает содержимое системной контекстной переменной client_message, приведенное к нижнему регистру.

- 1.Name – название слота, которое будет отображено в Сценарии. Максимальная длина значения поля — 40 символов.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter a slot name
- 2.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- 2.EXPRESSION ー регулярное выражение.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter a regular expression
- 2.Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля EXPRESSION.
Слот должен содержать регулярное выражение на языке Python. Примеры часто используемых в ботах регулярных выражений:
- Только цифры
^[\d]+$
- Только латинские буквы, числа, знаки переноса
^([A-Za-z0-9-]+)$
- Адрес электронной почты
[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
- Номер телефона РФ
(\+7|7|8)?[\s\-]?\(?[489][0-9]{2}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}$
- URL
(https?:\/\/)?(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\+.~#?&\/\/=]*)
- Поиск одной из подстрок в строке
.*(подстрока1|подстрока2).*

- 1.Name — название подслота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. Если название не введено, на подслоте в Дереве сценария будут отображаться первые 34 символа из поля Value.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- 2.VALUE — строка, с которой будет сравниваться значение переменной client_message. Это значение также приводится к нижнему регистру при сравнении с ним содержимого переменной client_message.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter a value
- При создании слота Regular Expression автоматически генерируются два подслота Result со значениями true и false.
- Эти подслоты не подлежат изменению и их можно удалить только с родительским слотом Regular Expression.
- Расположение подслотов определяется автоматически, перемещать подслоты нельзя:
- Подслот Result со значением false всегда является самым верхним подслотом в слоте Regular Expression (если строка не соответствует регулярному выражению, то нет смысла дальше проверять, осуществля ется выход в ветку данного под-слота – см. Назначение и общая информация).
- Подслот Result со значением true всегда является самым нижним подслотом в слоте Regular Expression.
- Для создания нового подслота result необходимо нажать на кнопку +;
- В подслоте необходимо прописать необходимое значение. Это может быть любая строка, состоящая из чисел, букв и символов.
- При создании пользователем новых подслотов result, содержащих точное значение, они бу дут располагаться между подслотами “true” и “false” сверху вниз в порядке их создания.
- При проверке на точное значение символы ‘ и \ в подслоте result должны быть экранированы: им должен предшествовать символ \, в противном случае Агент не обучится. Требования к агенту для успешной валидации
- Чтобы удалить подслот result, необходимо кликнуть по нему правой кнопкой мыши и нажать кнопку Remove Branch, затем нажать OK во всплывшем диалоговом окне.
- Возможно удалить только созданные вручную подслоты result.
- Удаление автоматически сгенерированных подслотов result со значениями true и false невозможно. При попытке это сделать появится следующая ошибка по центру внизу:
- 1.Агент делает копию содержимого переменной client_message.
- 2.Данное значение приводится к нижнему регистру.
- 3.Полученное значение проверяется на соответствие регулярному выражению, прописанному в слоте Regular Expression. Результат проверки может быть:
- 1.false (ложь) — значение client_message в нижнем регистре не соответствует регулярному выражению,
- при этом будет создана Системные контекстные переменные error, содержащая текст ошибки;
- переменная error существует в Контексте Чата до:
- 1.следующего выполнения этого же или другого слота Regular Expression;
- 2.выполнения слота NLU;
- 3.выполнения слота External Request.
- 2.true (истина) — значение client_message в нижнем регистре соответствует регулярному выражению
- при этом будет создана Системная контекстная переменная parse_result, куда будет записана соответствующая регулярному выражению часть client_message в нижнем регистре, в т.ч. это может быть содержимое client_message полностью;
- в случае если в client_message есть несколько подстрок, соответствующих регулярному выражению, в parse_result будет записана первая соответствующая подстрока;
- переменная parse_result существует в Контексте Чата до следующего выполнения этого же или другого слота Regular Expression в данном Чате.
- 4.Выход из комплексного слота Regular Expression+result: результат проверки последовательно сверху вниз сравнивается со значениями в подслотах result и осущес твляется переход в соответствующую Ветку сценария, по очереди выполняются следующие проверки:
- 1.Несоответствие регулярному выражению: если результат проверки — false (ложь), то будет осуществлен переход в Ветку сценария подслота result со значением “false”;
- 2.Соответствие точному значению: если результат проверки — true (истина) — и есть созданные пользователем подслоты result для проверки на точное соответствие, то будет осуществлен переход в Ветку сценария первого подслота, значение которого совпадет с client_message в нижнем регистре. Значение подслота также приводится к нижнему регистру при сравнении;
- 3.Соответствие регулярному выражению: если результат проверки — true (истина) — и нет подслотов result для проверки на точное соответствие, или значения в них не совпадают с client_message в нижнем регистре, то будет осуществлен переход в Ветку сценария подслота result со значением “true”.