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