Matter 統合エラーのトラブルシューティング

更新日: 2023-01-06

Google Cloud には、Google Cloud Monitoring でプロジェクトの信頼性をモニタリングし、Google Cloud Logging エラーログで問題をデバッグするツールが用意されています。ユーザー インテントのフルフィルメントでエラーが発生すると、Google Home アナリティクス パイプラインがそのエラーを指標に記録し、プロジェクト ログでエラーログを公開します。

エラーのトラブルシューティングは、次の 2 つの手順で行います。

  1. スマートホーム指標でプロジェクトの状態をモニタリングできます。
  2. エラーログでエラーの詳細を確認して、問題を調査します。

エラーをモニタリングする

プロジェクトの指標にアクセスするには、Google Cloud Monitoring dashboard を使用します。品質のモニタリングとデバッグに特に有用なキーチャートは次のとおりです。

  • [成功率] グラフは、プロジェクトの信頼性をモニタリングするときに最初に使用するグラフです。このグラフの急減は、ユーザーベースの一部または全体の停止を示している可能性があります。プロジェクトを変更または更新するたびに、このグラフに異常がないか注意深くモニタリングすることをおすすめします。
  • [エラーの内訳] グラフは、統合に関する問題のトラブルシューティングを行う際に役立ちます。成功率グラフでハイライト表示されたエラーごとに、エラーの内訳にエラーコードが表示されます。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 ペイロードの形式または値が無効であるため、アカウント リンク サービスからのレスポンスを解析できません。

GCP Logging の requestId を使用して、アカウント リンク サービスのエラーログを確認します。
GAL_INTERNAL Google がアクセス トークンを取得しようとしたときに Google 内部エラーが発生しました。

GCP Logging でこのエラーの割合が増加している場合は、Google までお問い合わせください。
GAL_INVALID_ARGUMENT Google がアクセス トークンを取得しようとしたときに Google 内部エラーが発生しました。

GCP Logging でこのエラーの割合が増加している場合は、Google までお問い合わせください。
GAL_NOT_FOUND Google に保存されているユーザーのアクセス トークンと更新トークンが無効化され、更新できなくなります。サービスを引き続き使用するには、ユーザーのアカウントを再リンクする必要があります。

GCP Logging でこのエラーの割合が増加している場合は、Google までお問い合わせください。
GAL_PERMISSION_DENIED トークンの共有が承認されていないときに、Google 内部エラーが発生しました。

GCP Logging でこのエラーの割合が増加している場合は、Google までお問い合わせください。
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 リクエストに存在する 1 つ以上のインテントがレスポンスにありません。

実行レスポンスが正しく構造化され、リクエストからのすべてのインテントの結果がレスポンスに存在することを確認しましょう。
PARTNER_RESPONSE_MISSING_DEVICE リクエストに含まれる 1 つ以上のデバイスがレスポンスにありません。

実行レスポンスが正しく構造化され、リクエストからのすべてのデバイス 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 ログのクエリ

クエリボタンを使用すると、カスタム フィルタを作成できます。

Cloud ログクエリを作成する

期間を指定するには、期間選択ボタン をクリックし、表示されたオプションのいずれかを選択します。これにより、ログがフィルタされ、選択した期間内に発生したものが表示されます。

[リソース] を指定するには、[リソース] プルダウンをクリックし、[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 の使用方法に関するユーザーガイドを提供し、変更を効果的にテストする方法を詳しく説明しています。

学習用リソース

このドキュメントでは、スマートホーム アクションのエラーをトラブルシューティングする手順について説明します。デバッグの詳細については、以下の Codelab も参考にしてください。