排查集成错误

Google Cloud 为您提供监控项目可靠性的工具 使用Google Cloud Monitoring,调试Google Cloud Logging问题 错误日志。每当执行用户 intent 失败时, Google Home Analytics 流水线会记录指标的失败情况, 在您的项目日志中发布错误日志。

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

  1. 使用智能家居指标监控项目的状态。
  2. 通过查看 错误日志。

该流程与使用 Local Home SDK。掌握问题排查流程后,您可以 轻松在指标和日志之间来回切换,深入了解 错误。

监控错误

您可以使用 Google Cloud Monitoring dashboard 访问项目指标。有一些关键的图表在 有助于监控质量和进行调试:

  • 启动应用时,首先打开成功率图表。 监控项目可靠性。此图表中的数据下降可能 表明用户群中部分或全部用户遇到了服务中断。我们建议 每次更改后密切监控此图表是否存在任何异常 或更新为项目。
  • 第 95 百分位延迟时间图表是衡量 你的智能家居 Action 对用户的表现如何。突然的波动 则可能表明您的系统可能无法跟上 一起处理请求建议您定期查看此图表 任何意外行为
  • 错误细分图表最适用于以下情况: 排查集成问题针对每个错误 会突出显示,系统会显示一个错误代码 。您可以看到 以及如何排查这些问题Google Home platform

平台错误代码

下面是您可能会在项目日志中看到的一些常见错误代码, 找出 Google Home platform 发现的问题。请参阅 获取问题排查信息。

错误代码 说明
BACKEND_FAILURE_URL_ERROR Google 从您的 服务。

使用 GCP Logging 中的 requestId 检查您的智能 家政服务日志
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 尝试检索 访问令牌。

如果您在 GCP Logging 中发现此错误的发生频率上升,请联系 与我们联系。
GAL_INVALID_ARGUMENT 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 Logging 中的 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 在 响应。

验证您的 <ph type="x-smartling-placeholder"></ph> 执行响应的结构正确,且结果 请求的所有 intent 都出现在您的响应中。
PARTNER_RESPONSE_MISSING_DEVICE 请求中提供的一台或多台设备不在 响应。

验证您的 <ph type="x-smartling-placeholder"></ph> 执行响应的结构正确无误,且所有设备 这些 ID 会显示在您的响应中。
PARTNER_RESPONSE_MISSING_PAYLOAD 响应不包含 payload 字段。

确保在请求响应中包含载荷字段。您 可以详细了解如何正确构建 <ph type="x-smartling-placeholder"></ph> 执行响应
PARTNER_RESPONSE_NOT_OBJECT 响应无法解析为 JSON 对象。

检查请求响应中的所有字段,看看是否有非预期字符。 括号不匹配或格式错误。部分 Unicode 字符 可能不受支持。此外,请确保您的回答准确无误 构造为 JSON 对象。
PROTOCOL_ERROR 无法处理请求。

使用 Google Cloud Logging 中的 requestId 检查您的 智能家居服务日志
RESPONSE_TIMEOUT 请求在等待响应时超时。

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

对 intent 执行请求的响应应该采用结构化格式 根据 智能家居文档,并指示状态。
TRANSIENT_ERROR 暂时性错误是指可以自行解决的错误。

这些错误通常表现为设备连接或 特定服务此外,如果无法与服务器建立新的连接 已打开。

搜索日志

当您能够熟练地使用指标监控集成后,接下来要做的就是 使用 Cloud Build 和触发器 Cloud Logging。错误日志是 类似 JSON 的条目,其中的字段包含时间、错误等有用信息 与源智能家居 intent 相关的代码和详细信息。

Google Cloud中有多个系统可以将日志发送到 始终保持开启状态您需要 编写查询来过滤日志 并找到所需的组件查询可以基于某个时间范围 资源、记录严重级别或自定义条目。

查询 Cloud 日志

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

构建云日志查询

要指定时间范围,请点击时间范围选择按钮 ,然后从提供的 选项。此操作将过滤日志,并显示 所选时间范围内的数据

若要指定资源,请点击资源下拉菜单。 然后选择 Google 助理 Action 项目。这会在 您的查询,以显示来自您的项目的日志。

使用严重性按钮,按紧急信息调试 和其他严重性日志级别。

您还可以使用 Logs Explorer 中的“Query”(查询)字段 以输入自定义条目。此字段使用的查询引擎支持 字符串匹配等基本查询和更高级类型的查询,包括 比较运算符 (<, >=, !=) 和布尔运算符 (AND, OR, NOT)。

例如,以下自定义条目将返回 来自 LIGHT 设备类型:

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

访问查询库 找到更多有效查询日志的示例。

测试修正效果

在发现错误并应用更新以修正错误后,我们建议您 使用 Cloud Build Google Home Test Suite。我们提供了一份用户指南 如何使用 Test Suite,该示例将引导您测试自己的 。

学习资源

本文档介绍了排查智能家居错误的步骤 行动。您也可以查看我们的 Codelab,详细了解调试: