Ce guide fournit différents exemples d'implémentation de webhooks, ainsi que des recommandations de dépannage pour les webhooks.
Définir un paramètre de session
Les exemples suivants montrent comment définir un paramètre de session.
Go
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Consultez le guide de démarrage rapide des webhooks.Java
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Renvoyer une réponse de traitement
Les exemples suivants montrent comment renvoyer une réponse de traitement.
Go
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Consultez le guide de démarrage rapide des webhooks.Java
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Définir les paramètres du formulaire si nécessaire
Les exemples suivants montrent comment marquer un paramètre comme obligatoire.
Java
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Valider un paramètre de formulaire
Les exemples suivants montrent comment valider un paramètre de formulaire.
Java
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
ID de session du journal
L'exemple suivant montre comment consigner le session ID
à partir d'une requête webhook.
Python
Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Dépannage
Lorsque vous dépannez un webhook, il est utile de consigner l'ID de session de votre webhook.
Le champ sessionInfo.session
de WebhookRequest contient l'ID de session.
L'ID de session doit être unique pour chaque conversation. Il peut vous aider à comparer les journaux des agents aux journaux des webhooks pour les requêtes utilisant le même ID de session.
La section Journaliser l'ID de session ci-dessus montre comment consigner l'ID de session à partir d'un webhook.
En outre, si vous hébergez votre webhook sur Cloud Functions ou une option sans serveur Google Cloud similaire, vous pouvez utiliser le champ trace
des entrées de journal comme filtre de journal.
Une seule exécution d'une fonction génère plusieurs entrées de journal avec la même valeur de trace.
L'exemple ci-dessous utilise à la fois l'ID de session et la valeur de trace pour associer un journal d'erreur d'agent Conversational Agents (Dialogflow CX) particulier aux entrées de journal du webhook Cloud Functions correspondantes. L'exemple utilise des filtres Cloud Logging pour un agent ayant activé Cloud Logging.
1. Filtrer les journaux des agents de conversation (Dialogflow CX) pour les journaux d'erreurs d'un agent spécifique
Utilisez le filtre Cloud Logging suivant pour filtrer les journaux de vos agents conversationnels (Dialogflow CX) en fonction des journaux d'erreurs d'un agent particulier:
labels.location_id="global"
labels.agent_id="AGENT_ID"
severity=ERROR
Une entrée d'erreur de journal de webhook ressemble à ceci:
{
"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"
}
Notez le champ labels.session_id
, qui contient l'ID de session.
Vous utiliserez l'ID de session à l'étape suivante.
2. Filtrer les journaux Cloud Functions pour l'ID de session
Utilisez le filtre Cloud Logging suivant pour filtrer les journaux de votre fonction Cloud en fonction de l'ID de session:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
textPayload="Debug Node: session ID = SESSION_ID"
Les journaux générés correspondent aux journaux de webhook créés au cours de la session fournie. Exemple :
{
"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"
}
Notez le champ trace
, qui sera utilisé à l'étape suivante.
3. Filtrer les journaux Cloud Functions pour une trace spécifique
Utilisez le filtre Cloud Logging suivant pour filtrer les journaux Cloud Functions d'une trace spécifique:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
trace="projects/PROJECT_ID/traces/TRACE_ID"
où TRACE_ID
correspond au dernier segment de la trace. Par exemple, TRACE_ID
pour projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e
est e41eefc1fac48665b442bfa400cc2f5e
.
Les journaux générés correspondent à tous les journaux webhook générés lors de l'exécution de la requête webhook associée à l'ID de session de l'étape 1 et à la trace de l'étape 2.