Правила активации
При со вместном использовании в одном сценарии нескольких типов правил активации они срабатывают в порядке убывания приоритета: сначала паттерны, затем интенты.
Порядок активации правил
Следующая таблица иллюстрирует порядок срабатывания правил активации в различных вариантах их совместного использования:
| Паттерн? | Интент? | Сработавшее правило |
|---|---|---|
| Да | Да | Паттерн |
| Да | Нет | Паттерн |
| Нет | Да | Интент |
| Нет | Нет | noMatch |
Обработка нераспознанных запросов
* для обработки нераспознанных запросов:state: CatchAll
q!: *
a: Вы сказали: {{$request.query}}
В такой стейт будут попадать все запросы, не распознанные при помощи других паттернов. При этом интенты будут игнорироваться, поскольку приоритет у паттерна будет выше.
noMatch:state: CatchAll
event!: noMatch
a: Вы сказали: {{$request.query}}
Пример сценария
Предположим, что в NLU заданы интенты /паттерн и /интент, обученные на тренировочных фразах паттерн и интент соответственно. Рассмотрим следующий сценарий:
theme: /
state: Pattern
q!: * паттерн *
a: Сработал паттерн.
state: Intent
intent!: /паттерн
a: Интент не сработает, потому что сработает паттерн.
state: Intent2
intent!: /интент
a: Сработал интент.
state: CatchAll
event!: noMatch
a: Вы сказали: {{$request.query}}
За пустим тестовый виджет и проверим, в какие стейты попадут следующие запросы:
| Запрос | Стейт |
|---|---|
паттерн | /Pattern |
интент | /Intent2 |
| Другие запросы | /CatchAll |
Продвинутые возможности
Если стандартный приоритет правил активации не подходит для вашего сценария, определите собственную логику для обработки результатов классификации:
- Чтобы изменить механизм выбора правил активации, используйте обработчик
selectNLUResult. - Чтобы иметь доступ к результатам классификации из любого места сценария, воспользуйтесь
$context.nBest.