Использование сущностей


Способы использования сущностей

Использование напрямую

Все сущности, найденные во фразе будут доступны в сценарии через переменную $jsapi.context().entities или $entites.

Например:

    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 }}

Использование в паттернах

Сущности можно использовать в паттернах, ссылаясь на них как @<имя сущности> или @<имя сущности>::<имя слота>.

Для сущности, указанной в паттерне, автоматически создается слот и она попадает в дерево разбора parseTree.

Значение сущности будет доступно в сценарии как $parseTree._<имя слота>.

Например:

    state:
        q!: * @Product::p1 *
        a: Информация по продукту: {{ $parseTree._p1 }}

Использование в фразах STS

Сущности можно использовать в примерах фраз классификатора STS, ссылаясь на них как @<имя сущности> или @<имя сущности>::<имя слота>.

Для сущности, указанной в примере, автоматически создается слот и она попадает в дерево разбора parseTree.

Значение сущности будет доступно в сценарии как $parseTree._<имя слота>.

Например:

    state:
        e!: @Pizza::p2
        a: Информация о пицце: {{ $parseTree._p2 }}

Заполнение массива $entities

Рассмотрим пример наличия нескольких вариантов совпадения при поиске сущности.

Создадим пользовательскую сущность @City. В справочник сущности поместим два значения Нижний Новгород и Великий Новгород. При запросе клиента Новгород бот должен уточнить, какой именно город пользователь подразумевал.

Для этого необходимо, чтобы в массив $entities попали все значения сущности.

При помощи метода Brain Direct API:

PUT /api/caila/p/{accessToken}/entities/{entityId}

Добавим параметр для сущности @City:

{
  "fuzzySearch": true    // позволяет находить и помещать в массив несколько значений
}

Теперь в $context.entities будет храниться список из значений Нижний Новгород и Великий Новгород, и ассистент может задать уточняющий вопрос клиенту.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней