Сущность в Graph — это часть пользовательского запроса, которую можно выделить из фразы в виде каких-то языконезависимых данных.
Например, «Дата-время», «Число», «Номер телефона», «Название города» — все это примеры сущностей, которые Graph может автоматически обнаружить во фразе пользователя.
Для чего нужны сущности
Всякий раз, когда смартап не только должен среагировать на фразу, но и выделить из нее важные данные, нужно использовать сущности.
Какие есть сущности в Graph
В Graph можно использовать системные сущности и системные справочники. Также есть возможность создавать пользовательские сущности.
Ка к работают сущности
Всякий раз, как смартап реагирует на фразу пользователя, он пытается выделить из нее те сущности, которые указаны во фразе. Как только сущность найдена, смартап создает переменную с именем, соответствующим названию сущности, и сохраняет в нее языконезависимое значение сущности.
Например, если в примере или в шаблоне фразы указано, что во фразе пользователя должно присутствовать число (сущность $NUMBER), то при срабатывании этой фразы смартап создаст переменную с именем $NUMBER и сохранит в нее целое число, даже если пользователь произнес его словами, а не написал цифрами.
После этого в сценарии смартапа можно использовать эту переменную так же, как и любую другую. Например, использовать ее в условиях, передать в HTTP-запросе и так далее.
Как использовать сущности
Несколько одинаковых сущностей
Если в рамках одного смартапа нужно оперировать сразу несколькими одинаковыми сущностями, задайте в шаблоне фразы с сущностью отдельную переменную.
Сущность с несколькими значениями
Если есть сущность с несколькими значениями и нужно получить конкретное значение, используйте следующий синтаксис: сущность.значение. Например, сущность $CITY может содержать значения:
name;lat;lon;country;continent;timezone;population;capital.
Для извлечения одного из этих значений, например continent, используйте синтаксис: $CITY.continent.
Создание интента для системной сущности
Если добавить интент, который будет состоять только из одной системной сущности, то он автоматически преобразуется в один из готовых интентов. Например, если создать собственный интент с текстом $CITY, то после сохранения он преобразуется в готовый интент Города.
Как указать сущность во фразе
Чтобы смартап мог выделить сущность из фразы, ее нужно указать в примере фразы или в шаблоне в блоке Интенты.
Указать — это значит подставить ссылку на сущность в пример фразы, так же как, например, можно подставить переменную в текстовый вывод в блоке Текст.
Например, если мы хотим, чтобы смартап реагировал на фразы типа «Забронируй столик на двоих сегодня вечером» и при этом автоматически выделял из нее число гостей, а также дату и время брони, то нам нужно написать в примерах фраз примерно следующее:
"Забронируй столик $NUMBER"
Когда пользователь произнесет такую фразу, то смартап автоматически выделит число гостей и поместит значение в переменную $NUMBER.