排解整合錯誤

雲端至雲端    Matter

Google Cloud 提供的工具可讓您利用 Google Cloud Monitoring 監控專案的可靠性,並對 Google Cloud Logging 錯誤記錄檔偵錯。如果在執行使用者意圖時發生失敗情形,Google Home Analytics 管道會記錄指標失敗,並在專案記錄中發布錯誤記錄。

錯誤疑難排解分為兩個步驟:

  1. 透過智慧型住宅指標監控專案狀態。
  2. 查看錯誤記錄檔中的詳細錯誤說明,即可調查問題。

這套程序與使用 Local Home SDK 進行本機整合的程序類似。熟悉疑難排解流程後,您就可以在指標和記錄之間輕鬆來回切換,藉此取得錯誤的深入分析資訊。

監控錯誤

您可以使用 Google Cloud Monitoring dashboard 存取專案指標。以下幾個主要圖表特別適合用於監控品質和偵錯:

  • 「成功率」圖表是監控專案可靠性時的第一個圖表。這張圖表中的下滑情形表示部分或所有使用者的服務中斷。建議您密切監控這張圖表,瞭解專案每次變更或更新後是否有任何異常。
  • 「95 百分位數延遲時間」圖表是瞭解智慧型住宅動作對使用者執行效能的重要指標。這張圖表中的突發波動可能表示您的系統可能無法跟上要求。建議定期檢查這張圖表,瞭解是否有任何非預期的行為。
  • 「錯誤細目」圖表最適合用於排解整合問題。對於成功百分比圖表中醒目顯示的每個錯誤,錯誤細目都會顯示錯誤代碼。您可以在下表中查看 Google Home platform 標記的錯誤及如何進行疑難排解。

平台錯誤代碼

以下是您可能會在專案記錄檔中看到的幾個常見錯誤代碼,用於識別 Google Home platform 所擷取的問題。如需疑難排解資訊,請參閱下表。

錯誤代碼 說明
BACKEND_FAILURE_URL_ERROR Google 收到你的服務傳回 401 以外的 HTTP 4xx 錯誤代碼。

在 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 嘗試擷取存取權杖時發生 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 Logging 中使用 requestId,查看您的智慧型住宅服務記錄。
INVALID_JSON 系統無法剖析或解讀 JSON 回應。

檢查 JSON 回應結構的語法是否無效,例如括號不符、缺少逗號和無效字元。
OPEN_AUTH_FAILURE 使用者的存取權杖已過期,且 Google 無法重新整理,或 Google 已從您的服務收到 HTTP 401 錯誤代碼。

如果您發現這個程式碼的頻率增加,請確認智慧型住宅意圖或更新權杖要求的相關錯誤率是否也增加。
PARTNER_RESPONSE_INVALID_ERROR_CODE 回應表示無法辨識的錯誤代碼。

如果要求回應指出錯誤,請務必使用 支援的錯誤代碼中提供的代碼。
PARTNER_RESPONSE_INVALID_PAYLOAD 無法將回應 payload 欄位剖析為 JSON 物件。

檢查要求回應中的酬載欄位是否與括號相符,且是否正確結構化為 JSON 欄位。
PARTNER_RESPONSE_INVALID_STATUS 回應不會指出狀態不正確或不正確。

對於意圖執行要求要求的回應,應以 SUCCESS, OFFLINE, ERROR, EXCEPTIONS 表示狀態。您可以進一步瞭解 處理錯誤和例外狀況
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES 回應中沒有一或多個意圖。

確認 執行回應的結構是否正確,以及要求中的所有意圖結果都會顯示在回應中。
PARTNER_RESPONSE_MISSING_DEVICE 要求中包含的一或多部裝置缺少回應。

確認 執行回應的結構正確無誤,且回應中包含要求中的所有裝置 ID。
PARTNER_RESPONSE_MISSING_PAYLOAD 回應不含 payload 欄位。

請務必在要求回應中納入酬載欄位。進一步瞭解如何正確建構 執行回應
PARTNER_RESPONSE_NOT_OBJECT 無法將回應剖析為 JSON 物件。

檢查要求回應中的所有欄位,確認是否有非預期的字元、括號不符或格式錯誤。可能不支援部分萬國碼 (Unicode) 字元。此外,請確保回應的結構正確為 JSON 物件。
PROTOCOL_ERROR 無法處理要求。

使用 Google Cloud Logging 中的 requestId,查看智慧型住宅服務記錄檔。
RESPONSE_TIMEOUT 要求在等候回應時逾時。

傳送回應的逾時期限為要求傳送後的 9 秒。請務必在這段時間內回覆。
RESPONSE_UNAVAILABLE 沒有收到回應,或是回應中未指出狀態。

針對意圖執行要求要求的回應,應按照 智慧型住宅文件的結構呈現,並指出狀態。
TRANSIENT_ERROR 暫時錯誤是指會自行解決的錯誤。

這些錯誤通常是因為裝置或服務遭捨棄,此外,如果無法開啟連至伺服器的新連線。

搜尋記錄

熟悉如何使用指標監控整合項目後,下一步就是使用 Cloud Logging 排解特定錯誤。錯誤記錄是類似 JSON 的項目,其中的欄位包含時間、錯誤代碼和原始智慧型住宅意圖相關的實用資訊。

Google Cloud 中有多個系統會隨時將記錄檔傳送至專案的系統。您必須編寫查詢以篩選記錄,然後找到所需的記錄。查詢可以是時間範圍資源、記錄嚴重性或自訂項目。

查詢雲端記錄檔

您可以使用查詢按鈕建立自訂篩選器。

建構 Cloud 記錄檔查詢

如要指定「Time Range」(時間範圍),請按一下時間範圍選取按鈕 ,然後選擇其中一個提供的選項。這會篩選記錄,並顯示來自所選時間範圍內的記錄。

如要指定資源,請按一下「Resource」下拉式選單,然後選擇「Google Assistant Action Project」。這樣就會在查詢中新增篩選器,以顯示來自專案的記錄。

您可以使用「嚴重程度」按鈕,依「緊急」、「資訊」、「偵錯」和其他嚴重性記錄層級進行篩選。

您也可以使用 Logs Explorer 中的「Query」欄位輸入自訂項目。這個欄位使用的查詢引擎支援基本查詢 (例如字串比對),以及包含比較符 (<, >=, !=) 和布林運算子 (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 的使用使用手冊,讓您瞭解如何有效測試變更。

學習資源

本文件提供排解智慧型住宅動作錯誤的步驟。您也可以查看我們的程式碼研究室,進一步瞭解如何偵錯: