Перейти к основному содержимому

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();