Créer une application Google Chat Dialogflow CX qui comprend le langage naturel et y répond

Cette page explique comment créer une application Google Chat capable de comprendre et de répondre dans un langage naturel à l'aide de Dialogflow. Ce guide utilise Dialogflow CX, qui est intégré directement à Google Chat. Vous pouvez également utiliser Dialogflow ES pour créer une application Google Chat Dialogflow ES en suivant le guide Dialogflow ES Google Chat.

Prenons l'exemple d'une application Chat qui aide les clients à louer une voiture. Si l'utilisateur écrit "Je voudrais louer une voiture", L'application Chat peut répondre "Où voulez-vous récupérer le véhicule ?", par exemple. Cette question lance une conversation semblable à un échange entre deux humains, dans laquelle l'application Chat comprend l'utilisateur et lui répond avec un phrasé naturel, tout en réservant la voiture.

Il ne s'agit là que d'un exemple. Les applications Chat Dialogflow sont utiles dans tous les types d'interactions. Si elle nécessite un phrasé naturel, vous devez utiliser une application Dialogflow Chat. Les agents prédéfinis vous aident à vous lancer rapidement et à présenter les fonctionnalités de Dialogflow, par exemple:

  • Réserver des vols
  • Planifier des rendez-vous chez le médecin
  • Commander une livraison de repas
  • Répondre aux questions sur un catalogue de produits de vente au détail, par exemple si des articles sont disponibles dans d'autres couleurs
  • Page de sélection de l'agent Dialogflow prédéfini.
    Figure 1. Sélection d'un agent prédéfini pour une application Chat Dialogflow.
  • Tester l'agent dans Dialogflow CX
    Figure 2 Tester l'agent dans Dialogflow CX pour vous assurer que sa logique et sa configuration fonctionnent comme prévu. Le diagramme montre un ensemble séquentiel de pages thématiques qui concernent des étapes spécifiques de la conversation, comme définir un lieu de prise en charge et de retour d'une voiture de location, et configure la logique qui les relie. La conversation est testée dans un simulateur.
  • Configurer une application Chat Dialogflow
    Figure 3. Configuration d'une application Chat pour traiter les réponses à l'aide de l'agent Dialogflow CX sur la page de configuration de l'API Chat dans la console Google Cloud.
  • Tester l'application Chat Dialogflow CX
    Figure 4. Conversation sur la réservation d'une voiture de location avec l'application Chat Dialogflow dans Google Chat.

Objectifs

  • configurer votre environnement ;
  • Créez et déployez un agent Dialogflow CX.
  • Créez et déployez une application Chat optimisée par l'agent Dialogflow CX.
  • Tester l'application Chat

Prérequis

Architecture

Le schéma suivant montre l'architecture d'une application Chat créée avec Dialogflow:

Architecture d'une application Chat implémentée avec Dialogflow

Dans le diagramme précédent, un utilisateur qui interagit avec une application Chat Dialogflow a le flux d'informations suivant:

  1. Un utilisateur envoie un message dans Chat à une application Chat, soit par message privé, soit dans un espace Chat.
  2. Un agent virtuel Dialogflow, qui réside dans Google Cloud, reçoit et traite le message pour générer une réponse.
  3. L'agent Dialogflow peut également interagir avec des services tiers externes à l'aide d'un webhook Dialogflow, comme un système de gestion de projet ou un outil de gestion des tickets.
  4. L'agent Dialogflow renvoie une réponse au service de l'application Chat dans Chat.
  5. La réponse est envoyée à l'espace Chat.

Configurer l'environnement

Avant d'utiliser les API Google, vous devez les activer dans un projet Google Cloud. Vous pouvez activer une ou plusieurs API dans un même projet Google Cloud.
  1. Dans la console Google Cloud, activez l'API Google Chat et l'API Dialogflow.

    Activer les API

  2. Vérifiez que vous activez les API dans le bon projet Cloud, puis cliquez sur Suivant.

  3. Vérifiez que vous activez les API appropriées, puis cliquez sur Activer.

Créer un agent Dialogflow CX

Un agent Dialogflow CX est un agent virtuel qui gère les conversations simultanées avec vos utilisateurs finaux. Il s'agit d'un module de compréhension du langage naturel qui saisit les nuances du langage humain. Dialogflow traduit le contenu texte de l'utilisateur final au cours d'une conversation en données structurées assimilables par vos applications et services. Vous pouvez créer un agent Dialogflow conçu pour gérer les types de conversations requis pour votre système.

Un agent Dialogflow est comme un agent humain de centre d'appels. L'un comme l'autre doivent apprendre à gérer les scénarios de conversation attendus, sans qu'il soit nécessaire de leur dispenser un entraînement/une formation trop explicite.

Voici comment créer l'agent Dialogflow CX:

  1. Dans la console Dialogflow CX, ouvrez la console Dialogflow CX. Cliquez sur Menu > Dialogflow CX.

    Accéder à la console Dialogflow CX

  2. Choisissez un projet Google Cloud. Pour trouver votre projet, vous devrez peut-être cliquer sur Tous, puis le rechercher.

  3. Vous pouvez désormais choisir un agent prédéfini ou en créer un. Si vous préférez explorer la personnalisation des agents en détail plus tard, choisissez l'un des agents prédéfinis, qui vous aideront également à découvrir ce que les agents peuvent faire.

    Pour choisir un agent prédéfini, procédez comme suit:

    1. Cliquez sur Utiliser des agents prédéfinis.
    2. Sélectionnez un agent prédéfini. Pour ce guide, sélectionnez Voyage: location de voiture.

      Les agents sont classés comme débutants, intermédiaires ou avancés en fonction du nombre de fonctionnalités qu'ils utilisent et de la sophistication de leur logique de conversation. Le choix d'un agent intermédiaire ou avancé peut nécessiter des personnalisations et des paramètres spécifiques à l'agent, y compris l'activation de fonctionnalités et d'API dans la console Google Cloud.

    3. Cliquez sur Importer en tant qu'agent.

    Pour créer votre propre agent, procédez comme suit:

    1. Cliquez sur Create Agent (Créer un agent).
    2. Sélectionnez Générer automatiquement pour créer un agent de data store ou Créer le vôtre pour créer d'autres types d'agents.

    Pour obtenir une procédure détaillée de création d'un agent, consultez la section Créer un agent Dialogflow CX.

  4. Configurez les paramètres de base de l'agent:

    1. Dans Nom à afficher, saisissez un nom à afficher.
    2. Sélectionnez votre lieu préféré. Si vous souhaitez modifier les paramètres de localisation avancés, cliquez sur Modifier.
    3. Sélectionnez le fuseau horaire de votre choix.
    4. Sélectionnez la langue par défaut de votre agent. Une fois l'agent créé, vous ne pouvez plus modifier la langue par défaut.
  5. Cliquez sur Créer. Dialogflow CX commence à créer l'agent, puis affiche son flux de démarrage par défaut.

  6. Vous pouvez également personnaliser l'agent. Pour obtenir un aperçu détaillé du processus de personnalisation de l'agent, consultez Créer un agent Dialogflow CX.

  7. Nous vous recommandons de tester l'agent:

    1. Cliquez sur Tester l'agent.
    2. Sélectionnez Tester l'agent dans l'environnement.
    3. Dans "Environnement", sélectionnez Brouillon.
    4. Dans Flow, sélectionnez Default Start Flow (Flux de démarrage par défaut).
    5. Dans "Page", sélectionnez Page d'accueil.
    6. Dans la barre de composition Discuter avec un agent, saisissez Hello, puis appuyez sur Entrée. L'agent répond en se présentant.
    7. Terminez le test en menant l'exemple de conversation de test.
  8. L'agent Dialogflow CX est créé. Revenez à la console Dialogflow CX. Cliquez sur Menu > Dialogflow CX.

    Accéder à la console Dialogflow CX

  9. Sous Agents, cliquez sur > Copier le nom. Enregistrez ce nom, car vous l'utiliserez lors de la configuration de l'application Chat.

Créer une application Chat et la connecter à l'agent Dialogflow

Après avoir créé un agent Dialogflow CX, procédez comme suit pour le transformer en application Chat:

  1. Dans la console Google Cloud, accédez à l'API Google Chat. Recherchez "API Google Chat", puis cliquez sur API Google Chat, puis sur Gérer.

    Accéder à l'API Chat

  2. Cliquez sur Configuration et configurez l'application Chat:

    1. Dans le champ Nom de l'application, saisissez Dialogflow App.
    2. Dans URL de l'avatar, saisissez https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png.
    3. Dans Description, saisissez Responds to real human conversation.
    4. Sous Fonctionnalité, sélectionnez Recevoir des messages privés et Rejoindre des espaces et des conversations de groupe.
    5. Sous Paramètres de connexion, sélectionnez Dialogflow.
    6. Sous Paramètres Dialogflow, sélectionnez Dialogflow CX.
    7. Dans Nom de l'agent ou de la ressource d'environnement, collez le nom de l'agent Dialogflow CX que vous avez copié à la fin de la section Créer un agent Dialogflow CX.
    8. Rendre cette application de chat accessible à certains utilisateurs et groupes de votre domaine, puis saisissez votre adresse e-mail.
    9. Sous Journaux, sélectionnez Consigner les erreurs dans Logging.
  3. Cliquez sur Enregistrer.

L'application Chat est prête à recevoir et à répondre aux messages dans Chat.

Tester l'application Chat

Testez l'application Chat Dialogflow CX en lui envoyant un message dans Google Chat.

  1. Ouvrez Google Chat avec le compte Google Workspace que vous avez fourni lorsque vous vous êtes ajouté en tant que testeur de confiance.

    Accéder à Google Chat

  2. Cliquez sur Nouveau chat.
  3. Dans le champ Ajouter une ou plusieurs personnes, saisissez le nom de votre application Chat.
  4. Sélectionnez votre application Chat dans les résultats. Un message privé s'ouvre.

  5. Dans le nouveau message privé avec l'application, saisissez Hello, puis appuyez sur enter.

    L'application Chat Dialogflow répond en se présentant.

  6. Terminez le test en menant la conversation d'exemple.

Exemple de conversation test

Pour tester l'application Chat Dialogflow CX dans la console Dialogflow CX ou dans Google Chat, suivez la conversation suivante. Cette explication vous aide à comprendre comment l'agent Dialogflow CX interprète le langage naturel de l'utilisateur et produit sa propre réponse en langage naturel à chaque étape de la conversation. Cet exemple de conversation est basé sur l'agent prédéfini appelé Voyage: location de voiture.

Dialog Explication
Utilisateur final:Bonjour
Agent:Bonjour ! Je suis l'agent virtuel de location de voitures. Je peux vous aider à effectuer une nouvelle réservation de location de voiture. Que puis-je faire pour vous ?
  1. La route intent d'accueil par défaut du flux de démarrage par défaut est appelée.
  2. Le fulfillment pour ce gestionnaire d'état ("Bonjour ! Je suis…") est ajouté à la file d'attente de réponses.
  3. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Je souhaite louer une voiture.
Agent:Où souhaitez-vous récupérer le véhicule ?
  1. Le chemin d'intent car_rental.reservation_create dans la page de démarrage est mis en correspondance.
  2. La session passe à la page Lieu de retrait.
  3. Le formulaire de la page Pickup Location (Emplacement de retrait) n'est pas complet. L'agent utilise donc le paramètre pickup_location pour inviter l'utilisateur ("Where would you like to pick up..." (Où souhaitez-vous retirer votre commande ?)). qui est ajouté à la file d'attente de réponses.
  4. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Las Vegas
Agent:D\'accord. Le retrait aura lieu à Las Vegas.
Agent:L'endroit où vous souhaitez déposer le colis est-il différent de celui où vous l'avez récupéré ?
  1. L'entrée de l'utilisateur final remplit le paramètre pickup_location demandé par l'agent lors du tour de conversation précédent.
  2. La route d'intent car_rental.return_different_location dans le flux de démarrage par défaut est mise en correspondance.
  3. La route de remplissage du formulaire de la page Lieu de retrait est évaluée et appelée. Il comporte un traitement ("OK, votre retrait…"), qui est ajouté à la file d'attente de réponses avec ses références de paramètre résolues aux valeurs réelles fournies par l'utilisateur final.
  4. La session passe à la page Confirmer l'emplacement.
  5. La page Confirmer l'emplacement comporte un traitement d'entrée ("L'emplacement de livraison est-il différent…"). qui est ajouté à la file d'attente de réponses.
  6. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Oui. Je vais rendre la voiture à Los Angeles.
Agent:D\'accord. Le lieu de livraison est Los Angeles.
Agent:À quelle date et à quelle heure souhaitez-vous récupérer le véhicule ?
  1. La route d'intent car_rental.return_different_location dans le flux de démarrage par défaut est mise en correspondance.
  2. La session passe à la page Lieu de dépôt.
  3. L'entrée de l'utilisateur final remplit le paramètre drop_off_location demandé par l'agent lors du tour de conversation précédent.
  4. La route de remplissage du formulaire de la page Lieu de dépôt est évaluée et appelée. Il comporte un fulfillment ("OK, votre livraison…"), qui est ajouté à la file d'attente de réponses.
  5. La session passe à la page Durée de location.
  6. Les valeurs du formulaire de la page Durée de la location sont incomplètes. L'utilisateur est donc invité à saisir le paramètre pickup_date_time ("À quelle date et à quelle heure souhaitez-vous récupérer le véhicule ?"). qui est ajouté à la file d'attente de réponses.
  7. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Je souhaite récupérer la voiture le 5 mars à midi.
Agent:À quelle date et à quelle heure souhaitez-vous rendre le véhicule ?
  1. L'entrée de l'utilisateur final remplit le paramètre pickup_date_time demandé par l'agent lors du tour de conversation précédent.
  2. La page Durée de la location comporte une autre valeur de formulaire manquante. L'utilisateur est donc invité à saisir le paramètre drop_off_date_time ("À quelle date et à quelle heure souhaitez-vous rendre le véhicule ?"). qui est ajouté à la file d'attente de réponses.
  3. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:15 mars à midi.
Agent : Pour confirmer :

Vous allez récupérer le véhicule à Las Vegas le 5 mars 2024 à 12h00 et le rendre à Los Angeles le 15 mars 2024 à 12h00. C'est bien cela ?

Vous confirmez ?
  1. L'entrée de l'utilisateur final remplit le paramètre drop_off_date_time demandé par l'agent lors du tour de conversation précédent.
  2. La session passe à la page Confirmer la durée de location.
  3. La page Confirmer la durée de location comporte un fulfillment d'entrée ("Pour confirmer…"). qui est ajouté à la file d'attente de réponses.
  4. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Oui, merci.
Agent:Parfait. Choisissez maintenant un véhicule.
Agent:Voulez-vous un véhicule économique ou de luxe ?
  1. La route de l'intent small_talk.confirmation.yes sur la page Confirm Rental Duration (Confirmer la durée de location) est mise en correspondance.
  2. L'agent confirme le choix de l'utilisateur par un message ("Parfait ! Maintenant, choisissons..."), qui est ajouté à la file d'attente de réponses.
  3. La session passe à la page Désambiguïsation du véhicule.
  4. Le formulaire de la page Vehicle Disambiguation (Désambiguïsation du véhicule) n'est pas complet. L'agent utilise donc le paramètre vehicle_type pour inviter l'utilisateur ("Would you like an economy or luxury...", "Voulez-vous une voiture économique ou de luxe ?"). qui est ajouté à la file d'attente de réponses.
  5. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Économique, s'il vous plaît.
Agent:Voulez-vous la voiture ou le camion Cymbal ?
  1. La route d'intent $session.params.vehicle_type="economy_vehicle" est mise en correspondance.
  2. La session passe à la page Options économiques.
  3. La page Options économiques comporte un traitement d'entrée ("Souhaitez-vous…"). qui est ajouté à la file d'attente de réponses.
  4. L'agent envoie la file d'attente de réponses à l'utilisateur final.
Utilisateur final:Cymbal Truck.
Agent:Le camion Cymbal coûte 50,33 $par jour. Il peut accueillir quatre personnes et est équipé d'une radio AM/FM. Voulez-vous procéder au paiement ?
Utilisateur final:Oui, s'il vous plaît.
  1. La route d'intent $session.params.vehicle_type="Cymbal Truck" est mise en correspondance et le paramètre vehicle_model est renseigné.
  2. La session passe à la page Confirm Cymbal Truck (Confirmer le camion de cymbales).
  3. La page Confirm Cymbal Truck (Confirmer le camion Cymbal) comporte un fulfillment d'entrée ("The Cymbal Truck is $50.33 per day…", Le camion Cymbal coûte 50,33 $ par jour…), qui est ajouté à la file d'attente de réponses.
  4. L'agent envoie la file d'attente de réponses à l'utilisateur final.
  5. La réponse de l'utilisateur correspond à la route small_talk.confirmation.yes.
Agent:Quel type de carte allez-vous utiliser ?
Utilisateur final:Altostrat
Agent:Veuillez saisir le numéro de carte.
Utilisateur final:1234 1234 1234 1234
Agent:Quel est le nom figurant sur la carte ?
Utilisateur final:Charlie
Agent:Quelle est l'adresse de facturation ?
Utilisateur final:1800 Amphibious Blvd., Mountain View, CA
Agent:Quel est le code postal de facturation ?
Utilisateur final : 94045
Agent : Vous allez récupérer la voiture Cymbal à Las Vegas le 05/03/2024 à 12h00 et la rendre le 15/03/2024 à 12h00. Le total de ce trajet sera de 175,38 $.
Agent:Merci de nous avoir fait confiance. Bonne journée !
  1. La session passe à la page Paiement.
  2. Le formulaire Payment (Paiement) n'est pas complet. L'agent demande donc à l'utilisateur de fournir les paramètres card_type (Type de carte), card_number (Numéro de carte), billing_name (Nom de facturation), billing_street_address (Adresse de facturation) et billing_zip_code (Code postal de facturation) ("What type of card will..."). qui sont ajoutés de manière séquentielle à la file d'attente de réponses et envoyés lorsque l'utilisateur répond. Les réponses de l'utilisateur définissent chaque valeur de paramètre.
  3. La session passe à la page Confirmation de la location.
  4. La page Confirmation de location comporte un traitement d'entrée ("OK, votre retrait aura lieu le…"). qui est ajouté à la file d'attente de réponses.
  5. L'agent envoie la file d'attente de réponses à l'utilisateur final.
  6. La session passe à la page Terminer la session.

Envoyer des messages de carte depuis Dialogflow

Dialogflow peut répondre par des messages textuels ou sous forme de fiche. Pour répondre avec un message de carte, spécifiez-le en tant que charge utile personnalisée dans Fulfillment.

Le code JSON suivant montre comment envoyer un message de carte en tant que charge utile personnalisée lors de l'exécution:

json

{
  'cardsV2': [{
    'cardId': 'createCardMessage',
    'card': {
      'header': {
        'title': 'A card message!',
        'subtitle': 'Sent from Dialogflow',
        'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
        'imageType': 'CIRCLE'
      },
      'sections': [
        {
          'widgets': [
            {
              'buttonList': {
                'buttons': [
                  {
                    'text': 'Read the docs!',
                    'onClick': {
                      'openLink': {
                        'url': 'https://developers.google.com/workspace/chat'
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

Limites et considérations

  • Les événements d'interaction dans le chat sont pris en charge de manière limitée et présentent certaines considérations :
    • Les types d'événements d'interaction suivants sont acceptés :
      • MESSAGE
      • ADDED_TO_SPACE
      • CARD_CLICKED
    • Pour les événements MESSAGE ou ADDED_TO_SPACE, la requête envoyée à l'agent Dialogflow correspond à la valeur du champ argumentText dans le message Chat. Si le message inclut une commande slash, la valeur du champ text est utilisée à la place.
    • Pour les événements CARD_CLICKED, la requête envoyée à l'agent Dialogflow est au format CARD_CLICKED.functionName, où functionName correspond à la valeur du champ function de l'objet Action associé à l'élément de fiche interactive (comme un bouton).
    • La charge utile JSON complète de chaque événement d'interaction Chat est envoyée à Dialogflow en tant que charge utile personnalisée dans le paramètre de requête. Vous pouvez y accéder avec un webhook Dialogflow en interrogeant la valeur du champ WebhookRequest.payload.
  • Consignes à prendre en compte pour répondre aux commandes à barre oblique et recevoir des données à partir de cartes ou de boîtes de dialogue :
    • Lorsque les applications Dialogflow Chat reçoivent un message avec une commande slash, la saisie de la requête ne contient que la valeur du champ text. Le champ text commence par le nom de la commande à barre oblique (par exemple, /command), que vous pouvez utiliser pour configurer l'intent d'un agent Dialogflow afin de détecter une commande à barre oblique.
    • Si l'agent Dialogflow doit traiter la charge utile JSON de l'événement d'interaction Chat, il peut le faire à l'aide d'un webhook Dialogflow pour inspecter la charge utile personnalisée dans le paramètre de requête.
    • Pour afficher une boîte de dialogue à partir de l'agent Dialogflow, répondez avec une seule charge utile JSON personnalisée qui inclut un message contenant une réponse d'action DIALOG.
    • Pour traiter les données saisies à partir de cartes, l'agent Dialogflow peut détecter les intents commençant par le texte CARD_CLICKED et répondre avec une seule charge utile JSON personnalisée contenant l'action appropriée.
  • Les aperçus des liens ne sont pas acceptés.
  • Si l'agent Dialogflow ne répond qu'avec un seul message, celui-ci est envoyé à Google Chat de manière synchrone. Si l'agent Dialogflow répond avec plusieurs messages, tous les messages sont envoyés à Chat de manière asynchrone en appelant la méthode create sur la ressource spaces.messages dans l'API Chat une fois pour chaque message.
  • Lorsque vous utilisez l'intégration de Dialogflow CX avec Chat, l'agent Dialogflow et l'application Chat doivent être configurés dans le même projet Google Cloud. Si vous devez configurer Dialogflow et Chat dans différents projets Cloud, vous pouvez configurer un serveur intermédiaire pour faciliter la connexion. Pour en savoir plus, consultez l'exemple d'intégration de Chat pour Dialogflow CX sur GitHub.

Résoudre les problèmes

Lorsqu'une application ou une fiche Google Chat renvoie une erreur, l'interface Chat affiche le message "Un problème s'est produit". ou "Impossible de traiter votre demande". Il arrive que l'interface utilisateur de Chat n'affiche aucun message d'erreur, mais que l'application ou la fiche Chat produise un résultat inattendu. Par exemple, un message de fiche peut ne pas s'afficher.

Bien qu'un message d'erreur ne s'affiche pas dans l'interface utilisateur de Chat, des messages d'erreur descriptifs et des données de journal sont disponibles pour vous aider à corriger les erreurs lorsque la journalisation des erreurs pour les applications Chat est activée. Pour savoir comment afficher, déboguer et corriger les erreurs, consultez Résoudre et corriger les erreurs Google Chat.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel ne soient facturées sur votre compte Google Cloud, nous vous recommandons de supprimer le projet Cloud.

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources. Cliquez sur Menu > IAM et administration > Gérer les ressources.

    Accédez au gestionnaire de ressources.

  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer .
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
  • Dialogflow CX adopte une approche de machine à états pour la conception d'agents Dialogflow. Vous bénéficiez ainsi d'un contrôle clair et explicite sur une conversation, d'une meilleure expérience utilisateur et d'un workflow de développement amélioré. Lorsque vous créez une application Dialogflow Chat, nous vous recommandons d'utiliser Dialogflow CX.
  • Dialogflow ES est une autre façon d'utiliser Dialogflow avec une application Chat.