ym88659208ym87991671
Определение интента | Документация для разработчиков

Определение интента

Обновлено 15 апреля 2024

Интент пользователя определяется с помощью паттернов и классификатора Brain

При использовании в одном сценарии паттернов, интентов и групп примеров, обработка правил активаций происходит с приоритетом по мере убывания:

  1. Паттерны.
  2. Группа примеров классификатора STS.
  3. Интенты.

Механизм активации правил

  1. Если запрос пользователя сработал в стейте с паттерном, группой примеров e! и интентом, то приоритет будет у паттерна. Сработает стейт с паттерном.
  2. Если запрос пользователя сработал в стейте с группой примеров e! и интентом, то приоритет будет у группы примеров. Cработает стейт с группой примеров.
  3. Если запрос пользователя сработал только в стейте с интентом, отработает только он.
  4. В остальных случаях запрос пользователя будет обработан стейтом CatchAll.

Пример сценария

Рассмотрим сценарий:

theme: /

state: Pattern
q!: * паттерн *
a: Сработал паттерн

state: Example
e!: паттерн
a: Этот пример не срабатывает, потому что отрабатывает паттерн

state: Second example
e!: пример
a: Сработал пример

state:
intent!: /паттерн
a: Этот пример не срабатывает, потому что отрабатывает паттерн

state:
intent!: /пример
a: Этот пример не срабатывает, потому что отрабатывает группа примеров

state: Intent
intent!: /интент
a: Сработал интент

state: CatchAll
event: noMatch
a: Вы сказали: {{ $request.query }}

При этом тренировочные фразы для интентов:

  • /паттерн — паттерн;
  • /пример — пример;
  • /интент — интент.

Запускаем тестовый виджет и проверям сценарий:

  1. При запросе Паттерн отрабатывает стейт Pattern.
  2. При запросе Пример отрабатывает стейт Second example.
  3. При запросе Интент отрабатывает стейт Intent.
  4. Все непредусмотренные сценарием запросы обрабатывает стейт CatchAll.

При использовании в одном сценарии паттернов, интентов и групп примеров, вы можете самостоятельно определить приоритет обработки правил активаций.

Обработка нераспознанных запросов

В проектах с несколькими типами правил активации не используйте паттерн * для обработки нераспознанных запросов::

    state: CatchAll
q!: *
a: Не понял

В такой стейт будут попадать все запросы, не распознанные при помощи других паттернов. При этом примеры и интенты будут игнорироваться, поскольку приоритет у паттерна будет выше

Для непредусмотренных сценарием запросов пользователя используйте событие noMatch:

    state: CatchAll
event: noMatch
a: Вы сказали: {{ $request.query }}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.