このガイドでは、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 エージェントのエラーログを、対応する Cloud Functions の Webhook ログエントリに関連付けます。この例では、Cloud Logging を有効にしたエージェントに Cloud Logging フィルタを使用します。
1. 特定のエージェントのエラーログに対して Dialogflow ログをフィルタする
次の Cloud Logging フィルタを使用して、特定のエージェントのエラーログに対して Dialogflow ログをフィルタします。
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 ログに対応します。