Справочные данные о сущностях
В JAICP каждая сущность описывается через н абор значений, которые она может принимать. Значения задаются через паттерны или синонимы.
Каждому значению можно задать дополнительные справочные данные, указав их в поле DATA в формате строки или JSON.
Синтаксис
Для сущности город
добавим в справочник синонимы города Санкт-Петербург: Питер, СПб, Санкт-Петербург, Петербург.
В поле DATA укажем дополнительные данные в формате JSON: официальное название города, страну и часовой пояс.
{
"name": "Санкт-Петербург",
"country": "Russia",
"timezone": "Europe/Moscow"
}
Пример использования
Рассмотрим пример онлайн магазина, который занимается продажей овощей.
В меню проекта перейдите на вкладку NLU → Сущности → Мои сущности и создайте сущность vegetable
с паттернами:
(картошк*|картох*|картофель)
(томат*|помидор*)
Затем в поле DATA для каждого паттерна добавьте дополнительные данные в формате JSON: уникальный идентификатор продукта и его нормализованные название.
-
Для паттерна
(картошк*|картох*|картофель)
:{
"productId": 1,
"uniqueName": "картофель"
} -
Для паттерна
(томат*|помидор*)
:{
"productId": 2,
"uniqueName": "томат"
}
Теперь напишем сценарий. Клиент посылает сообщение, в котором хочет заказать определенный продукт. При этом бот:
- Выведет сообщение о заказе желаемого продукта с помощью
$parseTree._vegetable.uniqueName
. - Сделает HTTP-запрос к ресурсу
https://example.com/order
с ID продукта.
state: Start
q!: $regex</start>
a: Здравствуйте! В нашем магазине представлен широкий ассортимент продуктов. Что вы хотите?
state: Vegetable
q!: хочу заказать @vegetable
a: Хорошо, заказываю {{$parseTree._vegetable.uniqueName}}.
script:
$http.post("https://example.com/order", { productId: $parseTree._vegetable.productId });