Проверка соответствия сообщения нескольким форматам с помощью регулярных выражений и 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