Un webhook peut être un webhook standard ou un webhook flexible. Avec un webhook standard, les champs de requête et de réponse sont définis par les agents conversationnels (Dialogflow CX). Avec un webhook flexible, vous définissez les champs de requête et de réponse.
Webhooks standards
Avec les webhooks standards, vous utilisez des messages de requête et de réponse définis par Dialogflow CX. Le message de requête fournit de nombreuses informations sur la session. Par exemple, la page active en cours, l'intent mis en correspondance récent, les valeurs des paramètres de session et les réponses définies par l'agent sont toutes incluses.
Requête de webhook standard
Lorsqu'un
traitement
avec un webhook est appelé,
Les agents conversationnels (Dialogflow CX) envoient une requête de webhook POST HTTPS à votre service de webhook.
Le corps de cette requête est un objet JSON WebhookRequest
contenant des informations sur la session.
Un peu
intégrations
Remplissez le champ WebhookRequest.payload
avec des informations supplémentaires.
Par exemple,
Intégration de la passerelle de téléphonie Dialogflow CX
fournit le numéro de l'appelant de l'utilisateur final.
Pour en savoir plus, consultez la documentation de référence sur WebhookRequest
(V3) ou WebhookRequest
(V3Beta1).
Réponse webhook standard
Une fois que votre service webhook a reçu une requête de webhook, il doit envoyer une réponse de webhook. Les limites suivantes s'appliquent à votre réponse :
- La réponse doit se produire dans un délai d'expiration que vous configurez lors de la création de la ressource de webhook, sinon la requête expirera.
- La taille de la réponse doit être inférieure ou égale à 64 Kio.
Pour en savoir plus, consultez la documentation de référence sur WebhookResponse
(V3) ou WebhookResponse
(V3Beta1).
Paramètres de ressources de webhooks standards
Vous trouverez ci-dessous la description des paramètres de ressource webhook pour les webhooks standards :
Terme | Définition |
---|---|
Nom à afficher | Nom affiché dans la console pour le webhook. |
Délai avant expiration du webhook | Lorsque les agents conversationnels (Dialogflow CX) envoient une requête de webhook à votre service de webhook, il est possible que le délai avant expiration soit dépassé en attendant une réponse. Ce paramètre contrôle ce délai en secondes. En cas de délai avant expiration, les agents conversationnels (Dialogflow CX) appellent un événement webhook.error.timeout. |
Type | Définissez ce paramètre sur Annuaire des services si vous utilisez l'annuaire des services pour l'accès à un réseau privé. Sinon, définissez-le sur Service Web générique. |
URL du webhook | Indiquez l'URL de votre service de webhook. |
Sous-type | Défini sur Standard |
Webhook spécifique à l'environnement | Vous pouvez fournir des webhooks spécifiques à l'environnement. |
Authentification | Consultez la section sur l'authentification. |
Certificat CA personnalisé | Ceci est utilisé pour importer des certificats CA personnalisés. |
Webhooks flexibles
Avec les webhooks flexibles, vous définissez la méthode HTTP de la requête, les paramètres d'URL de la requête et les champs des messages de requête et de réponse. Seules certaines valeurs de paramètres sont fournies. et la réponse ne peut fournir que des valeurs de remplacement de paramètres. Cette limitation est en fait avantageuse, car cela simplifie l'interface entre l'agent et le webhook. Il est rarement nécessaire de communiquer autre chose que les valeurs des paramètres de session entre un agent et un webhook. Cela simplifie également l'implémentation de votre webhook, car les messages de requête et de réponse ne contiennent que ce dont vous avez besoin, et vous pouvez fournir des messages de webhook uniques pour différents scénarios.
Requête de webhook flexible
Lorsque vous créez la ressource de webhook pour votre agent, vous pouvez spécifier les éléments suivants pour les requêtes de webhook :
- Méthode HTTP utilisée pour les requêtes webhook envoyées à votre service de webhook.
- Valeurs des paramètres de session que les agents conversationnels (Dialogflow CX) doivent envoyer à votre service de webhook à l'aide de l'URL.
- Si vous choisissez
POST
,PUT
ouPATCH
comme méthode, vous pouvez spécifier les valeurs de paramètre de session que les agents conversationnels (Dialogflow CX) doivent envoyer à votre service webhook via le corps JSON de la requête.
Pour envoyer des valeurs de paramètres de session à l'aide de l'URL de la requête ou du corps JSON, utilisez des références de paramètres comme vous le feriez normalement. Il n'est pas nécessaire d'échapper l'URL de la référence du paramètre. et que vous n'entourez pas la référence de guillemets. Au moment de l'exécution, les agents conversationnels (Dialogflow CX) encodent la valeur du paramètre en URL si nécessaire. Une liste ou une valeur composite est fournie au format JSON.
Lorsque vous utilisez une référence de paramètre dans le corps JSON, vous devez mettre la référence entre guillemets, quel que soit le type du paramètre. Si le paramètre est en fait une valeur scalaire, une liste ou une valeur composite numérique, les agents conversationnels (Dialogflow CX) suppriment les guillemets lors de l'envoi de la requête au moment de l'exécution pour préserver le type de données du paramètre. Les types scalaires de chaîne resteront entre guillemets. Si une valeur numérique scalaire, de liste ou composite est référencée dans une valeur de chaîne (par exemple : "Il s'agit d'un nombre: $session.params.size"), le paramètre est traité comme une chaîne ("Voici un nombre: 3").
Par exemple, vous pouvez fournir les valeurs des paramètres de session fruit
et size
à l'URL de la requête comme suit :
https://your-webhook-service.com/handler?f=$session.params.fruit&s=$session.params.size
Et au corps de la requête JSON comme suit :
{
"fruitParameter": "$session.params.fruit",
"sizeParameter": "$session.params.size"
}
Réponse webhook flexible
Lorsque vous créez la ressource webhook pour votre agent, vous pouvez spécifier des paramètres de session que les agents conversationnels (Dialogflow CX) doivent définir sur des champs spécifiques de la réponse du webhook au moment de l'exécution.
Les limites suivantes s'appliquent à votre réponse :
- La réponse doit se produire dans un délai d'expiration que vous configurez lors de la création de la ressource de webhook, sinon la requête expirera.
- La taille de la réponse doit être inférieure ou égale à 64 Kio.
Utilisez le format suivant pour spécifier un champ scalaire, de liste ou composite:
$.fully.qualified.path.to.field
Par exemple : Prenons la réponse JSON suivante:
{
"routes" : [
{
"legs" : [
{
"distance" : {
"text" : "2,064 mi",
"value" : 3321004
}
}
]
}
]
}
Pour spécifier la "valeur" , utilisez les éléments suivants:
$.routes[0].legs[0].distance.value
Paramètres flexibles des ressources webhook
La section suivante décrit les paramètres de ressources de webhooks flexibles:
Terme | Définition |
---|---|
Nom à afficher | Nom affiché dans la console pour le webhook. |
Délai avant expiration du webhook | Lorsque les agents conversationnels (Dialogflow CX) envoient une requête de webhook à votre service de webhook, celui-ci peut expirer en attendant une réponse. Ce paramètre contrôle ce délai avant expiration, en secondes. En cas d'expiration du délai, les agents conversationnels (Dialogflow CX) invoquent un événement webhook.error.timeout. |
Type | Définissez ce paramètre sur Annuaire des services si vous utilisez l'annuaire des services pour l'accès à un réseau privé. Sinon, définissez-le sur Service Web générique. |
URL du webhook | Indiquez l'URL de votre service webhook, qui peut inclure des références à des paramètres de session. |
Sous-type | Défini sur Flexible |
Méthode | Définissez la méthode HTTP pour la requête webhook. |
Corps de la requête | Indiquez le corps JSON de la requête comme décrit ci-dessus. |
Configuration de la réponse | Indiquez les paramètres de session qui doivent être définis dans les champs de réponse comme décrit ci-dessus. |
Webhook spécifique à l'environnement | Vous pouvez fournir des webhooks spécifiques à l'environnement. |
Authentification | Consultez la section sur l'authentification. |
Certificat CA personnalisé | Il permet d'importer des certificats d'autorité de certification personnalisés. |
Utiliser un modèle personnalisé prédéfini
Dialogflow propose des modèles personnalisés prédéfinis que vous pouvez utiliser pour intégrer des webhooks flexibles au CRM Salesforce.
Dans l'onglet Gérer, cliquez sur Webhooks, puis sur + Créer.
Sous Sous-type, sélectionnez Flexible.
Cliquez sur Configurer à l'aide d'un modèle prédéfini pour activer cette fonctionnalité.
Dans le menu déroulant Type d'intégration, sélectionnez Salesforce.
Dans le menu déroulant Nom de l'API, sélectionnez un nom d'API. Le modèle remplit automatiquement le formulaire du webhook en fonction du nom de l'API que vous choisir.
Vous pouvez configurer manuellement les champs suivants, le cas échéant, en fonction de vos paramètres :
- URL du webhook
- Méthode
- Corps JSON de la requête
- Configuration de la réponse
Les champs OAuth obligatoires sont mis en surbrillance dans la section Authentification. .
Cliquez sur Enregistrer pour créer le webhook.
Conditions requises pour le service de webhook
Votre service de webhook doit remplir les conditions suivantes :
- Il doit gérer les requêtes HTTPS. Le protocole HTTP n'est pas compatible. Si vous hébergez votre service de webhook sur Google Cloud Platform à l'aide d'une solution de calcul ou de calcul sans serveur, consultez la documentation produit pour la diffusion avec HTTPS. Pour connaître les autres options d'hébergement, consultez la page Obtenir un certificat SSL pour votre domaine.
- Son URL pour les requêtes doit être accessible publiquement, sauf si elle est hébergée en tant que fonction Cloud Run ou si elle est accessible en tant que webhook Service Directory.
- Il doit gérer les requêtes et les réponses comme décrit dans le webhook standard ou webhook flexible.
- Si votre agent n'intègre pas l'accès au réseau privé de l'annuaire des services, les appels webhook sont considérés comme extérieurs au périmètre de service et sont bloqués lors de l'activation de VPC Service Controls. L'annuaire des services accepte les points de terminaison limités. Pour en savoir plus, consultez l'annuaire des services.
Authentification
Il est important de sécuriser votre service de webhook, de sorte que seul vous ou votre agent de conversation (Dialogflow CX) êtes autorisé à envoyer des requêtes. Cette configuration se fait lors de la création d'une ressource webhook. Les agents conversationnels (Dialogflow CX) sont compatibles avec les mécanismes d'authentification suivants :
Terme | Définition |
---|---|
En-têtes d'authentification | Pour les paramètres de webhook, vous pouvez spécifier des paires clé/valeur facultatives dans l'en-tête HTTP. S'ils sont fournis, les agents conversationnels (Dialogflow CX) ajoutent ces en-têtes HTTP aux requêtes webhook. Il est courant de fournir une seule paire avec une clé de authorization . Les valeurs d'en-tête sont compatibles avec les références de paramètres de session et l'analyse des fonctions système, comme dans les messages de réponse statiques. |
Authentification de base avec nom d'utilisateur et mot de passe | Pour les paramètres de webhook, vous pouvez spécifier des valeurs de nom d'utilisateur et de mot de passe de connexion facultatives. Si fourni, Conversational Agents (Dialogflow CX) ajoute un en-tête HTTP d'autorisation aux requêtes de webhook. Cet en-tête se présente au format suivant: "authorization: Basic <base 64 encoding of the string username:password>" . |
OAuth tiers | Vous pouvez spécifier la configuration OAuth tierce de sorte que les agents conversationnels (Dialogflow CX) échangent un jeton d'accès à partir du système OAuth et l'ajoutent dans l'en-tête HTTP d'autorisation. Seul le flux des identifiants client est accepté. |
Jetons d'accès de l'agent de service | Vous pouvez sélectionner un jeton d'accès dans "Authentification de l'agent de service" pour utiliser des jetons d'accès d'agent de service pour l'authentification. Cela permet d'accéder à d'autres API Google Cloud. |
Jetons d'ID d'agent de service | Vous pouvez sélectionner le jeton d'ID dans l'authentification de l'agent de service pour utiliser des jetons d'ID d'agent de service pour l'authentification. Cela permet d'accéder aux fonctions Cloud Run et aux services Cloud Run. |
Authentification TLS mutuelle | Consultez la documentation sur l'authentification TLS mutuelle. |
OAuth tiers
Les agents conversationnels (Dialogflow CX) peuvent collecter un jeton d'accès auprès d'un fournisseur OAuth tiers et l'ajouter à l'en-tête HTTP d'autorisation lorsqu'ils envoient leurs requêtes webhook.
Vous trouverez ci-dessous la description des paramètres des ressources pour l'authentification OAuth tierce:
Terme | Définition |
---|---|
ID client | ID client à utiliser lors de la demande d'un jeton OAuth. |
Code secret du client | Code secret à utiliser lors de la demande de jeton OAuth. |
URL du point de terminaison OAuth | URL à utiliser pour demander un jeton OAuth. |
Champs d'application OAuth | Liste des champs d'application pour lesquels le jeton OAuth peut être utilisé, séparés par une virgule. |
Les requêtes envoyées à l'URL du point de terminaison OAuth pour recevoir un jeton n'incluent pas les en-têtes de requête personnalisés configurés pour la requête de webhook. Vous pouvez transmettre des informations personnalisées au serveur OAuth en tant que paramètres dans la chaîne de requête de l'URL du point de terminaison OAuth.
Jetons d'accès de l'agent de service
Les agents conversationnels (Dialogflow CX) peuvent générer un jeton d'ID ou un jeton d'accès à l'aide de l'agent de service des agents conversationnels (Dialogflow CX).
Le jeton est ajouté dans l'en-tête HTTP d'autorisation lorsque les agents conversationnels (Dialogflow CX) appellent un webhook.
Jeton d'ID
Un jeton d'ID peut être utilisé pour accéder aux fonctions et services Cloud Run une fois que vous avez accordé le rôle Demandeur à
service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
L'audience utilisée pour générer le jeton d'ID correspond à l'URL complète du webhook, à l'exception des paramètres de requête. Si vous utilisez Cloud Run, assurez-vous que cette URL est compatible avec les audiences Cloud Run. Par exemple, si l'URL du webhook est
https://myproject.cloudfunctions.net/my-function/method1?query=value
L'URL suivante doit figurer dans les audiences personnalisées.
https://myproject.cloudfunctions.net/my-function/method1
Les webhooks peuvent aussi valider le jeton à l'aide de bibliothèques clientes Google ou de bibliothèques Open Source github.com/googleapis/google-auth-library-nodejs.
Jeton d'accès
Un jeton d'accès peut être utilisé pour accéder à d'autres API Google Cloud une fois que vous avez attribué les rôles requis à
service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
Validation des certificats HTTPS
Les agents conversationnels (Dialogflow CX) utilisent par défaut le magasin de confiance par défaut de Google pour vérifier le protocole HTTPS certificats. Si vous avez l'intention d'utiliser des certificats non reconnus par le magasin de confiance par défaut de Google pour votre serveur HTTPS, tels que des certificats autosignés ou des certificats racines personnalisés, consultez la pageCertificats CA personnalisés.
Webhooks spécifiques à l'environnement
Si vous utilisez des environnements pour isoler les systèmes de production des systèmes de développement (recommandé), vous pouvez configurer vos webhooks pour qu'ils soient spécifiques à l'environnement. Pour chaque ressource de webhook que vous définissez, vous pouvez fournir une URL unique et des paramètres d'authentification pour chaque environnement que vous avez défini pour l'agent.
Cela vous permet de développer et de tester les mises à jour du code de votre webhook de manière sécurisée avant de les déployer en production.
Créer ou modifier des ressources webhook
Une fois que vous avez un service de webhook en cours d'exécution, vous devez créer une ressource de webhook contenant les informations de connectivité et d'authentification. Une fois la ressource webhook créée, vous pouvez également modifier ses paramètres à tout moment.
Pour créer ou modifier une ressource de webhook:
Console
- Ouvrez la console Dialogflow CX.
- Choisissez votre projet Google Cloud.
- Sélectionnez votre agent.
- Sélectionnez l'onglet Gérer.
- Cliquez sur Webhooks.
- Cliquez sur Créer ou sur une ressource webhook dans la liste pour la modifier.
- Saisissez les paramètres de ressources de webhook standards. ou les paramètres de ressources de webhooks flexibles.
- Cliquez sur Enregistrer.
API
Pour créer une ressource de webhook, consultez la méthode create
pour le type Webhook
.
Pour modifier une ressource de webhook (à l'exception des paramètres spécifiques à l'environnement), procédez comme suit :
consultez la méthode patch
ou update
pour le type Webhook
.
Sélectionnez un protocole et une version pour la référence du webhook :
Protocole | V3 | V3beta1 |
---|---|---|
REST | Ressource de webhook | Ressource Webhook |
RPC | Interface du webhook | Interface du webhook |
C++ | WebhooksClient | Non disponible |
C# | WebhooksClient | Non disponible |
Go | WebhooksClient | Non disponible |
Java | WebhooksClient | WebhooksClient |
Node.js | WebhooksClient | WebhooksClient |
PHP | Non disponible | Non disponible |
Python | WebhooksClient | WebhooksClient |
Ruby | Non disponible | Non disponible |
Pour modifier les paramètres spécifiques à l'environnement d'un webhook :
consultez la méthode patch
ou update
pour le type Environment
.
Sélectionnez un protocole et une version pour la référence de l'environnement :
Protocole | V3 | V3beta1 |
---|---|---|
REST | Ressource de l'environnement | Ressource de l'environnement |
RPC | Interface de l'environnement | Interface de l'environnement |
C++ | EnvironmentsClient | Non disponible |
C# | EnvironmentsClient | Non disponible |
Go | EnvironmentsClient | Non disponible |
Java | EnvironmentsClient | EnvironmentsClient |
Node.js | EnvironmentsClient | EnvironmentsClient |
PHP | Non disponible | Non disponible |
Python | EnvironmentsClient | EnvironmentsClient |
Ruby | Non disponible | Non disponible |
Erreurs de webhook
Si votre service de webhook rencontre une erreur lors du traitement d'une requête de webhook, votre code de webhook doit renvoyer l'un des codes d'état HTTP suivants :
400
Requête incorrecte401
Opération non autorisée403
Interdit404
Introuvable500
Panne du serveur503
Service indisponible
Dans l'une des situations d'erreur suivantes, Les agents conversationnels (Dialogflow CX) invoquent une erreur ou un délai avant expiration du webhook événement intégré et poursuit le traitement comme d'habitude:
- Expiration du délai de réponse
- Code d'état d'erreur reçu
- Réponse non valide
- Service de webhook non disponible
En outre, si l'appel de service de webhook a été déclenché par un appel d'API de détection d'intent, le champ queryResult.webhookStatuses
de la réponse de détection d'intent contient les informations d'état du webhook.
Nouvelles tentatives automatiques
Les agents conversationnels (Dialogflow CX) incluent des mécanismes internes qui relancent automatiquement certaines erreurs de webhook afin d'en améliorer la robustesse. Seules les erreurs non finales sont de nouvelles tentatives (par exemple, en cas d'expiration du délai ou d'erreurs de connexion).
Pour réduire le risque de duplication des appels:
- Définissez des seuils plus longs pour le délai avant expiration du webhook.
- Assurez-vous que la logique des webhooks est idempotente ou dédupliquez les données.
Utiliser Cloud Run Functions
Les agents conversationnels (Dialogflow CX) s'intègrent à Fonctions Cloud Run pour créer facilement un webhook sans serveur sécurisé. Si vous créez une fonction qui réside dans le même projet que votre agent, il vous suffit de sélectionner Authentification de l'agent de service -> Jeton d'ID dans la configuration d'authentification. Votre agent peut alors appeler en toute sécurité votre webhook.
Toutefois, il existe deux situations dans lesquelles vous devez configurer manuellement cette intégration :
- L'agent de service Conversational Agents (Dialogflow CX)
compte de service
associée à l'adresse suivante doit exister pour votre projet d'agent:
Ce compte de service spécial et la clé associée sont normalement créés automatiquement lorsque vous créez le premier agent pour un projet. Si votre agent a été créé avant le 1er novembre 2020, vous pouvez déclencher la création de ce compte de service spécial: <ph type="x-smartling-placeholder">service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
- </ph>
- Créez un agent pour le projet.
- Exécutez la commande suivante :
gcloud beta services identity create --service=dialogflow.googleapis.com --project=agent-project-id
- Si votre fonction de webhook se trouve dans un projet différent de celui de l'agent, vous devez fournir le rôle IAM Demandeur Cloud Functions à l'agent de service des agents conversationnels (Dialogflow CX) dans le projet de votre fonction.
- Sélectionnez Service Agent Auth -> (Authentification de l'agent de service ->) Jeton d'ID dans la section de configuration de l'authentification.
Utiliser des webhooks conteneurisés et le framework ezcx Go
Si vous souhaitez implémenter un webhook conteneurisé à l'aide de Go, consultez la Framework Go ezcx. Ce framework peut simplifier de nombreuses étapes requises lors de la création d'un webhook.
Utiliser des fonctions Cloud Run avec un trafic interne uniquement
Les fonctions Cloud Run configurées pour accepter le trafic interne provenant des réseaux VPC du même projet ou du même périmètre VPC SC peuvent être utilisées comme webhook tant que l'agent se trouve dans le même projet ou le même périmètre VPC SC.
Utiliser l'Annuaire des services pour l'accès privé au réseau
Les agents conversationnels (Dialogflow CX) s'intègrent à Accès au réseau privé de l'Annuaire des services pour qu'il puisse se connecter à des cibles de webhooks à l'intérieur de votre réseau VPC. Cela permet de conserver le trafic au sein du réseau Google Cloud et d'appliquer IAM et VPC Service Controls.
Pour configurer un webhook ciblant un réseau privé, procédez comme suit :
Suivez la page sur la configuration du réseau privé de l'Annuaire des services pour configurer votre réseau VPC et le point de terminaison de l'Annuaire des services.
L'agent de service Conversational Agents (Dialogflow CX) compte de service associée à l'adresse suivante doit exister pour votre projet d'agent:
Attribuez au compte de service Agent de service Conversational Agents (Dialogflow CX) les rôles IAM suivants:service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
servicedirectory.viewer
du projet de l'Annuaire des servicesservicedirectory.pscAuthorizedService
du projet réseau
Fournissez le service d'annuaire du service avec l'URL et les informations d'authentification facultatives lors de la création du webhook.
Console
API
Consultez le champ
serviceDirectory
pour le typeWebhook
.Sélectionnez un protocole et une version pour la référence du webhook :
Protocole V3 V3beta1 REST Ressource de webhook Ressource Webhook RPC Interface Webhook Interface du webhook C++ WebhooksClient Non disponible C# WebhooksClient Non disponible Go WebhooksClient Non disponible Java WebhooksClient WebhooksClient Node.js WebhooksClient WebhooksClient PHP Non disponible Non disponible Python WebhooksClient WebhooksClient Ruby Non disponible Non disponible
Pour résoudre les problèmes, vous pouvez configurer un test de disponibilité privé pour vérifier que votre annuaire des services est correctement configuré.
Exemples et dépannage
Consultez le guide d'utilisation du webhook.