排查集成错误

云到云    Matter

Google Cloud 为您提供使用 Google Cloud Monitoring 监控项目可靠性的工具,并使用 Google Cloud Logging 错误日志调试问题。每当在满足用户意图时发生失败,Google Home Analytics 管道都会将该失败记录在您的指标中,并在您的项目日志中发布错误日志。

若要对错误进行问题排查,需要执行两个步骤:

  1. 利用智能家居指标监控您的项目状态。
  2. 通过查看错误日志中的详细错误描述来调查问题。

使用 Local Home SDK 进行本地集成的过程类似。一旦你掌握了故障排除流程,你就可以轻松地在指标和日志之间来回切换,从而深入了解你的错误。

您可以选择通过与其他用户共享您的 Action 来测试该 Action。务必处理错误和异常恰当。

监控错误

您可以使用 Google Cloud Monitoring dashboards 访问您的项目指标。以下是一些对于监控质量和调试尤为有用的关键图表:

  • 监控项目可靠性时,首先应关注成功率图表。如果此图表中的指标下降,可能表示用户群中的部分用户或所有用户遇到了服务中断。我们建议您在每次项目发生更改或更新后密切监控此图表,看看是否有任何异常情况。
  • 第 95 百分位延迟图表是衡量您工作情况的重要指标。Cloud-to-cloud集成功能正在为您的用户提供服务。 如果此图表中突然出现波动,可能表示您的系统跟不上请求的速度。建议您定期查看此图表,看看是否有任何意外行为。
  • 在排查集成问题时,错误分解图表最为有用。针对成功百分比图表中突出显示的每个错误,错误细分图表中都会相应显示一个错误代码。您可以在下表中查看 Google Home platform 标记的错误以及如何解决这些错误。

平台错误代码

以下是项目日志中的一些常见错误代码,用于识别 Google Home platform发现的问题。请参阅下表,了解问题排查信息。

错误代码 说明
BACKEND_FAILURE_URL_ERROR Google 从您的服务中收到除 401 之外的 HTTP 4xx 错误代码。

使用requestId在 GCP 日志记录中查看您的智能家居服务日志。
BACKEND_FAILURE_URL_TIMEOUT Google 在尝试访问您的服务时请求超时。

验证您的服务是否处于在线状态、是否接受连接以及是否未超出容量。此外,请验证目标设备是否已开机、已联网且已同步。
BACKEND_FAILURE_URL_UNREACHABLE Google 从您的服务收到 HTTP 5xx 错误代码。

在 GCP Logging 中使用 requestId,以查看智能家居服务日志。
DEVICE_NOT_FOUND 合作伙伴服务端不存在相应设备。

这通常表示数据同步失败或出现竞态条件。
GAL_BAD_3P_RESPONSE 由于载荷中的格式或值无效,Google 无法解析来自账号关联服务的响应。

在 GCP Logging 中使用 requestId,以查看您的账号关联服务中的错误日志。
GAL_INTERNAL Google 尝试检索访问令牌时发生 Google 内部错误。

如果您在 GCP Logging 中发现此错误的出现频率增加,请联系我们以了解更多信息。
GAL_INVALID_ARGUMENT Google 尝试检索访问令牌时发生 Google 内部错误。

如果您在 GCP Logging 中发现此错误的出现频率增加,请联系我们以了解更多信息。
GAL_NOT_FOUND 储存在 Google 的用户访问令牌和刷新令牌已失效,无法再刷新。用户需要重新关联账号,才能继续使用您的服务。

如果您在 GCP Logging 中发现此错误的出现频率增加,请联系我们以了解更多信息。
GAL_PERMISSION_DENIED 令牌共享未获得授权时发生 Google 内部错误。

如果您在 GCP Logging 中发现此错误的出现频率增加,请联系我们以了解更多信息。
GAL_REFRESH_IN_PROGRESS 用户的访问令牌已过期,而系统已经同时尝试再次对其进行刷新。

这不是问题,无需执行任何操作。
INVALID_AUTH_TOKEN Google 从您的服务收到 HTTP 401 错误代码。

访问令牌未过期,但您的服务已使其失效。 使用 GCP 日志记录中的 requestId 来查看您的智能家居服务日志。
INVALID_JSON 无法解析或理解 JSON 响应。

检查 JSON 响应的结构,看看是否存在语法无效的问题,例如括号不匹配、缺少逗号、字符无效。
OPEN_AUTH_FAILURE 用户的访问令牌已过期,Google 无法刷新该令牌,或者 Google 从您的服务收到了 HTTP 401 错误代码。

如果您发现此代码的出现频率增加,请检查与智能家居 intent 或刷新令牌请求相关的错误的出现频率是否也有所增加。
PARTNER_RESPONSE_INVALID_ERROR_CODE 响应显示存在无法识别的错误代码。

如果您的请求响应显示错误,请务必使用我们提供的响应。 支持的错误代码
PARTNER_RESPONSE_INVALID_PAYLOAD 响应的“payload”字段无法解析为 JSON 对象。

检查请求响应中的 payload 字段是否包含匹配的括号,并且是否正确地以 JSON 字段的形式组织。
PARTNER_RESPONSE_INVALID_STATUS 响应不指示状态,或指示的状态不正确。

对 intent 执行请求的响应应该使用 SUCCESS, OFFLINE, ERROR, EXCEPTIONS 的其中一项指示状态。您可以找到有关 处理错误和异常 的更多信息。
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES 请求中存在的一个或多个 intent 在响应中缺失。

确认您的 执行响应格式是否正确,响应中是否有与请求中的所有 intent 对应的结果。
PARTNER_RESPONSE_MISSING_DEVICE 请求中存在的一个或多个设备在响应中缺失。

确认您的 执行响应格式是否正确,响应中是否有请求中存在的所有设备 ID。
PARTNER_RESPONSE_MISSING_PAYLOAD 响应不包含“payload”字段。

请确保在请求响应中包含有效负载字段。您可以详细了解如何正确构建 执行响应
PARTNER_RESPONSE_NOT_OBJECT 响应无法解析为 JSON 对象。

检查请求响应中的所有字段,是否存在非预期字符、不匹配的括号或格式错误。某些 Unicode 字符可能不受支持。另外,请确保您的响应结构正确,为 JSON 对象格式。
PROTOCOL_ERROR 请求处理失败。

在 Google Cloud Logging 中使用 requestId,以查看智能家居服务日志。
RELINK_REQUIRED 响应表明存在 relinkRequired 错误,这会提示用户重新关联其 Google 账号和合作伙伴账号。

参见 支持的错误代码了解更多信息。
RESPONSE_TIMEOUT 请求超时,尚未收到响应。

发送响应的超时期限为自发出请求之时起 9 秒。请务必在此期限内发送回复。
RESPONSE_UNAVAILABLE 未收到响应,或者响应不指示状态。

对意向履行请求的回应应按照以下方式构建: 智能家居文档并标明状态。
TRANSIENT_ERROR 暂时性错误是指能够自行解决的错误。

这些错误最常表现为与设备或服务的连接断开。如果无法打开与服务器的新连接,也会出现此问题。

搜索日志

一旦你熟悉了使用指标监控集成,下一步就是使用 Cloud Logging 来排查具体错误。错误日志是一个类似 JSON 的条目,其中包含诸如时间、错误代码和有关发起智能家居意图的详细信息等字段。

Google Cloud 中有多个系统会随时向您的项目发送日志。你需要编写查询语句来过滤日志找到你需要的那些。查询可以基于 时间范围资源、日志 严重性 或自定义条目。

查询云日志

您可以使用查询按钮来帮助您构建自定义过滤条件。

构建云日志查询

如需指定时间范围,请点击时间范围选择按钮 ,然后从提供的选项中选择一个。这将过滤日志,并显示选定时间范围内产生的日志。

若要指定资源,请点击资源下拉菜单,然后选择 Google 助理 Action 项目。这将向查询中添加一个过滤器,以显示源自您项目的日志。

使用严重级别按钮,按紧急信息调试和其他严重级别日志等级进行过滤。

您还可以使用 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 使用方法的用户指南,该指南会逐步指导您有效地对更改进行测试。

学习资源

本文档说明了对智能家居 Action 中的错误进行问题排查的步骤。您也可以查看我们的 Codelab,详细了解调试: