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

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

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

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

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

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

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

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

    1. При сохранении Слота проверяется значение в поле:

  2. EXPRESSION ー регулярное выражение.

    1. При сохранении Слота проверяется значение в поле:

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

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

Содержание слота Regular Expression

Слот должен содержать регулярное выражение на языке 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).*

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

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

    1. При сохранении Слота проверяется значение в поле:

  2. VALUE — строка, с которой будет сравниваться значение переменной client_message. Это значение также приводится к нижнему регистру при сравнении с ним содержимого переменной client_message.

    1. При сохранении Слота проверяется значение в поле:

Подслоты Result

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

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

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

    • Подслот Result со значением false всегда является самым верхним подслотом в слоте Regular Expression (если строка не соответствует регулярному выражению, то нет смысла дальше проверять, осуществляется выход в ветку данного под-слота – см. Назначение и общая информация).

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

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

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

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

Работа слота

  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”.

Last updated