intentGroup!
Тег активации intentGroup! объявляет вложенные интенты, по которым диалог может перейти в стейт.
По родительскому интенту, указанному после тега, стейт не активируется.
Если вы хотите, чтобы диалог мог перейти в стейт и по родительскому интенту, используйте для него отдельный тег intent!:
state:
intentGroup!: /Example
intent!: /Example
подсказка
intentGroup! — это глобальный тег: переход по нему возможен из любого другого стейта в сценарии.Значение
После тега записывается путь к интенту.
При записи пути символ / выступает разделителем между уровнями вложенности:
/hi— путь составлен из символа/и названия интента./hi/politely— вложенный интент. Уровень вложенности интентов не ограничен.
Примеры использования
Подключение базы знаний к сценарию:
state: KnowledgeBase
intentGroup!: /KnowledgeBase
script: $faq.pushReplies();
предупреждение
По умолчанию срабатывает стейт, который активируется интентом с наибольшим весом.
Но если вы используете
intentGroup или intentGroup! совместно с intent или intent!,
порядок срабатывания стейтов может измениться.Рассмотрим пример сценария ниже при условии, что был распознан интент /KnowledgeBase/FAQ.Курсы/Цена:
- Сработает стейт
PriceInt, потому что в нем есть тегintent!и он получит наибольший приоритет. - Приоритет стейта
FAQ.Coursesбудет меньше, потому что он может сработать только по тегуintentGroup!. - Стейт
AllFaqsполучит наименьший приоритет, поскольку активируется по самой общей группе. - Стейт
Priceне сработает вообще:/KnowledgeBase/FAQ.Курсы/Цена— это родительский интент.
state: AllFaqs
intentGroup!: /KnowledgeBase
a: Нашел ответ в базе знаний.
script: $faq.pushReplies();
state: FAQ.Courses
intentGroup!: /KnowledgeBase/FAQ.Курсы
a: Вас интересуют наши курсы? Я нашел такой ответ:
script: $faq.pushReplies();
state: Price
intentGroup!: /KnowledgeBase/FAQ.Курсы/Цена
script: $faq.pushReplies();
state: PriceInt
intent!: /KnowledgeBase/FAQ.Курсы/Цена
script: $faq.pushReplies();