ym88659208ym87991671
Работа с клиентскими сущностями для чат-ботов | Документация для разработчиков

Клиентские сущности

Обновлено 15 декабря 2023

Клиентские сущности — это сущности, содержание которых может быть персонализированным для каждого конкретного пользователя. Например, для работы со списком контактов пользователя.

Вы можете использовать клиентские сущности в сценарии чат-бота, интентах и слот-филлинге.

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

Создадим сценарий чат-бота записной книжки. Чат-бот будет уметь:

  • сохранять контакты с помощью клиентской сущности @Contact и интента AddContact.

  • создавать встречи с помощью интента Meeting.

    Для назначения встречи интент будет обращаться к клиентской сущности @Contact

При этом у каждого пользователя чат-бота будет своя записная книжка.

Для корректной работы чат-бота нужно включить системные сущности @duckling.phone-number и @pymorphy.name.

Заполнение сущности

Создайте сущность @Contact.

Чтобы чат-бот заполнял сущность значениями, персонализированными для конкретного пользователя, в настройках сущности включите переключатель Сделать сущность клиентской.

Заполнение интентов

Создайте и заполните интент добавления контакта AddContact.

Интент AddContact активируется, когда пользователь хочет создать новую запись в записной книжке. Здесь используется слот-филлинг для заполнения слотов номера телефона (слот Номер) и имени контакта (слот Имя).Слоты заполняются с помощью системных сущностей @duckling.phone-number и @pymorphy.name.

Создайте и заполните интент добавления контакта в записную книжку Meeting.

Интент Meeting активируется, когда пользователь хочет назначить встречу с уже созданным контактом. Чтобы интент работал корректно, в тренировочные фразы добавлена клиентская сущность @Contact.

Сценарий чат-бота

Добавьте следующий сценарий:

require: slotfilling/slotFilling.sc
module = sys.zb-common
theme: /

state: Start # старт сценария
q!: $regex</start>
a: Я умею добавлять контакты в записную книжку

state: AddContact # добавление контакта
intent!: /AddContact
script:
$caila.addClientEntityRecords("Contact", [{"type": "synonyms", "rule": [$parseTree._Имя], "value": $parseTree._Номер}]);
a: Отлично, добавил контакт {{$parseTree._Имя}} с номером {{$parseTree._Номер}}

state: Meeting # создание встречи с добавленным контактом
intent!: /Meeting
a: Окей, назначаю встречу {{$parseTree._Contact}}

state: NoMatch
event!: noMatch
a: Я не понял. Вы сказали: {{$request.query}}

При активации интента AddContact во фразе пользователя выполняется поиск сущностей, соответствующих слотам. Слоты заполняются при определении подходящих сущностей.

После заполнения слотов они будут доступны в основном сценарии с помощью переменной $parseTree.

Запись сущности для текущего пользователя добавляется с помощью метода $caila.addClientEntityRecords.

После создания контакта можно активировать интент Meeting и назначить встречу.

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

При обращении к контактам, которых нет в записной книжке, сценарий переходит в состояние NoMatch.

Методы для работы с записями

МетодОписание
$caila.addClientEntityRecordsДобавляет запись для определенного пользователя чат-бота к текущим записям сущности
$caila.deleteClientEntityRecordsУдаляет записи с заданными идентификаторами id для определенного пользователя чат-бота
$caila.getClientEntityRecordsВозвращает список записей сущности для определенного пользователя чат-бота
$caila.setClientEntityRecordsПерезаписывает все записи сущности для определенного пользователя чат-бота
$caila.setClientEntityRecordПереопределяет запись сущности для определенного пользователя чат-бота
$caila.setClientNerIdУстанавливает уникальный идентификатор пользователя чат-бота сlientId, который используется при анализе текста
$caila.clearClientNerIdУдаляет уникальный идентификатор пользователя чат-бота сlientId, который был установлен методом $caila.setClientNerId

У клиентских сущностей, помимо уникальных записей, могут быть общие записи для всех пользователей чат-ботов. Например, в телефонном справочнике это могут быть номера экстренных служб. Их можно заполнить при создании сущности или при помощи SmartApp Brain Direct API.

Все изменения в записях клиентских сущностей не требуют переобучения модели.

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

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.