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