Умный дом: часто задаваемые вопросы

Общий

Вопрос: Где и на каком языке мы должны реализовать наши действия в инфраструктуре выполнения заказов Google?

О: Если он поддерживает современные 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 секунд.

Вопрос: Нормален ли «ожидающий» ответ?

О: Мы бы предпочли ответ «успех/неуспех», а не «ожидание», если ваши устройства доступны в режиме реального времени. Пожалуйста, свяжитесь с нами, если вы чувствуете, что вам нужен «ожидающий» ответ — мы понимаем, что для некоторых маломощных устройств, не работающих в режиме реального времени, может потребоваться ожидающий ответ и модель асинхронного выполнения.


Тестирование и отправка

Вопрос: Можем ли мы настроить промежуточную среду?

О: Да, создайте отдельный проект и выполните настройку для этого проекта. Вы можете создавать столько проектов, сколько вам необходимо, чтобы сопоставить их с вашими процессами разработки и инфраструктурой.


Вопрос: Как часто мне нужно обновлять черновой проект?

О: Черновой проект необходимо обновлять каждые 3 дня. Через 3 дня агент тестирования исчезнет из настроек mobile-HomeControl. Если вы столкнулись с этим, нажмите кнопку ТЕСТОВЫЙ ПРОЕКТ для своего проекта в Actions on Google Console .


Вопрос: Могу ли я тестировать более чем на одном устройстве одновременно?

Ответ: Actions on Google одновременно поддерживает только одну точку доступа для тестирования на устройстве. Если вы сначала используете TEST DRAFT на «ap1» и синхронизируете устройства, то (не отключая ap1) напрямую запускаете TEST DRAFT «ap2», «ap1» исчезнет из настроек mobile-HomeControl. Чтобы исправить это, снова запустите TEST DRAFT на «ap1» и отсоедините «ap1» в настройках.

Обратите внимание, что этот единый пакет действий будет доступен для пользователя на всех ваших устройствах Google Assistant — например, вы можете протестировать интеграцию нового оборудования как на динамиках с голосовым управлением, так и Android .


Вопрос: Моя заявка на проект Actions была отклонена из-за имени или произношения. Что мне нужно изменить?

О: Мы проверяем произношение имени, чтобы убедиться, что оно не будет использовано другим действием в будущем и соответствует отображаемому имени (во избежание несоответствий, влияющих на будущую регистрацию имени).

Если вы хотите продолжать использовать то же имя, обратитесь в службу поддержки , чтобы команда озвучивания добавила отображаемое имя в Assistant .


Вопрос: Мое действие не отображается в разделе «Управление домом» приложения Google Home. Что происходит?

Ответ: Проблема может быть одной из следующих:

  • Вы не нажали кнопку ТЕСТОВЫЙ ЧЕРНОВИК для своего проекта в Actions Console .
  • В режиме «Тестирование на устройстве» одновременно можно выполнить только одно действие.
  • В Actions Console перейдите на вкладку «Симулятор» вашего проекта «Действия» и переключите переключатель «Активный/Неактивный» на «Неактивный», а затем снова на «Активный».
  • Если вам поделились этим действием, убедитесь, что все инструкции по обмену соблюдены.
  • Срок действия теста на устройстве истекает через три дня. Нажмите кнопку ТЕСТОВЫЙ ЧЕРНОВИК для вашего проекта в Actions Console .

Вопрос: Почему мне выдается ошибка, когда я набираю «поговорить с <my agent name> » в симуляторе?

О: Действия умного дома не используют имена вызовов. Для тестирования в симуляторе необходимо выполнить привязку учетной записи на телефоне Android или iOS с установленным Google Home app (GHA) . Прежде чем привязывать учетные записи, вам также необходимо иметь устройства, связанные с вашей учетной записью.


Вопрос: Почему я получаю ошибки при попытке использовать симулятор?

О: Вы не можете использовать симулятор для тестирования развернутых действий smart 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 в установленные сроки?

Ответ: Это приведет к ухудшению пользовательского опыта, например, в GHA и визуальных поверхностях. Это будет означать, что многие намерения QUERY будут отправлены на опрос состояния, и мы не можем гарантировать, что это будет соответствовать дополнительной нагрузке на партнерское облако.


Вопрос: Как я могу протестировать нашу реализацию состояния отчета?

О: Используйте Home Graph Viewer — инструмент самообслуживания, который показывает текущие состояния вашего устройства, хранящиеся в Home Graph .


Вопрос: Можем ли мы использовать случайный идентификатор запроса для состояния отчета?

О: Мы рекомендуем партнерам использовать тот же идентификатор запроса, который они получили из запроса EXECUTE, если Report State инициируется запросом EXECUTE, в противном случае вы можете просто использовать случайный идентификатор запроса.


Вопрос: Если у пользователя несколько устройств и состояние одного из них изменилось, нужно ли нам сообщать о последнем состоянии всех устройств?

О: Нет. Вам нужно только сообщить о состоянии этого конкретного устройства.


Лучшие практики

Вопрос: Какая задержка приемлема?

О: Идеальное значение — менее 200 мс, нормальное — от 2 до 5 с. Если ваша задержка колеблется около 5 секунд, свяжитесь с нами.


Вопрос: Как заставить голосовой динамик правильно реагировать, когда он находится в автономном режиме?

О: Вернуть автономный режим для автономных устройств. Для этой ошибки мы возвращаем «недоступно сейчас» в виде TTS. Дополнительную информацию см. в разделе Ошибки и исключения .