Ce guide fournit divers 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 fulfillment
Les exemples suivants montrent comment renvoyer une réponse de fulfillment.
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 de formulaire comme requis
Les exemples suivants montrent comment marquer un paramètre comme requis.
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 session ID
à partir d'une requête de 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
Lors du dépannage d'un webhook, il est utile d'enregistrer 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. Cela peut vous aider à comparer les journaux de l'agent aux journaux webhook pour les requêtes utilisant le même ID de session.
La section ID de session de journal ci-dessus indique comment consigner l'ID de session à partir d'un webhook.
De plus, si vous hébergez votre webhook sur Cloud Functions ou sur 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 entraîne 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'erreurs spécifique de l'agent Dialogflow aux entrées correspondantes du journal du webhook Cloud Functions. L'exemple utilise des filtres Cloud Logging pour un agent qui a activé Cloud Logging.
1. Filtrer les journaux Dialogflow pour afficher les journaux d'erreurs d'un agent particulier
Utilisez le filtre Cloud Logging suivant pour filtrer vos journaux Dialogflow en y affichant les 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 se présente comme suit:
{
"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 de la fonction Cloud par ID de session
Utilisez le filtre Cloud Logging suivant pour filtrer les journaux de la fonction Cloud par 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 résultants correspondent aux journaux de webhook créés lors 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 d'une fonction Cloud pour une trace particulière
Utilisez le filtre Cloud Logging suivant pour filtrer les journaux de la fonction Cloud pour une trace particulière:
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
est le dernier segment de la trace. Par exemple, TRACE_ID
pour projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e
est e41eefc1fac48665b442bfa400cc2f5e
.
Les journaux résultants correspondent à tous les journaux de webhook générés lors de l'exécution de la requête de webhook associés à l'ID de session de l'étape 1 et à la trace de l'étape 2.