Намерения

Интенты умного дома — это простые объекты сообщений, описывающие, какие действия в рамках интеграции Cloud-to-cloud необходимо выполнить, например, включить свет или передать звук на динамик.

Все намерения smart home находятся в пространстве имен action.devices , и вам необходимо обеспечить их выполнение. Всякий раз, когда Google Assistant отправляет намерение в функцию выполнения, в заголовке Authorization передается сторонний токен доступа OAuth 2 пользователя.

Вот список поддерживаемых намерений smart home :

SYNC

Интент action.devices.SYNC используется для запроса списка устройств smart home , которые пользователь подключил и которые доступны для использования.

Когда пользователь настраивает свои устройства с помощью Google Home app (GHA) , он также проходит аутентификацию в вашей облачной инфраструктуре. Затем Assistant получает токен OAuth2. На этом этапе Assistant отправляет намерение action.devices.SYNC в вашу систему обработки запросов, чтобы получить первоначальный список пользовательских устройств и их возможностей из вашей облачной инфраструктуры.

На этом рисунке показано взаимодействие между инфраструктурой Google и партнерской инфраструктурой. Из инфраструктуры Google поступает список партнеров, доступный клиентскому приложению Assistant, который затем передается в партнерскую инфраструктуру для завершения аутентификации OAuth. Аутентификация OAuth на стороне партнера включает веб-представление настройки партнера, веб-представление OAuth, дополнительные настройки и условия, а также облачные сервисы партнера. Партнерская инфраструктура затем возвращает учетные данные OAuth клиентскому приложению Assistant. Партнерские облачные сервисы отправляют информацию о доступных устройствах и возможностях в сервисы Assistant, которые затем сохраняют эту информацию в Home Graph.
Рисунок 1: Взаимодействие между инфраструктурой Google и партнеров.

Чтобы избежать отвязки и повторной привязки учетной записи пользователя, вы можете отправить запрос на синхронизацию в Assistant . Это отправит намерение action.devices.SYNC в вашу систему обработки запросов для синхронизации списка устройств и возможностей. Дополнительную информацию см. в разделе «Реализация запроса на синхронизацию» .

Блок-схема намерения SYNC
Рисунок 2: Намерение SYNC

В процессе настройки локального выполнения платформа «Локальный дом» проверяет ответ SYNC от облачного сервиса выполнения действий вашего smart home . Чтобы узнать больше о том, как изменить ответ SYNC для поддержки локального выполнения, см. раздел «Обновление ответа SYNC в облачном сервисе выполнения» .

ЗАПРОС

Интент action.devices.QUERY используется для запроса текущего состояния устройств smart home .

Когда пользователи запрашивают информацию о состоянии устройства, например , «Привет, Google, какие лампы горят на кухне?» , Assistant отправляет намерение action.devices.QUERY в ваш обработчик запросов.

Блок-схема намерения запроса (QUERY intent)
Рисунок 3: Намерение запроса

Для обеспечения наилучшего пользовательского опыта следует внедрить функцию «Отчет о состоянии» , которая будет заблаговременно сообщать о текущем состоянии устройств пользователя непосредственно в Google Home Graph . Например, это позволит Assistant узнать, включил ли пользователь умный светильник с помощью физического выключателя.

Отображение состояния устройства с помощью функции Report State
Рисунок 4: Отчет о состоянии устройства

ВЫПОЛНЯТЬ

Интент action.devices.EXECUTE используется для предоставления команд, которые необходимо выполнить на устройствах smart home .

Когда пользователи отправляют команды устройствам с помощью Assistant , ваш запрос на выполнение получает интент action.devices.EXECUTE , описывающий действие и устройства, на которые нужно воздействовать. Пользователь может выполнить действие на устройстве с помощью команды, например: «Привет, Google, включи свет в моей гостиной» .

Блок-схема намерения EXECUTE
Рисунок 5: Намерение ВЫПОЛНИТЬ

ОТКЛЮЧИТЬ

Интент action.devices.DISCONNECT срабатывает, чтобы сообщить вам, когда пользователь отвязал учетную запись приложения от Assistant . После получения интента action.devices.DISCONNECT вам не следует сообщать о состоянии устройств этого пользователя.