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 Dialogflow CX. Avec un webhook flexible, vous définissez les champs de requête et de réponse.
Vous pouvez également accéder au code d'état HTTP de l'appel de webhook à l'aide du paramètre de requête $request.webhook_status_code.
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 demande fournit de nombreuses informations sur la session. Par exemple, la page active actuelle, l'intent correspondant récent, les valeurs des paramètres de session et les réponses définies par l'agent sont tous inclus.
Requête de webhook standard
Lorsqu'un fulfillment avec un webhook est appelé, Dialogflow CX envoie 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.
Certaines intégrations renseignent le champ WebhookRequest.payload avec des informations supplémentaires. Par exemple, l'intégration de la passerelle de téléphonie Dialogflow CX fournit l'ID de l'appelant à 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, il doit envoyer une réponse qui répond aux exigences suivantes :
- La réponse doit se produire dans le délai d'expiration configuré lors de la création de la ressource de webhook.
- 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 standards des ressources de webhook
Le tableau suivant décrit les paramètres de ressources de webhook pour les webhooks standards :
| X | Élément |
|---|---|
| Nom à afficher | Nom du webhook affiché dans la console. |
| Dépassement du délai du webhook | Lorsque Dialogflow CX envoie une requête HTTP à votre service de webhook, ce paramètre contrôle le délai avant expiration en secondes pour chaque tentative de requête individuelle, et non pour l'ensemble du tour de conversation. Si une tentative expire ou échoue en raison d'une erreur temporaire, Dialogflow CX effectue automatiquement une nouvelle tentative. Cette nouvelle tentative peut entraîner un délai d'exécution total pouvant atteindre le double de la valeur du délai configuré avant de renvoyer une erreur. Si un délai avant expiration se produit après une nouvelle tentative, Dialogflow CX appelle un événement webhook.error.timeout. Pour en savoir plus, consultez Nouvelles tentatives automatiques. |
| Type | Définissez la valeur sur Annuaire des services si vous utilisez l'annuaire des services pour l'accès privé au réseau. Sinon, définissez la valeur sur Service Web générique. |
| URL du webhook | Indiquez l'adresse URL de votre service de webhook. |
| Sous-type | Définissez-le sur Standard. |
| Webhook spécifique à l'environnement | Vous pouvez fournir des webhooks spécifiques à l'environnement. |
| Authentification | Consultez la section Authentification. |
| Certificat CA personnalisé | Cette option permet d'importer des certificats d'autorité de certification personnalisés. |
Webhooks flexibles
Avec les webhooks flexibles, vous définissez la méthode HTTP de la requête, les paramètres de l'URL de la requête et les champs des messages de requête et de réponse. La requête ne peut fournir que des valeurs de paramètre sélectionnées, et la réponse ne peut fournir que des valeurs de remplacement de paramètre. Cela simplifie l'interface entre l'agent et le webhook, car il est rarement nécessaire de communiquer autre chose que les valeurs des paramètres de session. Il 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. Vous pouvez également 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 de webhook envoyées à votre service de webhook.
- Valeurs des paramètres de session que Dialogflow CX doit envoyer à votre service de webhook à l'aide de l'URL.
- Valeurs des paramètres de session que Dialogflow CX doit envoyer à votre service de webhook via le corps JSON de la requête si vous choisissez
POST,PUTouPATCHcomme méthode.
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. Vous n'avez pas besoin d'échapper l'URL de la référence de paramètre ni de l'entourer de guillemets. Au moment de l'exécution, Dialogflow CX échappe la valeur du paramètre dans l'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 l'encadrer de guillemets, quel que soit le type de paramètre. Si le paramètre est en fait une valeur numérique scalaire, une liste ou une valeur composite, Dialogflow CX supprimera 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, une liste ou une valeur composite est référencée dans une valeur de chaîne (par exemple, "Ceci est un nombre : $session.params.size"), le paramètre sera traité comme une chaîne ("Ceci est 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 JSON de la requête comme suit :
{
"fruitParameter": "$session.params.fruit",
"sizeParameter": "$session.params.size"
}
Réponse de webhook flexible
Lorsque vous créez la ressource de webhook pour votre agent, vous pouvez spécifier des paramètres de session que Dialogflow CX doit définir sur des champs spécifiques de la réponse du webhook lors de l'exécution.
Votre réponse doit respecter les limites suivantes :
- La réponse doit se produire dans le délai d'expiration configuré lors de la création de la ressource de webhook, sinon la requête expirera.
- La taille de la réponse ne doit pas dépasser 64 Kio.
Pour spécifier un champ scalaire, de liste ou composite, utilisez le format suivant :
$.fully.qualified.path.to.field
Par exemple, examinons la réponse JSON suivante :
{
"routes" : [
{
"legs" : [
{
"distance" : {
"text" : "2,064 mi",
"value" : 3321004
}
}
]
}
]
}
Pour spécifier le champ "value", utilisez les éléments suivants :
$.routes[0].legs[0].distance.value
Paramètres flexibles des ressources de webhook
Le tableau suivant décrit les paramètres de ressources de webhook pour les webhooks flexibles.
| X | Élément |
|---|---|
| Nom à afficher | Nom du webhook affiché dans la console. |
| Dépassement du délai du webhook | Lorsque Dialogflow CX envoie une requête HTTP à votre service de webhook, ce paramètre contrôle le délai avant expiration en secondes pour chaque tentative de requête individuelle, et non pour l'ensemble du tour de conversation. Si une tentative expire ou échoue en raison d'une erreur temporaire, Dialogflow CX effectue automatiquement une nouvelle tentative. Cette nouvelle tentative peut entraîner un délai d'exécution total pouvant atteindre le double de la valeur du délai configuré avant de renvoyer une erreur. Si un délai avant expiration se produit après une nouvelle tentative, Dialogflow CX appelle un événement webhook.error.timeout. Pour en savoir plus, consultez Nouvelles tentatives automatiques. |
| Type | Définissez la valeur sur Annuaire des services si vous utilisez l'annuaire des services pour l'accès privé au réseau. Sinon, définissez la valeur sur Service Web générique. |
| URL du webhook | Indiquez l'adresse URL de votre service de webhook, qui peut inclure des références à des paramètres de session. |
| Sous-type | Définissez-le sur Flexible. |
| Méthode | Définissez la méthode HTTP pour la requête du webhook. |
| Corps de la requête | Fournissez le corps JSON de la requête comme décrit ci-dessus. |
| Configuration de la réponse | Fournissez les paramètres de session qui doivent être définis sur 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é | Cette option 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 à Salesforce CRM.
- Accédez à l'onglet Gérer, sélectionnez Webhooks, puis cliquez sur Créer.
- Sous Sous-type, sélectionnez Flexible.
- Cliquez sur Configurer à l'aide d'un modèle prédéfini.
- Dans le menu Type d'intégration, sélectionnez Salesforce.
- Dans le menu Nom de l'API, sélectionnez un nom d'API. Le modèle remplit automatiquement le formulaire de webhook en fonction du nom d'API que vous choisissez.
- Configurez 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 seront mis en surbrillance dans la section Authentification.
- Configurez manuellement les champs suivants, le cas échéant, en fonction de vos paramètres :
- Cliquez sur Enregistrer.
Conditions requises pour le service de webhook
Votre service de webhook doit répondre aux exigences suivantes :
- Gérez les requêtes HTTPS. Le protocole HTTP n'est pas compatible. Si vous hébergez votre service de webhook sur Google Cloud à l'aide d'une solution de puissance de calcul ou d'informatique sans serveur, consultez la documentation pour la diffusion avec HTTPS. Pour connaître les autres options d'hébergement, consultez Obtenir un certificat SSL pour votre domaine.
- Assurez-vous que l'URL du service de webhook est accessible publiquement, sauf si elle est hébergée en tant que ressource Cloud Run ou accessible en tant que webhook Annuaire des services.
- Gérez les requêtes et les réponses comme décrit dans la section 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 en dehors du périmètre de service et sont bloqués lorsque vous activez VPC Service Controls. L'annuaire des services accepte les points de terminaison limités. Pour en savoir plus, consultez l'annuaire des services.
Authentification
Sécurisez votre service de webhook pour que vous seul ou votre agent Dialogflow CX puissiez effectuer des requêtes. Configurez-le lorsque vous créez ou modifiez une ressource webhook. Dialogflow CX est compatible avec les mécanismes d'authentification suivants :
| X | Élément |
|---|---|
| En-têtes d'authentification | Pour les paramètres de webhook, vous pouvez spécifier des paires clé/valeur d'en-tête HTTP facultatives. Si vous les fournissez, Dialogflow CX ajoute ces en-têtes HTTP aux requêtes de webhook. Il est courant de fournir une seule paire avec une clé 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. Si vous utilisez un identifiant statique pour l'en-tête authorization, nous vous recommandons de fournir votre identifiant à l'aide de Secret Manager. |
| Authentification de base avec nom d'utilisateur et mot de passe | Pour les paramètres de webhook, vous pouvez spécifier des valeurs facultatives pour le nom d'utilisateur et le mot de passe de connexion. Si vous le fournissez, Dialogflow CX ajoute un en-tête HTTP d'autorisation aux requêtes de webhook. Cet en-tête se présente sous la forme suivante : "authorization: Basic <base 64 encoding of the string username:password>". Nous vous recommandons de fournir votre nom d'utilisateur et votre mot de passe à l'aide de Secret Manager. |
| OAuth tiers | Vous pouvez spécifier la configuration OAuth tierce pour que Dialogflow CX échange un jeton d'accès à partir du système OAuth et l'ajoute à l'en-tête HTTP d'autorisation. Seul le flux d'identifiants client est accepté. Nous vous recommandons de fournir votre code secret du client à l'aide de Secret Manager. |
| Jetons d'accès des agents de service | Arrêtée. |
| Compte de service | Vous pouvez utiliser un compte de service pour l'authentification. Il peut être utilisé pour accéder à d'autres API Google Cloud . |
| Jetons d'ID d'agent de service | Vous pouvez choisir le jeton d'identité dans la section "Authentification de l'agent de service", ce qui vous permet d'utiliser le jeton d'identité de l'agent de service pour l'authentification. Cela vous permet d'accéder aux ressources Cloud Run. |
| Authentification TLS mutuelle | Consultez la documentation sur l'authentification TLS mutuelle. |
OAuth tiers
Dialogflow CX collecte un jeton d'accès auprès d'un fournisseur OAuth tiers et l'ajoute à l'en-tête HTTP d'autorisation lors de l'envoi de requêtes de webhook.
Le tableau suivant décrit les paramètres de ressources pour l'authentification OAuth tierce :
| X | Élément |
|---|---|
| ID client | ID client à utiliser lors de la demande d'un jeton OAuth. |
| Code secret du client | Secret à utiliser lors de la demande d'un jeton OAuth. Nous vous recommandons de fournir votre code secret du client à l'aide de Secret Manager. |
| URL du point de terminaison OAuth | URL à utiliser pour demander un jeton OAuth. |
| Champs d'application OAuth | Liste de champs d'application séparés par une virgule pour lesquels le jeton OAuth peut être utilisé. |
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 sous forme de paramètres dans la chaîne de requête de l'URL du point de terminaison OAuth.
Jeton d'ID d'agent de service
Dialogflow CX peut générer un jeton d'identité à l'aide de l'agent de service Dialogflow CX. Ce jeton est ajouté à l'en-tête HTTP d'autorisation lorsque Dialogflow CX appelle un webhook.
Un jeton d'identité peut être utilisé pour accéder aux ressources Cloud Run après avoir attribué le rôle Demandeur Cloud Run (roles/run.invoker) à
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 de webhook complète, à l'exclusion 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
Tout webhook peut également valider le jeton à l'aide de bibliothèques clientes Google ou de bibliothèques Open Source telles que la bibliothèque Google Auth pour Node.js.
Si votre webhook est hébergé sur Cloud Run et accessible via un équilibreur de charge, ajoutez l'URL de votre équilibreur de charge en tant qu'audience personnalisée à votre Cloud Run. Pour en savoir plus sur les audiences personnalisées, consultez Définir des audiences personnalisées pour les services.
Compte de service
Les comptes de service peuvent être utilisés pour authentifier les requêtes de webhook auprès de toutes les API Google compatibles.
Si vous ne l'avez pas encore fait, créez un compte de service.
Comme les comptes de service sont des comptes principaux, ils peuvent accéder aux ressources de votre projet en leur attribuant un rôle, comme pour n'importe quel autre compte principal. L'adresse e-mail du compte de service est utilisée pour
générer un jeton d'accès
qui est envoyé dans l'en-tête Authorization de la requête de webhook.
Pour configurer le webhook afin qu'il utilise des comptes de service, vous devez disposer des autorisations suivantes :
roles/iam.serviceAccountUser
Pour générer des jetons, l'agent de service Dialogflow doit disposer des autorisations suivantes :
roles/iam.serviceAccountTokenCreator
Le compte de service doit également disposer des autorisations nécessaires pour accéder au service qui héberge le webhook.
Authentification Secret Manager
Si vous utilisez des en-têtes d'authentification, l'authentification de base avec nom d'utilisateur et mot de passe, ou OAuth tiers, vous pouvez stocker les identifiants en tant que secrets à l'aide de Secret Manager. Voici les étapes nécessaires pour authentifier votre webhook à l'aide de secrets :
- Créez votre secret si vous n'en avez pas.
- Attribuez le rôle Accesseur de secrets Secret Manager (
roles/secretmanager.secretAccessor) au compte de service Agent de service Dialogflow sur le nouveau secret. - Copiez vos identifiants dans le presse-papiers.
- Ajoutez une version de secret à votre secret et collez vos identifiants en tant que valeur du secret :
- Si vous utilisez des en-têtes d'authentification, saisissez
Bearer <YOUR_CREDENTIAL>. - Si vous utilisez l'authentification de base par nom d'utilisateur et mot de passe, saisissez
<YOUR_USERNAME>:<YOUR_PASSWORD>. - Omettez tout caractère de nouvelle ligne à la fin.
- Si vous utilisez des en-têtes d'authentification, saisissez
- Copiez le nom de la version du secret que vous avez ajoutée. Le format du nom est
projects/<var>PROJECT_ID</var>/secrets/<var>SECRET_ID</var>/versions/<var>VERSION_ID</var>. - Ouvrez l'écran de modification du webhook.
- Configurez les paramètres d'authentification :
- Si vous utilisez des en-têtes d'authentification, créez un en-tête de requête de version de secret. Saisissez "Authorization" dans le champ Clé, puis collez le nom de la version du secret dans le champ Version du secret.
- Pour l'authentification de base par nom d'utilisateur et mot de passe, cliquez sur Version du secret sous Authentification de base, puis collez le nom de la version du secret dans le champ Version du secret.
- Si vous utilisez OAuth tiers, cliquez sur Version du secret sous OAuth tiers, puis collez le nom de la version du secret dans le champ Version du secret.
- Cliquez sur Enregistrer.
Validation des certificats HTTPS
Dialogflow CX utilise par défaut le magasin de confiance par défaut de Google pour valider les certificats HTTPS. 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 Certificats CA personnalisés.
Webhooks spécifiques à l'environnement
Si vous utilisez des environnements pour isoler la production du développement, vous pouvez configurer vos Webhooks pour qu'ils soient spécifiques à l'environnement. Vous pouvez fournir des paramètres d'URL et d'authentification spécifiques à l'environnement pour chaque ressource de webhook.
Cette configuration vous permet de développer et de tester vos mises à jour de code de webhook de manière sécurisée avant de les déployer en production.
Créer ou modifier des ressources de webhook
Une fois que vous avez un service de webhook en cours d'exécution, créez une ressource de webhook dans votre agent, qui inclut les informations de connectivité et d'authentification. Vous pouvez modifier les paramètres des ressources de webhook à tout moment.
Pour créer ou modifier une ressource de webhook :
Console
- Ouvrez la console Dialogflow CX.
- Accédez à votre projet.
- Sélectionnez votre agent.
- Cliquez sur l'onglet Gestion.
- Cliquez sur Webhooks.
- Cliquez sur Créer ou sélectionnez un webhook existant pour le modifier.
- Configurez les paramètres standards de la ressource webhook ou les paramètres flexibles de la ressource webhook.
- Cliquez sur Enregistrer.
API
Pour savoir comment créer une ressource de webhook, consultez la méthode create pour le type Webhook. Pour savoir comment modifier une ressource de webhook (à l'exception des paramètres spécifiques à l'environnement), 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 de 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 savoir comment 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 d'environnement | Ressource d'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: non autorisé403: Interdit404: Introuvable500: panne du serveur503: Service indisponible
Dialogflow CX appelle une erreur de webhook ou un événement intégré, et continue le traitement comme d'habitude dans les situations d'erreur suivantes :
- Le délai de réponse est dépassé.
- Un code d'état d'erreur est reçu.
- La réponse n'est pas valide.
- Le service de webhook est indisponible.
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
Dialogflow CX relance automatiquement les requêtes en cas de certaines erreurs de webhook pour améliorer la robustesse. Les réessais automatiques sont activés par défaut et ne peuvent pas être désactivés.
Dialogflow CX effectue une seule nouvelle tentative en cas d'échec temporaire, comme un délai avant expiration de la requête, une perte de connexion réseau et des codes d'état HTTP dans la plage 5xx (comme 500 Server fault ou 503 Service unavailable). Les erreurs client terminales, comme le code d'état HTTP 404 Not found, échouent immédiatement sans nouvelle tentative.
Latence cumulée et budgétisation du délai avant expiration
Étant donné que Dialogflow CX effectue une nouvelle tentative en cas d'échec temporaire, un point de terminaison de webhook qui ne répond pas peut entraîner un délai d'exécution cumulé pouvant atteindre le double de la valeur du délai d'expiration configuré avant que Dialogflow CX ne renvoie une erreur. Par exemple, avec le paramètre de délai avant expiration par défaut de cinq secondes, un point de terminaison qui ne répond pas expire au bout de cinq secondes lors de la première tentative et au bout de cinq secondes supplémentaires lors de la tentative de réessai. La latence totale est donc d'environ 10 secondes avant que Dialogflow CX n'appelle les gestionnaires d'erreurs, tels qu'un gestionnaire d'événements webhook.error.timeout ou sys.no-match-default.
Si votre architecture présente des limites strictes de latence en amont (comme les systèmes de téléphonie ou de réponse vocale interactive (RVI) qui mettent fin aux appels après un délai de 10 secondes), prévoyez les deux tentatives en définissant le délai avant expiration du webhook sur la moitié de la fenêtre autorisée (par exemple, entre 2,5 et 4 secondes).
Bonnes pratiques pour les nouvelles tentatives
Pour gérer efficacement les nouvelles tentatives dans votre service de webhook :
- Implémentez l'idempotence ou la déduplication des requêtes dans la logique de votre service de webhook pour traiter les requêtes en double de manière sécurisée.
- Si votre opération de webhook prend plus de temps que le délai d'attente configuré, renvoyez immédiatement un code d'état HTTP
200 OKavec un message de remplacement, puis traitez la tâche de longue durée de manière asynchrone.
Utiliser Cloud Run
Dialogflow CX s'intègre à Cloud Run pour vous permettre de créer un webhook sécurisé sans serveur. Si vous créez une ressource Cloud Run qui réside dans le même projet que votre agent, sélectionnez Authentification de l'agent de service, puis Jeton d'identité dans la configuration de l'authentification afin que votre agent puisse appeler votre webhook de manière sécurisée.
Vous devez configurer manuellement cette intégration dans les deux situations suivantes :
- Le compte de service Agent de service Dialogflow CX avec 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 :service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
- 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 Run ou Demandeur Cloud Functions au compte de service de l'agent de service Dialogflow CX dans le projet de votre ressource Cloud Run.
Ensuite, sélectionnez Authentification de l'agent de service > Jeton d'identité dans la section Configuration de l'authentification.
Utiliser des webhooks conteneurisés et le framework Go ezcx
Pour implémenter un webhook conteneurisé à l'aide de Go, consultez le framework Go ezcx. Ce framework simplifie de nombreuses étapes requises pour créer un webhook.
Utiliser Cloud Run avec un trafic interne uniquement
Vous pouvez utiliser des ressources Cloud Run configurées pour accepter le trafic interne provenant de réseaux de cloud privé virtuel (VPC) dans le même projet ou le même périmètre VPC Service Controls qu'un webhook, à condition que l'agent se trouve dans le même projet ou le même périmètre VPC Service Controls.
Utiliser l'Annuaire des services pour l'accès privé au réseau
Dialogflow CX s'intègre à l'accès au réseau privé de l'Annuaire des services pour pouvoir se connecter aux cibles de webhooks dans 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.
Le compte de service Agent de service Dialogflow CX avec l'adresse suivante doit exister pour votre projet d'agent :
service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
Attribuez les rôles suivants au compte de service Agent de service Dialogflow CX dans le projet où se trouve votre Annuaire des services :
servicedirectory.viewerservicedirectory.pscAuthorizedService
De plus, si votre Annuaire des services se trouve dans un projet différent de celui de votre agent Dialogflow CX, vous devez également accorder le rôle
servicedirectory.viewerau compte de l'agent de service Dialogflow CX dans le projet qui héberge votre agent Dialogflow CX.Spécifiez le service d'Annuaire des services, l'URL et les informations d'authentification facultatives lorsque vous créez le webhook.
Console

API
Consultez le champ
serviceDirectorypour le typeWebhook.Sélectionnez un protocole et une version pour la référence du webhook :
Protocole V3 V3beta1 REST Ressource de webhook Ressource de 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 résoudre les problèmes, vous pouvez configurer un test de disponibilité privé afin de vérifier que votre annuaire des services est correctement configuré.
Exemples et dépannage
Pour en savoir plus, consultez le guide d'utilisation des webhooks.