排解 Matter 整合錯誤

refresh_date: 2023-01-06

Google Cloud 提供工具,可透過 Google Cloud Monitoring 監控專案的可靠性,並透過 Google Cloud Logging 錯誤記錄偵錯問題。當執行使用者意圖時發生失敗時,Google Home Analytics 管道會在指標上記錄該失敗,並在專案記錄中發布錯誤記錄。

排解錯誤問題的步驟有兩種:

  1. 使用智慧住宅指標監控專案狀態。
  2. 檢查錯誤記錄中的詳細錯誤說明,以便調查問題。

監控錯誤

您可以使用 Google Cloud Monitoring dashboard 存取專案指標。以下是一些用於監控品質和偵錯的重要圖表:

  • 監控專案的可靠度時,成功率圖表是第一個要開始查看的圖表。這張圖表中的下滑情形表示部分或所有使用者的服務中斷。建議您在每次變更或更新專案後,密切監控這張圖表,看看是否有任何異常。
  • 如要排解整合問題,錯誤細目圖表最有用。對於成功百分比圖表中醒目顯示的每個錯誤,錯誤細目都會顯示錯誤代碼。您可以在下表中查看 Google Home platform 標示的錯誤,以及如何排解這些錯誤。

平台錯誤代碼

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

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

請使用 GCP 記錄中的 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 記錄中的 requestId,查看帳戶連結服務中的錯誤記錄。
GAL_INTERNAL Google 嘗試擷取存取權杖時發生 Google 內部錯誤。

如果您發現 GCP 記錄中發生此錯誤的頻率增加,請與我們聯絡以取得更多資訊。
GAL_INVALID_ARGUMENT Google 嘗試擷取存取權權杖時發生 Google 內部錯誤。

如果您發現 GCP 記錄中發生此錯誤的頻率增加,請與我們聯絡以取得更多資訊。
GAL_NOT_FOUND 使用者儲存在 Google 中的存取權杖和更新權杖會失效,也無法再重新整理。使用者必須重新連結帳戶,才能繼續使用您的服務。

如果您在 GCP Logging 中發現這個錯誤的頻率提高,請與我們聯絡以瞭解詳情。
GAL_PERMISSION_DENIED 權杖共用功能未經授權時,發生 Google 內部錯誤。

如果您發現 GCP 記錄中發生此錯誤的頻率增加,請與我們聯絡以取得更多資訊。
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 物件。

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

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

從要求傳送開始算起,傳送回應的逾時時間為 9 秒。請務必在這個時間範圍內傳送回覆。
RESPONSE_UNAVAILABLE 沒有收到回應,或是回應中未指出狀態。

意圖執行要求的回應應根據智慧型住宅文件進行結構化,並指出狀態。
TRANSIENT_ERROR 暫時性錯誤是會自行解決的錯誤。

這些錯誤通常會導致裝置或服務的連線中斷。以及無法開啟與伺服器的新連線。

搜尋記錄

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

Google Cloud 中有多個系統會隨時將記錄傳送至您的專案。您需要編寫查詢來篩選記錄,並找出所需的記錄。查詢可以根據時間範圍資源、記錄嚴重性或自訂項目。

查詢雲端記錄檔

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

建構 Cloud 記錄檔查詢

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

如要指定資源,請按一下「資源」下拉式選單,然後選擇「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,並引導您有效測試變更。

學習資源

本文提供智慧型家居動作錯誤的疑難排解步驟。您也可以參閱我們的程式碼研究室,進一步瞭解偵錯作業: