Общий
В: Где и на каком языке следует внедрять нашу инфраструктуру обработки заказов между облачными сервисами?
A: Если ваша инфраструктура поддерживает современные протоколы SSL (TLS) и OAuth 2.0, вы можете использовать любую платформу и любой язык программирования по своему выбору. Мы рекомендуем развертывать инфраструктуру как можно ближе к остальной части вашей инфраструктуры, чтобы повысить надежность и уменьшить задержку при выполнении кода на устройствах реальных пользователей.
В: Должны ли идентификаторы устройств быть уникальными?
А: Идентификаторы должны быть уникальными. Если в вашем сервисе нет уникальных идентификаторов, они должны быть уникальными, по крайней мере, на уровне каждого пользователя. Представьте пользователя с несколькими домами, в обоих из которых есть интеграции с одним и тем же пользователем. Запрос на включение света в одном доме не должен включать свет с тем же идентификатором в другом доме.
В: Должны ли имена устройств быть уникальными?
А: Названия не обязательно должны быть уникальными, хотя со временем мы можем побудить пользователей улучшить неудачные названия после настройки для повышения удобства использования.
Вот краткое руководство по именованию:
- Имена должны быть такими, которые люди действительно могут произнести вслух.
- Мы распознаём подмножества строк, поэтому, если у вас есть «acme color light», мы также ответим «acme light».
- Мы рекомендуем использовать как описательное название для продукта, так и одно или несколько названий, заданных пользователем.
- Пользователям не нужно давать названия комнатам для освещения, потому что у нас есть комнаты для этого; у каждой комнаты должно быть уникальное название, но для управления всем можно использовать множественное число (например, две лампочки в офисных бра называются «северный свет» и «восточный свет», но ими можно управлять просто как «свет»).
В: Как часто обновляется состояние устройства?
A: Временное состояние извлекается либо при выполнении запроса (QUERY), либо при выполнении действия, инициированного пользователем. Если пользователь спрашивает: «Включен ли свет?» или хочет увеличить яркость света, нам потребуется выполнить запрос, чтобы определить текущее состояние.
В: Можно ли обновить Home Graph напрямую, используя текущее состояние устройства?
А: Да, используйте вызов API Report State .
Связывание учетных записей и OAut
В: Нужно ли нам связывать учетные записи?
А: Да, для подключения устройств пользователя к облачным сервисам провайдера требуется привязка учетной записи.
В: В OAuth срок действия токенов доступа истекает каждые 15,213 часов, это нормально?
А: Да, но, пожалуйста, протестируйте с достаточно коротким сроком действия, скажем, 10-20 минут. Наш OAuth-клиент должен обновлять токены по мере необходимости, и тестирование с коротким сроком действия подтвердит, что это работает.
Намерения
В: Когда происходит синхронизация?
A: Синхронизация происходит сразу после завершения аутентификации OAuth и после выполнения вызова Request Sync .
В: Почему не работает SYNC ?
А: Существует ряд распространенных причин, по которым это может не сработать.
Вы отправляете не те типы устройств.
- Например, мы ожидаем
action.devices.types.LIGHT, а вы отправляетеaction.devices.types.Light.
- Например, мы ожидаем
Вы отправляете неподдерживаемые типы устройств.
- Например, вы отправляете
action.devices.types.FLASHLIGHT— мы это не поддерживаем.
- Например, вы отправляете
Вы отправляете недопустимые/неподдерживаемые поля.
- Например, у вас есть поле, которое не включено в нашу спецификацию.
В вашем ответе от SYNC обнаружена еще одна проблема с форматированием.
- Проверьте свои скобы!
У вас возникла проблема с привязкой учетной записи.
- Пожалуйста, убедитесь, что в заголовке Auth запроса SYNC вы получаете действительный токен доступа.
Вы слишком долго отвечаете на запрос синхронизации.
- Пожалуйста, убедитесь, что вы отвечаете на запрос синхронизации в течение 5 секунд.
В: Допустим ли ответ в статусе «ожидает подтверждения»?
A: Мы бы настоятельно рекомендовали получать ответ с подтверждением успеха/неудачи, а не в режиме ожидания, если ваши устройства доступны в режиме реального времени. Пожалуйста, свяжитесь с нами, если вы считаете, что вам необходим ответ в режиме ожидания — мы понимаем, что некоторым маломощным устройствам, не работающим в режиме реального времени, может потребоваться ответ в режиме ожидания и асинхронная модель выполнения.
Тестирование и отправка
В: Можно ли настроить облачную среду для разработки?
А: Да, вы можете протестировать незапущенную облачную среду и ее конфигурацию.
В: Мое действие не отображается в разделе «Управление умным домом» приложения Google Home. В чем причина?
А: Подтвердите, что вы являетесь разработчиком этого проекта.
Сообщить о штате
В: Существуют ли какие-либо предварительные условия для внедрения функции «Отчет о состоянии»?
A: Проект должен использовать API Smart Home, поддерживать OAuth2 и иметь характеристики, которые должны передавать информацию о состоянии.
В: Как часто необходимо сообщать о состоянии устройства?
А: Google интересует как переход между состояниями, так и конечное состояние. Однако, если за короткий промежуток времени происходит много изменений состояния (например, пользователь открывает и закрывает холодильник три раза в минуту или регулирует яркость диммера), то нам нужно сообщать только о конечном состоянии.
В: Нужно ли передавать полное состояние устройства при выполнении вызовов функции Report State?
A: Частичное обновление состояния не поддерживается, поэтому вызовы функции Report State всегда должны включать все данные для конкретного обновленного параметра. Если обновление двух параметров приведет к несоответствию, данные следует сообщать вместе.
В: Может ли Google запрашивать информацию о состоянии моего устройства (то есть, опрашивать устройство)?
A: Это резервный механизм, который мы не рекомендуем. Если нам потребуется часто опрашивать устройство для этих пользователей, мы не можем гарантировать, какой будет дополнительная нагрузка. Необходимость в этом возникает из-за новых визуальных интерфейсов. Помимо проблемы с неизвестной нагрузкой, это приведет к ухудшению пользовательского опыта. Мы считаем, что Report State имеет решающее значение для платформы.
В: Какие характеристики сейчас поддерживают функцию «Состояние отчета»?
A: Поддерживаются все общедоступные характеристики, имеющие связанные с ними состояния. Любые изменения в состоянии устройства (в сети) также должны быть зарегистрированы.
Обратите внимание, что сцены не имеют состояний. Однако они могут привести к изменению состояния устройства (или устройств). Если какое-либо устройство в Google Home Graph изменило свое состояние, об этом необходимо сообщить.
В: Требуется ли для отчета State указывать отметку времени?
А: Нам не требуется метка времени; последнее отправленное состояние будет иметь приоритет над предыдущими вызовами.
В: Нужно ли мне сообщать о состоянии отдельно, если я уже отправляю состояние в запросах и/или при выполнении?
A: Home Graph хранит только то состояние, которое передается через Report State . Состояние, возвращаемое в ответ на интенты EXECUTE и QUERY, используется только для голосовых ответов пользователю и не сохраняется. Поэтому Report State следует вызывать даже в том случае, если новое состояние устройства уже было возвращено в ответ на интент EXECUTE или QUERY.
В: Какие последствия будут иметь неполные результаты внедрения системы Report State в установленные сроки?
A: Это приведет к ухудшению пользовательского опыта, например, в Google Home app (GHA) и визуальных интерфейсах. Это означает, что множество запросов QUERY будут отправляться для проверки состояния, и мы не можем гарантировать, что это будет соответствовать дополнительной нагрузке на облако партнера.
В: Как я могу протестировать нашу реализацию функции «Отчет о состоянии»?
A: Воспользуйтесь Home Graph Viewer — инструментом самообслуживания для тестирования, который отображает текущее состояние ваших устройств, хранящееся в Home Graph .
В: Можно ли использовать случайный requestId для состояния отчета?
A: Мы рекомендуем партнерам использовать тот же requestId, который они получили из запроса EXECUTE, если Report State запускается этим запросом. В противном случае вы можете просто использовать случайный requestId.
В: Если у пользователя несколько устройств, и состояние одного из них изменилось, нужно ли сообщать о последнем состоянии всех устройств?
А: Нет. Вам нужно сообщить только о состоянии конкретного устройства.
Передовые методы
В: Какая задержка считается допустимой?
A: Идеальный показатель — менее 1000 мс, от 2 до 5 секунд — нормально. Если задержка составляет около 5 секунд, свяжитесь с нами.
В: Как сделать так, чтобы мой голосовой динамик корректно реагировал, когда он не подключен к сети?
A: Возвращает состояние "офлайн" для устройств, находящихся в автономном режиме. В этом случае мы возвращаем "недоступно в данный момент" в качестве TTS (текста речи). Для получения дополнительной информации см. раздел "Ошибки и исключения" .