Проверка формата введенных собеседником данных | Слот Regular Expression и под-слот Result
Last updated
Last updated
Слот Regular Expression — Слот, позволяющий проверить содержимое Контекстная переменная client_message на соответствие формату, заданному посредством регулярного выражения, и в зависимости от соответствия выполнить переход в соответствующую Ветка сценария.
Слот Regular Expression является Комплексный слот и не может существовать без Дочерний слот result, которые начинают собственные Ветка сценария, в которые будет осуществлен переход после проверки сообщения на соответствие регулярному выражению.
Слот Regular Expression обрабатывает содержимое переменной Контекстная переменная client_message в неизменном виде или приведенной к нижнему регистру, в зависимости от того, включена ли в Слоте опция Lowercase source message.
NAME* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
Опция Lowercase source message — опция, при включении которой сообщение в client_message будет приводиться к нижнему регистру.
EXPRESSION* ー Регулярное выражение. Статья о регулярных выражениях: https://tproger.ru/translations/regular-expression-python/
Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля EXPRESSION.
Name — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов. Если название не введено, на Подслоте в Дерево сценария будут отображаться первые 34 символа из поля Value.
Value* — строка, с которой будет сравниваться значение Контекстная переменная client_message.
Слот должен содержать регулярное выражение на языке Python. Примеры часто используемых в Агентах регулярных выражений:
Только цифры:
^[\d]+$
Только латинские буквы, числа, знаки переноса
^([A-Za-z0-9-]+)$
Адрес электронной почты
[a-zA-Z0-9_.+-]+@[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\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)
Поиск одной из подстрок в строке
.*(подстрока1|подстрока2).*
Важно: использование масок в слоте Regular Expression не поддерживается.
При создании Слота Regular Expression автоматически генерируются два Подслота result со значениями “true” и “false”.
Эти Подслоты не подлежат изменению и их можно удалить только с родительским слотом Regular Expression.
Расположение Подслотов определяется автоматически, перемещать подслоты нельзя:
Подслот result со значением “false” всегда является самым верхним подслотом в данном комплексном слоте Regular Expression (если строка не соответствует регулярному выражению, то нет смысла дальше проверять, будет осуществлен выход в ветку данного подслота - см. Работа слота);
Подслот result со значением “true” всегда является самым нижним подслотом в данном комплексном слоте Regular Expression.
Для создания нового Подслота result необходимо нажать на кнопку +;
В Подслоте необходимо прописать необходимое значение — это может быть любая строка, состоящая из чисел, букв и символов, с которой буде сравниваться client_message.
При создании пользователем новых Подслотов result, содержащих точное значение, они будут располагаться между Подслотами “true” и “false” сверху вниз в порядке их создания.
При проверке на точное значение символы ‘ и \ в Подслоте result должны быть экранированы: им должен предшествовать символ \, в противном случае Агент не обучится. Подробнее: Требования для успешного обучения Агента.
Чтобы удалить Подслот result, необходимо кликнуть по нему правой кнопкой мыши и нажать кнопку Remove Branch, затем нажать OK во всплывшем диалоговом окне.
Возможно удалить только созданные вручную Подслоты result.
Удаление автоматически сгенерированных Подслотов result со значениями true и false невозможно. При попытке это сделать появится следующая ошибка по центру внизу:
Агент делает копию содержимого Контекстная переменная client_message.
Если в Слоте включена опция Lowercase source message, значение client_message приводится к нижнему регистру. Если опция выключена — значение остается неизменным.
Полученное значение проверяется на соответствие регулярному выражению, прописанному в слоте Regular Expression. Результат проверки может быть:
false (ложь) — значение client_message не соответствует регулярному выражению,
при этом будет создана Системная контекстная переменная error, содержащая текст ошибки;
true (истина) — значение client_message соответствует регулярному выражению
при этом будет создана Контекстная переменная parse_result, куда будет записана соответствующая регулярному выражению часть client_message, в т.ч. это может быть содержимое client_message полностью;
в случае если в client_message есть несколько подстрок, соответствующих регулярному выражению, в Контекстная переменная parse_result будет записана первая соответствующая подстрока.
Выход из Комплексный слот Regular Expression+result: Результат проверки последовательно сверху вниз сравнивается со значениями в Подслотах result и осуществляется переход в соответствующую Ветка сценария, по очереди выполняются следующие проверки:
Несоответствие регулярному выражению: Если Результат проверки — false (ложь), то будет осуществлен переход в Ветка сценария самого верхнего Подслота result со значением “false”
Соответствие точному значению: Если Результат проверки — true (истина) — и есть созданные пользователем Подслоты result для проверки на точное соответствие, то будет осуществлен переход в Ветка сценария первого Подслота, значение которого совпадет с client_message.
Соответствие регулярному выражению: Если Результат проверки — true (истина) — и нет Подслотов result для проверки на точное соответствие, или значения в них не совпадают с client_message, то будет осуществлен переход в Ветка сценария самого нижнего Подслота result со значением “true”