Вы можете использовать сущности:
- в сценарии;
- в слотах интентов;
- в паттернах;
- в тренировочных фразах для STS-классификатора.
Использование в сценарии
Все сущности, найденные во фразе пользователя, доступны в сценарии с помощью переменной $jsapi.context().entities или $entities.
Пример:
state:
q!: Информация по продукту *
a: Информация по продукту: {{ $entities[0].value }}
Объект entities создается при распознавании запроса пользователя. В других случаях, например при получении event!, возвращается значение undefined.
Создание слотов в интентах
При активации интента данные по с оответствующему слоту попадут в переменную $parseTree._<имя слота>.
В этой переменной сохраняется исходный текст, по которому найдено совпадение, либо данные DATA, заданные для данной сущности в редакторе сущностей.
Пример:
state:
intent: /купить
a: Action: {{ $parseTree._Action }}, Product: {{ $parseTree._Product }}
state:
intent: /продать
a: Action: {{ $parseTree._Action }}, Product: {{ $parseTree._Product }}
Подробнее о заполнении слотов в интентах и процессе Slot filling
Использование в паттернах
Сущности можно использовать в паттернах, ссылаясь на них как @<имя сущности> или @<имя сущности>::<имя слота>.
Для сущности, указанной в паттерне, автоматически создается слот и она попадает в дерево разбора parseTree.
Значение сущности будет доступно в сценарии как $parseTree._<имя слота>.
Например:
state:
q!: * @Product::p1 *
a: Информация по продукту: {{ $parseTree._p1 }}
Вы также можете использовать конвертеры в сущностях. Для этого необходимо задать сущность через именованный паттерн с помощью тега patterns, а затем объявить в нем конвертер.
Пример:
patterns:
$four = @four || converter = function() {return 4}
В примере объявлена сущность @four, для которой задан конвертер converter. Функция конвертера вернет значение 4.