Намерения

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

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

Поддерживаемые намерения smart home :

СИНХРОНИЗАЦИЯ

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

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

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

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

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

Во время настройки локального выполнения заказов платформа Local Home проверяет ответ SYNC от облачного выполнения действий вашего smart home . Подробнее о том, как изменить ответ SYNC для поддержки локального выполнения заказов, см. в разделе Обновление ответа SYNC в облачном выполнении заказов .

ЗАПРОС

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

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

Блок-схема намерения QUERY
Рисунок 3: Цель запроса

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

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

ВЫПОЛНЯТЬ

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

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

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

ОТКЛЮЧИТЬ

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