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