Устранение ошибок интеграции

Связь между облаками имеет значение

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

Для устранения ошибок необходимо выполнить два шага:

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

Процесс аналогичен для локальной интеграции с использованием Local Home SDK . Как только вы освоите процесс устранения неполадок, вы сможете легко переключаться между метриками и логами, чтобы получить представление об ошибках.

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

Ошибки мониторинга

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

  • Диаграмма «Уровень успешности» — это первая диаграмма, с которой следует начинать при мониторинге надежности ваших проектов. Падение значений на этой диаграмме может указывать на сбой в работе части или всей вашей пользовательской базы. Мы рекомендуем внимательно отслеживать эту диаграмму на предмет любых отклонений после каждого изменения или обновления вашего проекта.
  • Диаграмма задержки 95-го процентиля является важным индикатором производительности вашей Cloud-to-cloud интеграции для пользователей. Внезапные колебания на этой диаграмме могут указывать на то, что ваши системы не справляются с обработкой запросов. Рекомендуется периодически проверять эту диаграмму, чтобы выявлять любые неожиданные изменения.
  • Диаграммы с подробным описанием ошибок наиболее полезны при устранении неполадок в ваших интеграциях. Для каждой ошибки, выделенной на диаграмме процента успешности, в подробном описании ошибок отображается код ошибки. В таблице ниже вы можете увидеть ошибки, отмеченные Google Home platform , и способы их устранения.

Общие коды ошибок платформы

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

Код ошибки Описание Действия партнера
ACTION_NOT_AVAILABLE Данная команда недействительна для текущего состояния устройства (например, "Установить температуру", когда устройство выключено).

Проверьте характеристики устройства и логику текущего состояния в процессе выполнения заказа.
Да
AGENT_ISSUE Возникла общая проблема с облачным агентом партнера.

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

Убедитесь, что ваш сервер подключен к сети, брандмауэр не блокирует доступ Google и URL-адрес указан правильно.
Да
APP_LAUNCH_FAILED Не удалось запустить стороннее приложение на целевом устройстве.

Проверьте идентификатор приложения (appId) и убедитесь, что приложение поддерживается целевым оборудованием.
Да
AUTH_EXPIRED Срок действия токена доступа OAuth истек, и его невозможно обновить.

Проверьте ротацию токенов обновления и убедитесь, что пользователь не отозвал доступ.
Да
BACKEND_FAILURE_URL_TIMEOUT Запрос Google к вашему сервису завершился по истечении времени ожидания.

Убедитесь, что ваша служба подключена к сети, принимает соединения и не перегружена. Кроме того, убедитесь, что целевое устройство включено, подключено к сети и синхронизировано.
BACKEND_FAILURE_URL_UNREACHABLE Компания Google получила от вашего сервиса код ошибки HTTP 5xx.

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

Проверьте названия/номера каналов и статус подписки пользователя.
Да
CHARGER_ISSUE Устройство сообщает о проблеме с аппаратной частью системы зарядки.

Партнеру следует изучить данные телеметрии на аппаратном уровне и состояние батареи.
Да
CHECK_PARTNER_APP Для устранения ошибки пользователю необходимо открыть приложение партнера.

Этот код следует использовать для обработки ошибок, требующих сложного взаимодействия с пользовательским интерфейсом (например, при обновлении прошивки).
Да
COMMAND_FAILED Произошла общая ошибка во время выполнения команды.

Проверьте журналы выполнения запросов на наличие конкретного requestId , чтобы найти первопричину проблемы.
Да
COMMAND_INSERT_FAILED Компания Google не смогла поставить команду в очередь или обработать её для устройства.

Изучите производительность записи в базу данных или внутреннюю логику постановки команд в очередь.
Да
DEVICE_NOT_FOUND Идентификатор устройства в запросе отсутствует на стороне партнера.

Убедитесь, что ваше облако запускает requestSync , когда пользователь добавляет или удаляет устройства.
Да
ERROR_STATUS В ответе был указан неспецифический статус «ОШИБКА» без кода.

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

Проверьте журналы вашего веб-сервера на наличие ответов 403, 404 или 400.
Да
EXECUTION_BACKEND_FAILURE_URL_ROBOTED URL-адрес, используемый для выполнения запроса, блокируется файлом robots.txt или фильтрами безопасности.

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

Проведите расследование причин сбоев сервера, превышения времени ожидания или ошибок шлюза 502/503.
Да
EXECUTION_BAILOUT_INVALID_RESPONSE JSON-ответ был настолько некорректно сформирован, что обработка была прервана.

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

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

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

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

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

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

Проверьте свой ответ на наличие синтаксических ошибок, пропущенных скобок или недопустимых символов.
Да
FAULTY_BATTERY Аппаратное обеспечение устройства сообщает о неисправности или разрядке батареи.

Проинструктируйте пользователя, использующего синтез речи или приложение, заменить физическую батарею.
Да
FUNCTION_NOT_SUPPORTED Запрошенный режим или функция не поддерживаются устройством.

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

Используйте это в случае необратимых сбоев оборудования или невосстановимого состояния учетной записи.
Да
INVALID_AUTH_TOKEN Компания Google получила от вашего сервиса код ошибки HTTP 401.

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

Проверьте свой ответ на соответствие JSON-схемам намерений .
Да
LOCK_FAILURE «Умный» замок не смог перейти в запрошенное состояние.

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

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

Убедитесь, что все характеристики, определенные в SYNC , учитываются в каждом ответе QUERY .
Да
NETWORK_PROFILE_NOT_RECOGNIZED Запрошенный сетевой профиль неизвестен устройству.

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

В ответ на запрос SYNC включайте только те характеристики, которые вы полностью внедрили.
Да
OAUTH_RECONNECT_CALL_TO_ACTION Запускает уведомление для пользователя о необходимости повторной привязки его учетной записи.

Используйте это, когда сессия пользователя аннулирована и требуется повторная аутентификация OAuth вручную.
Да
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 В ответе не были указаны результаты для всех запрошенных команд/устройств.

Каждый элемент в массиве commands запроса должен иметь соответствующую запись ответа.
Да
PARTNER_RESPONSE_MISSING_DEVICE В ответе не было указано конкретное устройство, запрошенное Google.

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

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

Проверьте тело HTTP-ответа на наличие символов в конце или содержимого, не относящегося к JSON.
Да
PROTOCOL_ERROR Произошла ошибка в базовом протоколе связи.

Проверьте заголовки HTTP или проверьте, не удалось ли установить соединение по протоколу SSL/TLS.
Да
RELINK_REQUIRED Для продолжения использования интеграции пользователю необходимо повторно привязать свою учетную запись.

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

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

Проверьте, не находится ли устройство в состоянии "Занято" или не отключено ли оно временно.
Да
RESPONSE_TIMEOUT Служба обработки заказов не ответила в течение 9 секунд.

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

Убедитесь, что ваша служба запущена и конечная точка не аварийно завершает работу.
Да
SCENE_CANNOT_BE_APPLIED Запрошенная сцена не может быть активирована (например, отсутствуют устройства).

Проверьте внутреннее состояние пользовательских сценариев в партнерском облаке.
Да
STREAM_UNPLAYABLE Не удалось запустить видеопоток с камеры, или же произошла ошибка.

Проверьте сигнализацию WebRTC/HLS и убедитесь в корректности URL-адреса потока.
Да
TIMEOUT Произошло общее превышение времени ожидания при обработке намерения.

Проверьте журналы на наличие внутренних таймаутов служб между вашим облаком и устройствами.
Да
TRANSIENT_ERROR Временная ошибка — это ошибка, которая исправится сама собой.

Чаще всего эти ошибки проявляются в виде разрыва соединения с устройством или службой. Также это происходит, если не удаётся установить новые соединения с сервером.
UNABLE_TO_LOCATE_DEVICE Устройство не удалось обнаружить с помощью параметра Locator (например, проверка связи не удалась).

Проверьте локальные возможности устройства (Wi-Fi/Bluetooth).
Да
UNABLE_TO_RING_DEVICE Устройство удалось подключить, но функция звонка/оповещения не сработала.

Проверьте состояние оповещения/динамика и уровни громкости оборудования.
Да
UNABLE_TO_SILENCE_DEVICE Устройство не могло отключить активный сигнал оповещения/звонок.

Проведите расследование причин сбоев связи между облаком и физическим устройством.
Да
UNEXPECTED_ERROR_CHECK_DEVICE_APP Произошла непредвиденная ошибка; пользователю следует проверить партнерское приложение.

Используйте это как универсальный способ для обработки ошибок, для которых нет конкретного аналога, поддерживаемого Google.
Да
UNKNOWN_ERROR Типичная ошибка, без предоставления дополнительных подробностей.

Рекомендуется заменить эти коды на более конкретные, чтобы упростить поиск и устранение неисправностей.
Да
UNLOCK_FAILURE «Умный» замок не смог перейти в состояние «Разблокировано».

Рассмотрите возможные проблемы: заклинивание оборудования, низкий заряд батареи или неверный ввод PIN-кода.
Да

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

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

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

Запрос к облачным журналам

Вы можете использовать кнопки запросов для создания собственных фильтров.

Создание запросов к облачным журналам

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

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

Используйте кнопку «Уровень серьезности» , чтобы отфильтровать сообщения по уровням серьезности: «Экстренная ситуация» , «Информация» , «Отладка» и другим.

В 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 , которое поможет вам эффективно протестировать ваши изменения.

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

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