このガイドでは、Webhook を実装するためのさまざまなサンプルと、Webhook のトラブルシューティングに関する推奨事項について説明します。
セッション パラメータを設定する
以下のサンプルは、セッション パラメータを設定する方法を示しています。
Go
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Webhook クイックスタートをご覧ください。Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
フルフィルメント レスポンスを返す
次のサンプルは、フルフィルメント レスポンスを返す方法を示しています。
Go
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Webhook クイックスタートをご覧ください。Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
必要に応じてフォーム パラメータを設定する
次のサンプルは、パラメータに必須のフラグを付ける方法を示しています。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
フォーム パラメータを検証する
次のサンプルは、フォーム パラメータを検証する方法を示しています。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ログセッション ID
次のサンプルは、Webhook リクエストの session ID
をログに記録する方法を示しています。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
トラブルシューティング
Webhook のトラブルシューティングを行う場合は、Webhook のセッション ID をログに記録すると役立ちます。WebhookRequest の sessionInfo.session
フィールドにはセッション ID が含まれます。セッション ID は会話ごとに一意にする必要があります。このセッション ID を使用するとリクエストのエージェント ログと Webhook ログを比較する際に役立ちます。上記のログセッション ID セクションでは、Webhook からセッション ID をログに記録する方法を示しています。
また、Webhook をホストしている場合は、Cloud Functionsまたは、同様の Google Cloud サーバーレス オプションを使用している場合は、ログエントリから trace
フィールドをログフィルタとして使用します。関数を 1 回実行すると、同じトレース値を持つ複数のログエントリが生成されます。
次の例では、セッション ID とトレース値の両方を使用して、特定の会話エージェント(Dialogflow CX)エージェントのエラーログを、対応する Cloud Functions Webhook ログエントリに関連付けています。この例では、Cloud Logging を有効にしたエージェントに対して Cloud Logging フィルタを使用します。
1. 特定のエージェントのエラーログに対して会話エージェント(Dialogflow CX)ログをフィルタする
次の Cloud Logging フィルタを使用して、特定のエージェントのエラーログに対して会話エージェント(Dialogflow CX)ログをフィルタします。
labels.location_id="global"
labels.agent_id="AGENT_ID"
severity=ERROR
Webhook ログのエラーエントリは次のようになります。
{
"insertId": "-zi368ye1ie3r",
"jsonPayload": {
"message": "Webhook error: State: URL_UNREACHABLE, Reason: UNREACHABLE_5xx, HTTP status code: 500",
"code": 14
},
"resource": {
"type": "global",
"labels": {
"project_id": "PROJECT_ID"
}
},
"timestamp": "2022-10-05T19:44:53.098938Z",
"severity": "ERROR",
"labels": {
"session_id": "ec8781-f28-7e6-791-d7e992e8f",
"location_id": "global",
"agent_id": "807346f0-f501-42b5-9642-af59d5e98165"
},
"logName": "projects/PROJECT_ID/logs/dialogflow-runtime.googleapis.com%2Frequests",
"receiveTimestamp": "2022-10-05T19:44:53.222552658Z"
}
セッション ID を含む labels.session_id
フィールドをメモします。このセッション ID は次のステップで使用します。
2. Cloud Functions 関数のログをセッション ID でフィルタする
次の Cloud Logging フィルタを使用して、セッション ID で Cloud Functions 関数のログをフィルタリングします。
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
textPayload="Debug Node: session ID = SESSION_ID"
結果のログは、指定されたセッション中に作成された Webhook ログに対応します。次に例を示します。
{
"textPayload": "Debug Node: session ID = ec8781-f28-7e6-791-d7e992e8f",
"insertId": "632bdb2b000b7c6c77d0cc62",
"resource": {
"type": "cloud_function",
"labels": {
"project_id": "PROJECT_ID",
"function_name": "webhook",
"region": "us-central1"
}
},
"timestamp": "2022-10-05T19:44:53.098938Z",
"severity": "INFO",
"labels": {
"execution_id": "ozt5bnz50eeo",
"instance_id": "00c61b117c1f116421aa5503bc80f9aa636b9ef117bb2722f3d54414085e62be6e55af0aa0250a63534262b31a3d3a14af8c940203f1915db8b25b"
},
"logName": "projects/PROJECT_ID/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
"trace": "projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e",
"receiveTimestamp": "2022-10-05T19:44:53.222552658Z"
}
trace
フィールドをメモします。これは次のステップで使用します。
3. Cloud Functions のログを特定のトレースでフィルタする
次の Cloud Logging フィルタを使用して、特定のトレースのために Cloud Functions 関数のログをフィルタします。
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
trace="projects/PROJECT_ID/traces/TRACE_ID"
ここで、TRACE_ID
はトレースの最後のセグメントです。たとえば、projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e
の TRACE_ID
は e41eefc1fac48665b442bfa400cc2f5e
です。
結果のログは、ステップ 1 のセッション ID とステップ 2 のトレースに関連付けられた Webhook リクエストの実行中に生成されたすべての Webhook ログに対応します。