Клиентские сущности — это сущности, содержание которых может быть персонализированным для каждого конкретного пользователя. Например, для работы со списком контактов пользователя.
Вы можете использовать клиентские сущности в сценарии чат-бота, интентах и слот-филлинге.
Использование клиентской сущности
Создадим сценарий чат-бота записной книжки. Чат-бот будет уметь:
-
сохранять контакты с помощью клиентской сущности
@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}}