Проверка соответствия сообщения нескольким форматам с помощью регулярных выражений и Transition Rule

С помощью слота Transition Rule можно реализовать проверку сообщения Собеседника на соответствие нескольким форматам с помощью регулярных выражений в слотах Transition Rule.

Допустим, нужно разветвить Сценарий в зависимости от того, согласился Собеседник с предложением Бота или отказался от него. Для этого с помощью одного регулярного выражения нужно проверить, что сообщение выражает согласие, с помощью другого – что сообщение содержит отказ.

Разберем два способа, как можно реализовать такой сценарий.

Первый способ долгий и трудоемкий, в нем задействуются только слоты Regular Expression.

Второй способ – удобный и компактный. В нем регулярные выражения задействуются в слоте Transition Rule и под-слотах Condition (не применяя слот Regular Expression).

pageКак составить регулярное выражение

Первый способ: Вложенный Regular Expression

В этом случае проверка сообщения Собеседника на соответствие нескольким форматам b соответствующее разветвление Сценария осуществляются с помощью нескольких вложенных слотов Regular Expression.

  • Создаем текстовый слот Text с текстом, к примеру: «Хотите задать другой вопрос?».

  • Далее поставим слот Wait For Reaction.

  • Добавляем слот Regular Expression и прописываем в нем регулярное выражение, которое проверит сообщение Собеседника на выражение согласия:

*(да|ага|конечно|хочу|давай|ок|поехали|ес|окей).*

  • После под-слота Result со значением True ставим текстовый слот Text с текстом «Задайте свой вопрос» и далее – слот Wait For Reaction.

  • После под-слота Result со значением False добавим еще один слот Regular Expression, в котором пропишем регулярное выражение для проверки сообщения на выражение отказа:

*(нет|неа|не-а|но|отнюдь|ничуть|нехочу|небуду|отстань|стоп).*

  • После под-слота Result со значением False добавим текстовый слот Text с текстом «Прошу прощения, я вас не понял. Напишите, пожалуйста, «да» или «нет». Ставим слот Wait For Reaction, далее с помощью слота Jump делаем переход в регулярное выражение на проверку согласия.

  • После под-слота Result со значением True поставим текстовый слот Text с текстом «Как будете готовы, возвращайтесь», далее поставьте слот Wait For Reaction.

Осталось только обучить Бота, нажав на кнопку Train, и протестировать его в DEBUG панели.

Второй способ: С помощью Transition Rule

В этом случае Сценарий, в зависимости от формата сообщения Собеседника, разветвляется на несколько веток с помощью слота Transition Rule. Проверка формата происходит в под-слотах Condition. Для проверки в под-слотах сразу прописывается выражение вида @variable ~ /regexp/, которое проверяет указанную переменную на соответствие указанному регулярному выражению.

  • Создаем нового Бота.

  • После корневого слота ROOT добавим текстовый слот Text с таким же текстом «Хотите задать другой вопрос?». Добавим слот Wait For Reaction.

  • Далее добавим слот Transition Rule.

  • В под-слоте Condition пропишем значение {{ @client_message }} ~ /да/ || {{ @client_message }} ~ /конечно/.

  • Далее поставим текстовый слот Text с текстом «Задайте свой вопрос» и слот Wait For Reaction.

  • Добавим еще один под-слот Condition и пропишем в нем значение {{ @client_message }} ~ /нет/ || {{ @client_message }} ~ /не хочу/.

  • Далее поставим текстовый слот Text с текстом «Как будете готовы, возвращайтесь» и слот Wait For Reaction.

  • После под-слота Condition со значением True добавим текстовый слот Text с текстом «Прошу прощения, я вас не понял. Напишите, пожалуйста, «да» или «нет». Ставим слот Wait For Reaction. И после добавим Jump в слот Transition Rule.

Все готово! Обучите Бота с помощью кнопки Train и протестируйте в Debug.

Last updated