Вы можете использовать сущности:
- в сценарии;
- в слотах интентов;
- в паттернах;
- в тренировочных фразах для 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
.