Перейти к основному содержимому

Справочные данные о сущностях

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

Каждому значению можно задать дополнительные справочные данные, указав их в поле DATA в формате строки или JSON.

Синтаксис

Для сущности город добавим в справочник синонимы города Санкт-Петербург: Питер, СПб, Санкт-Петербург, Петербург.

В поле DATA укажем дополнительные данные в формате JSON: официальное название города, страну и часовой пояс.

{
"name": "Санкт-Петербург",
"country": "Russia",
"timezone": "Europe/Moscow"
}

Пример использования

Рассмотрим пример онлайн магазина, который занимается продажей овощей. В меню проекта перейдите на вкладку NLUСущностиМои сущности и создайте сущность vegetable с паттернами:

  • (картошк*|картох*|картофель)
  • (томат*|помидор*)

Затем в поле DATA для каждого паттерна добавьте дополнительные данные в формате JSON: уникальный идентификатор продукта и его нормализованные название.

  • Для паттерна (картошк*|картох*|картофель):

    {
    "productId": 1,
    "uniqueName": "картофель"
    }
  • Для паттерна (томат*|помидор*):

    {
    "productId": 2,
    "uniqueName": "томат"
    }

Теперь напишем сценарий. Клиент посылает сообщение, в котором хочет заказать определенный продукт. При этом бот:

  1. Выведет сообщение о заказе желаемого продукта с помощью $parseTree._vegetable.uniqueName.
  2. Сделает 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 });