действие.устройства.СИНХРОНИЗАЦИЯ
Данный запрос запрашивает список устройств, связанных с данным пользователем, и их возможности.
Этот процесс запускается во время привязки учетной записи или при ручной синхронизации устройств пользователем. Ваша служба обработки заказов должна предоставить поддерживаемые характеристики и атрибуты для каждого устройства.
В ответе на запрос SYNC должны быть указаны все устройства, связанные с пользователем. Это не определяет, доступно ли какое-либо конкретное устройство. Этот вопрос решается с помощью ответов QUERY и EXECUTE .
Для получения более подробной информации см. раздел «Идентификация и синхронизация» .
Формат запроса
| Поля | Тип | Описание |
|---|---|---|
requestId | Нить | Необходимый. Идентификатор запроса. |
inputs | Множество | Необходимый. Список входных данных, соответствующих запросу. |
[ item, ... ] | Объект | Тип и полезная нагрузка, связанные с запросом намерения. |
intent | Необходимый. (Постоянное значение: Тип запроса намерения. |
Примеры
Запрос намерения SYNC
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [
{
"intent": "action.devices.SYNC"
}
]
}Формат ответа
| Поля | Тип | Описание |
|---|---|---|
requestId | Нить | Необходимый. Идентификатор соответствующего запроса. |
payload | Объект | Необходимый. Полезная нагрузка ответа на намерение. |
agentUserId | Нить | Необходимый. Отражает уникальный (и неизменяемый) идентификатор пользователя на платформе агента. Эта строка непрозрачна для Google, поэтому, если на стороне агента используется неизменяемая форма, а если изменяемая, используйте неизменяемую форму (например, номер счета, а не адрес электронной почты). |
errorCode | Нить | Для систематических ошибок в SYNC |
debugString | Нить | Подробное сообщение об ошибке, которое никогда не будет показано пользователям, но может быть зарегистрировано или использовано в процессе разработки. |
devices | Множество | Необходимый. Список устройств, принадлежащих пользователю. Возвращается ноль или более устройств (ноль устройств означает, что у пользователя нет устройств или он отключил их все). |
[ item, ... ] | Объект | Метаданные устройства. |
id | Нить | Необходимый. Идентификатор устройства в облаке разработчика. Он должен быть уникальным как для пользователя, так и для разработчика, поскольку в случаях совместного использования мы можем использовать его для удаления дубликатов нескольких представлений одного и того же устройства. Он должен быть неизменяемым для устройства; если он изменится, Ассистент будет рассматривать его как новое устройство. |
type | Нить | Необходимый. Тип аппаратного устройства. Необходимо совпадать с шаблоном: |
traits | Множество | Необходимый. Список характеристик данного устройства. Здесь определяются команды, атрибуты и состояния, которые поддерживает устройство. |
[ item, ... ] | Нить | Название поддерживаемого признака. Необходимо совпадать с шаблоном: |
name | Объект | Необходимый. Названия этого устройства. |
defaultNames | Множество | Список названий, предоставленный разработчиком, а не пользователем, часто включает названия производителей, артикулы и т. д. |
[ item, ... ] | Нить | Имя устройства по умолчанию. |
name | Нить | Необходимый. Основное имя устройства, как правило, предоставляется пользователем. Это также имя, которое Ассистент будет предпочитать использовать для описания устройства в ответах. Имена будут усечены, если их длина превышает 60 символов в кодовой точке Unicode, и ошибки не будут возникать. Разработчики несут ответственность за обработку длинных имен. |
nicknames | Множество | Дополнительные имена, предоставленные пользователем для устройства. |
[ item, ... ] | Нить | Псевдоним устройства. |
willReportState | Логический | Необходимый. Указывает, будет ли состояние данного устройства обновляться через канал реального времени. (Значение `true` означает использование канала реального времени для передачи данных о состоянии, а `false` — использование модели опроса.) |
notificationSupportedByAgent | Логический | (По умолчанию: Указывает, включены ли уведомления для устройства. |
roomHint | Нить | Предоставляет информацию о текущем расположении устройства в доме пользователя для упрощения настройки. |
deviceInfo | Объект | Содержит поля, описывающие устройство, для использования в одноразовой логике при необходимости (например, «неисправная версия прошивки X индикатора Y требует корректировки цвета» или «уязвимость в системе безопасности требует уведомления всех пользователей прошивки Z»). |
manufacturer | Нить | Это особенно полезно, когда разработчик является центром управления для других устройств. Google может предоставить здесь стандартный список производителей, чтобы, например, TP-Link и Smartthings одинаково описывали «osram». |
model | Нить | Модель или артикул конкретного устройства. |
hwVersion | Нить | При наличии, к оборудованию прикреплен конкретный номер версии. |
swVersion | Нить | Если имеется, то указан конкретный номер версии программного обеспечения/прошивки. |
attributes | Объект | Соответствует атрибутам каждого признака, описанным в справочнике схем признаков. |
customData | Объект | Объект, определенный разработчиком, будет прикреплен к будущим запросам QUERY и EXECUTE, максимальный размер — 512 байт на устройство. Используйте этот объект для хранения дополнительной информации об устройстве, которая может потребоваться вашему облачному сервису, например, о глобальном регионе устройства. Данные в этом объекте имеют несколько ограничений: отсутствие конфиденциальной информации, включая, помимо прочего, персональные данные. |
otherDeviceIds | Множество | Список альтернативных идентификаторов, используемых для идентификации устройства, синхронизированного с облаком, для локального выполнения. |
[ item, ... ] | Объект | Альтернативный идентификатор устройства. |
agentId | Нить | Идентификатор агента. Как правило, это идентификатор проекта в консоли действий. |
deviceId | Нить | Необходимый. Идентификатор устройства определяется агентом. Идентификатор устройства должен быть уникальным. |
Примеры
Ответ на намерение SYNC
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "agentUserId": "1836.15267389", "devices": [ { "id": "123", "type": "action.devices.types.OUTLET", "traits": [ "action.devices.traits.OnOff" ], "name": { "defaultNames": [ "My Outlet 1234" ], "name": "Night light", "nicknames": [ "wall plug" ] }, "willReportState": false, "roomHint": "kitchen", "deviceInfo": { "manufacturer": "lights-out-inc", "model": "hs1234", "hwVersion": "3.2", "swVersion": "11.4" }, "otherDeviceIds": [ { "deviceId": "local-device-id" } ], "customData": { "fooValue": 74, "barValue": true, "bazValue": "foo" } }, { "id": "456", "type": "action.devices.types.LIGHT", "traits": [ "action.devices.traits.OnOff", "action.devices.traits.Brightness", "action.devices.traits.ColorSetting" ], "name": { "defaultNames": [ "lights out inc. bulb A19 color hyperglow" ], "name": "lamp1", "nicknames": [ "reading lamp" ] }, "willReportState": false, "roomHint": "office", "attributes": { "colorModel": "rgb", "colorTemperatureRange": { "temperatureMinK": 2000, "temperatureMaxK": 9000 }, "commandOnlyColorSetting": false }, "deviceInfo": { "manufacturer": "lights out inc.", "model": "hg11", "hwVersion": "1.2", "swVersion": "5.4" }, "customData": { "fooValue": 12, "barValue": false, "bazValue": "bar" } } ] } }