chatme.ai
Search
⌃K

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

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

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

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

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

  1. 1.
    Name – название слота, которое будет отображено в Сценарии. Максимальная длина значения поля — 40 символов.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please enter a slot name
        image.png
      2. 2.
        если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
        image.png
  2. 2.
    EXPRESSION ー регулярное выражение.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please enter a regular expression
    2. 2.
      Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля EXPRESSION.
Статья о регулярных выражениях: https://tproger.ru/translations/regular-expression-python/

Содержание слота Regular 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).*

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

  1. 1.
    Name — название подслота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. Если название не введено, на подслоте в Дереве сценария будут отображаться первые 34 символа из поля Value.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
        image.png
  2. 2.
    VALUE — строка, с которой будет сравниваться значение переменной client_message. Это значение также приводится к нижнему регистру при сравнении с ним содержимого переменной client_message.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please enter a value
        image.png

Подслоты Result

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

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

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

  • Для создания нового подслота result необходимо нажать на кнопку +;
    новая рег.png
  • В подслоте необходимо прописать необходимое значение. Это может быть любая строка, состоящая из чисел, букв и символов.
    image.png
  • При создании пользователем новых подслотов result, содержащих точное значение, они будут располагаться между подслотами “true” и “false” сверху вниз в порядке их создания.
    image.png
  • При проверке на точное значение символы ‘ и \ в подслоте result должны быть экранированы: им должен предшествовать символ \, в противном случае Агент не обучится. Требования к агенту для успешной валидации
    image.png

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

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

Работа слота

  1. 1.
    Агент делает копию содержимого переменной client_message.
  2. 2.
    Данное значение приводится к нижнему регистру.
  3. 3.
    Полученное значение проверяется на соответствие регулярному выражению, прописанному в слоте Regular Expression. Результат проверки может быть:
    1. 1.
      false (ложь) — значение client_message в нижнем регистре не соответствует регулярному выражению,
      • при этом будет создана Системные контекстные переменные error, содержащая текст ошибки;
      • переменная error существует в Контексте Чата до:
        1. 1.
          следующего выполнения этого же или другого слота Regular Expression;
        2. 2.
          выполнения слота NLU;
        3. 3.
          выполнения слота External Request.
    2. 2.
      true (истина) — значение client_message в нижнем регистре соответствует регулярному выражению
      • при этом будет создана Системная контекстная переменная parse_result, куда будет записана соответствующая регулярному выражению часть client_message в нижнем регистре, в т.ч. это может быть содержимое client_message полностью;
      • в случае если в client_message есть несколько подстрок, соответствующих регулярному выражению, в parse_result будет записана первая соответствующая подстрока;
      • переменная parse_result существует в Контексте Чата до следующего выполнения этого же или другого слота Regular Expression в данном Чате.
  4. 4.
    Выход из комплексного слота Regular Expression+result: результат проверки последовательно сверху вниз сравнивается со значениями в подслотах result и осуществляется переход в соответствующую Ветку сценария, по очереди выполняются следующие проверки:
    1. 1.
      Несоответствие регулярному выражению: если результат проверки — false (ложь), то будет осуществлен переход в Ветку сценария подслота result со значением “false”;
    2. 2.
      Соответствие точному значению: если результат проверки — true (истина) — и есть созданные пользователем подслоты result для проверки на точное соответствие, то будет осуществлен переход в Ветку сценария первого подслота, значение которого совпадет с client_message в нижнем регистре. Значение подслота также приводится к нижнему регистру при сравнении;
    3. 3.
      Соответствие регулярному выражению: если результат проверки — true (истина) — и нет подслотов result для проверки на точное соответствие, или значения в них не совпадают с client_message в нижнем регистре, то будет осуществлен переход в Ветку сценария подслота result со значением “true”.