Проверка формата введенных собеседником данных | Слот Regular Expression и под-слот Result

Назначение и общая информация

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

Слот Regular Expression является Комплексный слот и не может существовать без Дочерний слот result, которые начинают собственные Ветка сценария, в которые будет осуществлен переход после проверки сообщения на соответствие регулярному выражению.

Слот Regular Expression обрабатывает содержимое переменной Контекстная переменная client_message в неизменном виде или приведенной к нижнему регистру, в зависимости от того, включена ли в Слоте опция Lowercase source message.

Создание и настройки комплексного слота Regular Expression

Атрибуты слота

  1. NAME* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.

  2. Опция Lowercase source message — опция, при включении которой сообщение в client_message будет приводиться к нижнему регистру.

  3. EXPRESSION* ー Регулярное выражение. Статья о регулярных выражениях: https://tproger.ru/translations/regular-expression-python/

    1. Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля EXPRESSION.

Атрибуты подслота Result

  1. Name — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов. Если название не введено, на Подслоте в Дерево сценария будут отображаться первые 34 символа из поля Value.

  2. 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 не поддерживается.

Подслоты Result

Автоматическая генерация подслотов при создании слота Regular Expression

  • При создании Слота Regular Expression автоматически генерируются два Подслота result со значениями “true” и “false”.

  • Эти Подслоты не подлежат изменению и их можно удалить только с родительским слотом Regular Expression.

  • Расположение Подслотов определяется автоматически, перемещать подслоты нельзя:

    • Подслот result со значением “false” всегда является самым верхним подслотом в данном комплексном слоте Regular Expression (если строка не соответствует регулярному выражению, то нет смысла дальше проверять, будет осуществлен выход в ветку данного подслота - см. Работа слота);

    • Подслот result со значением “true” всегда является самым нижним подслотом в данном комплексном слоте Regular Expression.

Добавление подслотов Result

  • Для создания нового Подслота result необходимо нажать на кнопку +;

  • В Подслоте необходимо прописать необходимое значение — это может быть любая строка, состоящая из чисел, букв и символов, с которой буде сравниваться client_message.

  • При создании пользователем новых Подслотов result, содержащих точное значение, они будут располагаться между Подслотами “true” и “false” сверху вниз в порядке их создания.

  • При проверке на точное значение символы ‘ и \ в Подслоте result должны быть экранированы: им должен предшествовать символ \, в противном случае Агент не обучится. Подробнее: Требования для успешного обучения Агента.

Удаление подслотов Result

  • Чтобы удалить Подслот result, необходимо кликнуть по нему правой кнопкой мыши и нажать кнопку Remove Branch, затем нажать OK во всплывшем диалоговом окне.

  • Возможно удалить только созданные вручную Подслоты result.

  • Удаление автоматически сгенерированных Подслотов result со значениями true и false невозможно. При попытке это сделать появится следующая ошибка по центру внизу:

Работа слота

  1. Агент делает копию содержимого Контекстная переменная client_message.

  2. Если в Слоте включена опция Lowercase source message, значение client_message приводится к нижнему регистру. Если опция выключена — значение остается неизменным.

  3. Полученное значение проверяется на соответствие регулярному выражению, прописанному в слоте Regular Expression. Результат проверки может быть:

    1. false (ложь) — значение client_message не соответствует регулярному выражению,

      1. при этом будет создана Системная контекстная переменная error, содержащая текст ошибки;

    2. true (истина) — значение client_message соответствует регулярному выражению

      1. при этом будет создана Контекстная переменная parse_result, куда будет записана соответствующая регулярному выражению часть client_message, в т.ч. это может быть содержимое client_message полностью;

      2. в случае если в client_message есть несколько подстрок, соответствующих регулярному выражению, в Контекстная переменная parse_result будет записана первая соответствующая подстрока.

  4. Выход из Комплексный слот Regular Expression+result: Результат проверки последовательно сверху вниз сравнивается со значениями в Подслотах result и осуществляется переход в соответствующую Ветка сценария, по очереди выполняются следующие проверки:

    • Несоответствие регулярному выражению: Если Результат проверки — false (ложь), то будет осуществлен переход в Ветка сценария самого верхнего Подслота result со значением “false”

    • Соответствие точному значению: Если Результат проверки — true (истина) — и есть созданные пользователем Подслоты result для проверки на точное соответствие, то будет осуществлен переход в Ветка сценария первого Подслота, значение которого совпадет с client_message.

    • Соответствие регулярному выражению: Если Результат проверки — true (истина) — и нет Подслотов result для проверки на точное соответствие, или значения в них не совпадают с client_message, то будет осуществлен переход в Ветка сценария самого нижнего Подслота result со значением “true”

Last updated