intentGroup
Тег активации intentGroup
объявляет вложенные интенты, по которым диалог может перейти в стейт.
По родительскому интенту, указанному после тега, стейт не активируется.
Если вы хотите, чтобы диалог мог перейти в стейт и по родительскому интенту, используйте для него отдельный тег intent
:
state:
intentGroup: /Example
intent: /Example
подсказка
intentGroup
— это локальный тег: переход по нему возможен только из ближайшего родительского, из соседних или дочерних стейтов.Значение
После тега записывается путь к интенту.
При записи пути символ /
выступает разделителем между уровнями вложенности:
/hi
— путь составлен из символа/
и названия интента./hi/politely
— вложенный интент. Уровень вложенности интентов не ограничен.
Параметры
Параметр | Тип | Описание | Значение по умолчанию |
---|---|---|---|
fromState | Строка | Путь до стейта, из которого возможен переход в текущий стейт по данному тегу intentGroup . | — |
toState | Строка | Путь до стейта, в который возможен переход из текущего стейта по данному тегу intentGroup . | — |
onlyThisState | Логический | • Если true и указан параметр fromState , то переход в текущий стейт возможен строго из стейта в значении fromState , но не из его вложенных. • Если true и указан параметр toState , то переход в стейт в значении toState возможен строго из текущего сте йта, но не из его вложенных. | false |
Примеры использования
state: Start
q!: $regex</start>
a: Здравствуйте! Хотите купить наш курс?
state: Yes
intent: /Согласие
a: Хотите оплатить курс целиком или по частям?
# В зависимости от ответа пользователя
# сработает интент `/Курсы/Цена/При оплате сразу` или `/Курсы/Цена/В рассрочку`.
state: CoursesPayment
intentGroup: /Курсы/Цена
script: $faq.pushReplies();
state: No
intent: /Отказ
a: Хорошо. Если передумаете, пишите!
# Стейт ChangeMind будет активирован,
# если пользовател ь отказался от курса, но позже передумал и что-то о нем спросил.
state: ChangeMind
intentGroup: /Курсы || fromState = "/Start/No", onlyThisState = true
a: Вы передумали? Отлично! Сейчас я вам все расскажу.
script: $faq.pushReplies();
# У всех вложенных интентов, для которых используется intentGroup, одинаковый приоритет.
# Если запрос с одинаковым весом попадет в несколько вложенных интентов, сработает случайный интент:
state: CoursesGeneralQuestions
intentGroup: /Курсы
# Вложенные интенты: `/Курсы/Время начала` и `/Курсы/Дата начала`.
# У запроса «Когда начинается курс?» одинаковый вес для обоих интентов, поэтому может сработать любой из них.
script: $faq.pushReplies();