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

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

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

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-HMZcMaFs95/ce41488ec6a9e18751ed598b37e152eb8859ee8f01fe4dd7f047c0dc4474e99cd0e049c80f98a2488c3246da8f9ca3604ab720d683883b6ea26b95195fc0aefe9b7718001bb1cae7c09513b3980e7868e6ad0a9a9e5129dce5f698d448bf470673102661)

Слот Regular Expression является Комплексный слот и не может существовать без Дочерний слот result, которые начинают собственные Ветка сценария, в которые будет осуществлен переход  после проверки сообщения на соответствие регулярному выражению.![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-UWY-R-sw_C/83f0478347e73f6192a7f71db9aedf523f3440f1414a20665ff52c882a59e22038440a847583d6f06e17fc56b05ed34551726226c1877037a42d99f2edb1260f680c8717347e897b5528cafd435af15b7c0b9323272b6da2a473b0396958645d00cbcc94)

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

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

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

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-BT52PqIETJ/82a6847a18b61c8752feadccaa7d3cc1ace1c78723b0338719a8c07c929a4fa093120136344a1e527b3407a65f7d6dde8a2f09b2ca87f80d9d3f37476fc7eac3f6fa1c856084e1e4d39fce3af2f35999fc2db3db20a896f59bacc1379ad684662a713349)

1. NAME\* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
2. Опция Lowercase source message — опция, при включении которой сообщение в client\_message будет приводиться к нижнему регистру.
3. EXPRESSION\* ー Регулярное выражение. Статья о регулярных выражениях: [https://tproger.ru/translations/regular-expression-python/](https://tproger.ru/translations/regular-expression-python/)
4.
   1. Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля EXPRESSION.

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

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-aH647ZoCI9/82c2c58dad5591cf9e35d41d0645abb5494e28e15bd47d9627c9d53523806bb470d949ea0943fd808147ec67ef8d761829e579cf864361a61331c393e2a6525bf2d7aaa70189cba30d9250c257167bea865792438a1674c1c79ed5d266363a09ac75ace3)

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”.
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-BhdPnlegll/dd092cb402df4332ec109f286483bcbb442ec1a7be0374c736e6605a77e2dec6d158d9afbf15f5ed611c34eebed71b7a107e64f21863c65c2d76b259fb9cbf5e795fd3ca6a9d36bdaf9e543a7a46aca1f027e07f7ef2370c99c2fa92a9c22f8ab685bcc5)
* Эти Подслоты не подлежат изменению и их можно удалить только с родительским слотом Regular Expression.
* Расположение Подслотов определяется автоматически, перемещать подслоты нельзя:
*
  * Подслот result со значением “false” всегда является самым верхним подслотом в данном комплексном слоте Regular Expression (если строка не соответствует регулярному выражению, то нет смысла дальше проверять, будет осуществлен выход в ветку данного подслота - см. Работа слота);
  * Подслот result со значением “true” всегда является самым нижним подслотом в данном комплексном слоте Regular Expression.

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

* Для создания нового Подслота  result необходимо нажать на кнопку +;
* ![новая рег.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-vRZIInSM1E/122895379547b2d72c63a22f24ee3035394bcbeb56c433820dbfeb18538d1ab34a46299c66c64976490a85a7f4a8af194540e7ac71a3a6068d297dbe4414b84cc568481fbd23d9eb94be6d2adaca4543303a35052c2fc53c99390a64f0121de738ae1a92)
* В Подслоте необходимо прописать необходимое значение — это может быть любая строка, состоящая из чисел, букв и символов, с которой буде сравниваться client\_message.
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-Rs2W0vzrXg/325f3685e33f4b275a3f7d6d234c994a1513049ba924153cba6d3f30952621aaea237a61316e4009aa3bf28785bde889b4668e4a9fc2824ae8e84ab7774fa56c8ca8dc1a27308551442a0c6f1e94a5dcaa8dfbc3465bbe46c4a825bcba6fa1902633986c)
* При создании пользователем новых Подслотов result, содержащих точное значение, они будут располагаться между Подслотами “true” и “false” сверху вниз в порядке их создания.
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-Aw7wuHLoiu/6f732cd983748acb0a64e14338dd56741a8ad2d88224b896b112705c6dbe502e8901f4f665ef0ce50fda34f1d18836110b063a39b523fc5fbe4b7b121d056f8c943df35e2976167ebbf7c38701e6e014bf721a8c6996521657881a346e197d73ce497555)
* При проверке на точное значение символы ‘ и \ в Подслоте result должны быть экранированы: им должен предшествовать символ  \\, в противном случае Агент не обучится. Подробнее: [Требования для успешного обучения Агента](../../../../../kak-obuchit-i-protestirovat-agenta/trebovaniya-dlya-uspeshnogo-obucheniya-agenta).
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-qlyhFeganT/d48c29c3531c937535670c1470baf559165111c32e04986b04dc96a04c50cd54a0e20cdad4cc9b81c03e86069ceb80105228355549bcc68ea5fea8deb6556edf745856ddf690fd2182c91b95f148226a3922f4c112c6c6cc36c4cfb7e4a0e4db1c1c0d9a)

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

* Чтобы удалить Подслот result, необходимо кликнуть по нему правой кнопкой мыши и нажать кнопку Remove Branch, затем нажать OK во всплывшем диалоговом окне.
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-uzi5dlNXMv/2fa7da1c4664ad456a3065e92e8e0c603c68168b8dd0310e5e391c73af0b60f4368f8e742bb73fb00f6c4fc35b10668c0a1ac7697238425ae386a5366311e16d3dd21ea76ac2ff89fba3717dc7d6d6de21f625e408bbe5dc7d79d775e75ec01c04b57b09)![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-GWvwjOBsYH/275ef1532b77789d70d6897b35dcfdbebcf06129685f6960b4b5051f249bae3b43b596db2244a8338bde3604b1199dfd8986f269b4a0554ca8366170aaf39d9850684574a98790348d2c2587116fcf1bda7010d1b8b05760bd485a6580231763115177f9)
* Возможно удалить только созданные вручную Подслоты result.
* Удаление автоматически сгенерированных Подслотов result со значениями true и false невозможно. При попытке это сделать появится следующая ошибка по центру внизу:
* ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-39cQ5Snuvs/d5bfee6c8c8f034a0b08fd4632f08df8a5577a3aa3f1a98de8cb9f5cdad20c63f40f554e8357c49eb68c77e107b3b8db07f59b72d67f4cf59490c64458f931a53c743ccb1d29e6c369d101321343582b40de75ba0878144cf3a91c2baa9320c30a3745a9)

## Работа слота

1. Агент делает копию содержимого Контекстная переменная client\_message.
2. Если в Слоте включена опция Lowercase source message, значение client\_message приводится к нижнему регистру. Если опция выключена — значение остается неизменным.
3. Полученное значение проверяется на соответствие регулярному выражению, прописанному в слоте Regular Expression. Результат проверки может быть:
4.
   1. false (ложь) — значение client\_message не соответствует регулярному выражению,
   2.
      1. при этом будет создана Системная контекстная переменная error, содержащая текст ошибки;
   3. true (истина) — значение client\_message соответствует регулярному выражению
   4.
      1. при этом будет создана Контекстная переменная parse\_result, куда будет записана соответствующая регулярному выражению часть client\_message, в т.ч. это может быть содержимое client\_message полностью;
      2. в случае если в client\_message есть несколько подстрок, соответствующих регулярному выражению, в Контекстная переменная parse\_result  будет записана первая соответствующая подстрока.
5. Выход из Комплексный слот Regular Expression+result: Результат проверки последовательно сверху вниз сравнивается со значениями в  Подслотах result и осуществляется переход в соответствующую Ветка сценария, по очереди выполняются следующие проверки:
6.
   * Несоответствие регулярному выражению: Если Результат проверки — false (ложь), то будет осуществлен переход в Ветка сценария самого верхнего Подслота result со значением “false”
   * Соответствие точному значению: Если Результат проверки — true (истина) — и есть созданные пользователем  Подслоты result для проверки на точное соответствие, то будет осуществлен переход в Ветка сценария первого Подслота, значение которого совпадет с client\_message.
   * Соответствие регулярному выражению: Если Результат проверки — true (истина) — и нет Подслотов result для проверки на точное соответствие, или значения в них не совпадают с client\_message, то будет осуществлен переход в Ветка сценария самого нижнего Подслота result со значением “true”
7. ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-3ojdBasloN/b2062df2d14bab886cc328cf21d0d46f6fcf49c1de1c2c731a58c840805757f1b6dc48e3bf7e46d6972933150ae23d3326b26d3642cab018b7d656b51e3303e39d04fc7994d5b4b288eafb06b47598b6e2d44a52d5234c1cba054dcbd8c601763be95894)
