Устранение неполадок с интеграцией Matter

refresh_date: 2023-01-06

Google Cloud предоставляет инструменты для отслеживания надежности проектов с помощью Google Cloud Monitoring и устранения неполадок с помощью журналов ошибок Google Cloud Logging. Если при выполнении намерений пользователя происходит сбой, конвейер Google Home Analytics регистрирует его в ваших показателях и публикует журнал ошибок в журналах проекта.

Чтобы устранить ошибки, выполните следующие действия:

  1. Отслеживайте состояние проектов с помощью показателей умного дома.
  2. Изучайте подробные описания ошибок в журналах.

Отслеживание ошибок

Вы можете использовать Google Cloud Monitoring dashboards для доступа к показателям проекта. Ниже перечислены основные диаграммы, которые особенно полезны для отслеживания качества и отладки:

  • Диаграмма Доля успешных запросов – первая, с которой нужно начинать мониторинг надежности проектов. Снижение показателей на этой диаграмме может указывать на сбой в работе сервиса для части или всех пользователей. Мы рекомендуем внимательно следить за этим графиком после каждого изменения или обновления проекта.
  • Диаграммы Разбивка ошибок наиболее полезны при устранении неполадок в интеграциях. Для каждой ошибки, выделенной на диаграмме успешности, в разбивке ошибок показывается код ошибки. В таблице ниже перечислены ошибки, которые может обнаружить Google Home platform, и способы их устранения.

Распространенные коды ошибок платформы

Ниже приведены распространенные коды ошибок, которые могут появляться в журналах проекта и указывать на проблемы, обнаруженные Google Home platform. В таблице ниже приведена информация по устранению неполадок. Полный список кодов ошибок приведен в разделе Ошибки и исключения.

Код ошибки Описание Требуется действие партнера
AGENT_ISSUE Произошла общая ошибка облачного агента партнера.

Проверьте, нет ли в журналах выполнения необработанных исключений или сбоев.
Да
AGENT_UNAVAILABLE_ERROR Google не удалось получить доступ к URL выполнения партнера.

Убедитесь, что сервер работает, брандмауэр не блокирует Google и URL указан правильно.
Да
COMMAND_FAILED При выполнении команды произошла общая ошибка.

Чтобы найти основную причину проблемы, проверьте журналы выполнения запросов на наличие определенного requestId.
Да
EXECUTION_BACKEND_FAILURE_URL_ERROR Google получил от вашего сервиса выполнения ошибку HTTP 4xx (кроме 401).

Проверьте журналы веб-сервера на наличие ответов 403, 404 или 400.
Да
EXECUTION_BACKEND_FAILURE_URL_TIMEOUT При попытке связаться с вашим сервисом истекло время ожидания запроса Google.

Проверьте, что сервис работает, принимает подключения и не перегружен. Кроме того, убедитесь, что целевое устройство включено, подключено к интернету и синхронизировано.
Да
EXECUTION_BACKEND_FAILURE_URL_ROBOTED URL выполнения заблокирован файлом robots.txt или фильтрами безопасности.

Убедитесь, что конечная точка выполнения доступна для поисковых роботов и сервисов Google.
Да
EXECUTION_BACKEND_FAILURE_URL_UNREACHABLE Google получил от вашего сервиса выполнения запросов ошибку HTTP 5xx.

Убедитесь, что URL конечной точки стабилен, указан правильно и общедоступен, а также что сервис запущен. Используйте requestId в Google Cloud Logging, чтобы проверить журналы сервиса умного дома. Добавьте проверки состояния и обработку повторных попыток. Проверьте, не возникают ли сбои сервера, ошибки тайм-аута или ошибки шлюза 502/503.
Да
EXECUTION_BAILOUT_INVALID_RESPONSE Ответ JSON был настолько поврежден, что его обработка была прервана.

Используйте валидатор JSON, чтобы убедиться, что ответ соответствует схемам намерений.
Да
EXECUTION_GAL_BAD_3P_RESPONSE Не удалось связать аккаунты из-за неверного формата в ответе с токеном.

Убедитесь, что формат ответа сервера OAuth соответствует требованиям Google.
Да
EXECUTION_GAL_INSUFFICIENT_CAPABILITIES У аккаунта пользователя нет необходимых разрешений для выполнения этого действия.

Проверьте, какие области доступа были запрошены во время авторизации OAuth, и убедитесь, что они соответствуют необходимым характеристикам.
Да
EXECUTION_GAL_MAYBE_UNLINKED_BY_3P В облаке партнера указано, что пользователь отменил связь аккаунтов.

Убедитесь, что сопоставление agentUserId стабильно и не было удалено.
Да
EXECUTION_GAL_NOT_FOUND Токены доступа и обновления пользователя, хранящиеся в Google, недействительны или не могут быть обновлены, что препятствует аутентификации и доступу к сервису партнера.

Следите за тем, чтобы токены оставались действительными и синхронизированными, правильно обрабатывайте изменения статуса аккаунта и требуйте от пользователей повторно связать аккаунт, если токены были отозваны.
EXECUTION_GAL_READ_ONLY_MODE_FOR_3P Интеграция доступна в режиме "только для чтения" на стороне партнера.

Проверьте, не заблокирован ли аккаунт пользователя и не находится ли он в режиме "только просмотр".
Да
EXECUTION_GAL_UNLINKED_BY_3P Связь с аккаунтом была отменена по инициативе стороннего сервиса.

Выясните, почему пользователь был отключен (например, из-за сброса настроек безопасности). Убедитесь, что OAuth-сервер партнера корректно отвечает на запросы refresh_token от Google на выдачу новых токенов доступа.
Да
EXECUTION_INVALID_JSON Google не удалось обработать полезную нагрузку ответа JSON.

Проверьте ответ на наличие синтаксических ошибок, незакрытых скобок или недопустимых символов.
Да
INVALID_AUTH_TOKEN Сервис вернул Google код ошибки HTTP 401.

Срок действия токена доступа не истек, но ваш сервис признал его недействительным. Используйте requestId в Google Cloud Logging, чтобы проверить журналы сервиса умного дома.
INVALID_JSON Недействительная структура ответа (например, отсутствуют обязательные поля).

Проверьте ответ на соответствие схемам JSON для намерений.
Да
MALFORMED_JSON Структура JSON нарушена (например, не закрыты строки или объекты).

Убедитесь, что для сериализации ответов в вашем сервисе выполнения используется стандартная библиотека JSON.
Да
NOT_IMPLEMENTED Запрошенное намерение или характеристика не реализованы партнером.

В ответе SYNC должны быть только те функции, которые вы полностью реализовали.
Да
OPEN_AUTH_FAILURE Срок действия токена доступа пользователя истек, и Google не может его обновить, или Google получил от вашего сервиса код ошибки HTTP 401.

Если вы заметили, что этот код стал появляться чаще, проверьте, не увеличилось ли количество ошибок, связанных с намерениями для умного дома или запросами токенов обновления.
PARTNER_RESPONSE_INVALID_ERROR_CODE Возвращенная строка errorCode не входит в список поддерживаемых Google.

Сопоставьте свои внутренние ошибки с официальным списком ошибок.
Да
PARTNER_RESPONSE_INVALID_PAYLOAD Поле payload в ответе не является допустимым объектом JSON.

Проверьте корневую структуру ответа на запрос о выполнении заказа.
Да
PARTNER_RESPONSE_INVALID_STATUS Ответ status не был SUCCESS, ERROR или OFFLINE.

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

Проверьте структуру ответа на соответствие документации для разработчиков Google Home. Убедитесь, что ответ не усечен и не содержит пустое тело из-за внутренней ошибки сервера. Каждому элементу массива commands в запросе должен соответствовать элемент в ответе.
Да
PARTNER_RESPONSE_MISSING_DEVICE Указанное Google устройство не было включено в ответ.

Убедитесь, что в ответе есть все значения ID, указанные в полезной нагрузке запроса.
Да
PARTNER_RESPONSE_MISSING_PAYLOAD В ответе отсутствует обязательное поле payload.

Убедитесь, что объект JSON верхнего уровня содержит ключ payload.
Да
PARTNER_RESPONSE_NOT_OBJECT Не удалось проанализировать весь ответ как объект JSON.

Проверьте, нет ли в теле ответа HTTP лишних символов или контента, не относящегося к JSON. Убедитесь, что payload.commands[] – это корректный объект JSON с идентификаторами, статусом и необязательными состояниями.
Да
REQUEST_ID_NOT_FOUND Google не удалось найти внутренний идентификатор отслеживания для запроса.

Обычно это внутренняя ошибка платформы. Следите за скачками и обратитесь в службу поддержки.
Да
RESOURCE_UNAVAILABLE Запрошенный ресурс (устройство или trait) недоступен.

Проверьте, не занято ли устройство или не было ли оно временно отключено.
Да
RESPONSE_TIMEOUT Сервис выполнения не ответил в течение девяти секунд.

Оптимизируйте задержку на стороне сервера. Проверьте, нет ли медленных запросов к базе данных или региональных задержек в сети.
Да
RESPONSE_UNAVAILABLE От URL выполнения партнера не получен ответ.

Убедитесь, что сервис работает и конечная точка не зависает.
Да
TIMEOUT При обработке намерения истекло общее время ожидания.

Проверьте журналы на наличие внутренних тайм-аутов сервиса между облаком и концентраторами устройств.
Да

Журналы поиска

Когда вы научитесь отслеживать интеграции с помощью показателей, следующим шагом будет устранение неполадок с помощью Cloud Logging. Журнал ошибок – это запись в формате JSON с полями, содержащими полезную информацию, например время, код ошибки и сведения об исходном намерении для умного дома.

В Google Cloud есть несколько систем, которые постоянно отправляют журналы в ваш проект. Вам нужно составлять запросы, чтобы фильтровать журналы и находить нужные. Запросы могут быть основаны на диапазоне времени, ресурсе, серьезности журнала или специальных записях.

Как запрашивать журналы Cloud Logging

Чтобы создать пользовательские фильтры, используйте кнопки запросов.

Как создавать запросы к журналам облака

Чтобы задать временной диапазон, нажмите на кнопку выбора диапазона и выберите один из предложенных вариантов. Это позволит отфильтровать журналы и показать только те, которые относятся к выбранному временному диапазону.

Чтобы указать ресурс, нажмите на раскрывающийся список Ресурс и выберите Проект действий Google Ассистента. В запрос будет добавлен фильтр, чтобы показывать журналы, относящиеся к вашему проекту.

Нажмите кнопку Серьезность, чтобы отфильтровать данные по уровням серьезности журнала, например Критический, Информация, Отладка и т. д.

Вы также можете использовать поле "Запрос" в Logs Explorer, чтобы вводить собственные записи. Механизм запросов, используемый этим полем, поддерживает как простые запросы, например сопоставление строк, так и более сложные, в том числе компараторы (<, >=, !=) и логические операторы (AND, OR, NOT).

Например, указанная ниже запись будет возвращать ошибки, связанные с устройствами типа LIGHT:

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

Чтобы найти больше примеров эффективных запросов к журналам, посетите библиотеку запросов.

Проверка исправлений

После того как вы выявите ошибки и примените обновления, чтобы исправить их, мы рекомендуем тщательно протестировать исправления с помощью Google Home Test Suite. Мы подготовили руководство по использованию Test Suite, в котором рассказывается, как эффективно тестировать изменения.

Учебные ресурсы

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