Interroger une base de données

Le webhook utilise actuellement des données codées en dur dans la fonction cruisePlanCoverage. À cette étape du tutoriel, vous allez créer une base de données Spanner, la remplir avec les destinations couvertes et mettre à jour votre fonction pour interroger la base de données.

Configuration du projet

Il est important que votre agent Dialogflow et la base de données qui appartiennent tous deux au même projet. C'est le moyen le plus simple pour votre fonction d'avoir un accès sécurisé à votre base de données. Vous devez également activer l'API Spanner.

  1. Avant de créer la base de données, sélectionnez votre projet dans la console Google Cloud.

    Accéder au sélecteur de projet

  2. Activer l'API Spanner pour le projet

    Activer l'API Spanner

Créer une instance Spanner

Lorsque vous utilisez Spanner pour la première fois, vous devez créer une instance, c'est-à-dire l'allocation de ressources utilisées par les bases de données Spanner dans cette instance.

  1. Dans la console Google Cloud, accédez à la page Instances Spanner.

    Accéder à la page Instances Spanner

  2. Cliquez sur Créer une instance.

  3. Pour le nom de l'instance, saisissez Tutorial Instance.

  4. L'ID d'instance est automatiquement saisi en fonction du nom de l'instance.

  5. Dans Choisir votre configuration : Conservez l'option par défaut Régional et sélectionnez la même région position que vous avez choisie lors de la création de la fonction.

  6. Dans Allouer de la capacité de calcul, saisissez "100 unités de traitement". Cela permet de fournir une capacité minimale pour le tutoriel.

  7. Cliquez sur Créer. La console Google Cloud affiche la page Présentation de l'instance. que vous avez créés.

Créer une base de données Spanner

Maintenant que vous disposez d'une instance, vous devez créer une base de données. Pour créer une base de données:

  1. Sur la page Présentation de l'instance, cliquez sur Créer une base de données.
  2. Pour le nom de la base de données, saisissez tutorial-database.
  3. Sélectionnez le dialecte de base de données Google Standard SQL.
  4. Cliquez sur Créer. La console Google Cloud affiche la page Présentation de la base de données. que vous avez créés.

Créer une table pour votre base de données

Maintenant que vous avez une base de données, vous devez créer une table pour la base de données. Pour créer une table:

  1. Dans la section "Tables" de la page Présentation de la base de données, cliquez sur Créer une table.
  2. Sur la page Écrire des instructions LDD, saisissez:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. Cliquez sur Envoyer. La console Google Cloud revient à la page Présentation de la base de données. indique que des mises à jour du schéma sont en cours. Attendez la fin de la mise à jour.

Insérer des données dans votre table

Maintenant que votre base de données contient un tableau, vous devez ajouter des données au tableau. Pour ajouter des données:

  1. Dans la liste des tables de la page Présentation de la base de données, cliquez sur le tableau "Destinations". La console Google Cloud affiche la page Schéma de la table "Destinations".
  2. Dans le menu de navigation de gauche, Cliquez sur Données pour afficher la page Données du tableau "Destinations".
  3. Cliquez sur Insert. La console Google Cloud affiche la page Requête de la table "Destinations" avec un Nouvel onglet de requête contenant les instructions INSERT et SELECT. Remplacez ces instructions par les lignes suivantes:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. Cliquez sur Exécuter.

  5. Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données du tableau "Destination". Vérifiez que la table contient les données souhaitées.

Mettre à jour la fonction Cloud pour interroger la base de données

La fonction cruisePlanCoverage dans le code du webhook vérifie si des variables d'environnement spécifiques sont définies contenant des informations pour se connecter à la base de données. Si ces variables d'environnement ne sont pas définies, la fonction utilise une liste de destinations codée en dur.

Maintenant que vous avez configuré une base de données, Mettez à jour votre fonction Cloud pour définir les variables d'environnement requises:

  1. Ouvrez la page de présentation de Cloud Functions.

    Accéder à la présentation de Cloud Functions

  2. Cliquez sur la fonction "tutorial-telecommunications-webhook" pour accéder à sa page d'informations.

  3. Cliquez sur Modifier.

  4. Ouvrez la section Paramètres d'exécution, de compilation et de connexion.

  5. Sélectionnez l'onglet Environnement d'exécution.

  6. Ajoutez les variables suivantes dans la section "Variables d'environnement d'exécution" :

    • PROJECT_ID : ID de votre projet.
    • SPANNER_INSTANCE_ID : ID de votre instance Spanner (probablement tutorial-instance)
    • SPANNER_DATABASE_ID: ID de votre base de données Spanner (probablement tutorial-database)
  7. Cliquez sur Suivant.

  8. Cliquez sur Déployer.

  9. Attendez que l'indicateur d'état indique que la fonction a bien été déployée.

Tester l'agent

Votre agent est maintenant prêt à essayer. Cliquez sur le bouton Test Agent (Agent de test) dans la console Dialogflow. pour ouvrir le simulateur. Essayez de tenir la conversation suivante avec l'agent :

Au tour de la conversation Vous Agent
1 Bonjour, Bonjour ! Je suis l'agent de télécommunications virtuels. Je peux vous aider à résoudre vos questions sur la facturation et les projets, et à ajouter des projets de voyage et de croisière. Que puis-je faire pour vous aujourd'hui ?
2 Je souhaite ajouter un forfait croisière Laissez-moi y jeter un œil. Quel est votre numéro de téléphone ?
3 123-123-1234 Combien de jours dure votre croisière ?
4 7 L'option 1 inclut les appels et les SMS. Il coûte [XX] $/jour. Plus d'infos ici [URL]. L'option 2 inclut les appels, les SMS et les données. Il coûte [XX] $/jour. Plus d'infos ici [URL]. Quel forfait de croisière souhaitez-vous ajouter ?
5 Option 1 OK. J'ai ajouté ce forfait à votre compte. Pendant votre croisière, vous aurez peut-être également besoin d'une couverture à terre. Dans quel port allez-vous vous arrêter ?
6 Italy Combien de jours y passez-vous ?
7 3 Bonne nouvelle ! La couverture est gratuite sur le territoire italien. C’est terminé ! Y a-t-il autre chose que je puisse faire pour vous aujourd'hui ?

Si vous examinez le code, L'Italie ne figure pas dans la liste des destinations couvertes codée en dur. Cela signifie que votre webhook s'est connecté avec succès à la base de données, qui inclut l'Italie.

Dépannage

Le code du webhook inclut des instructions de journalisation. Si vous rencontrez des problèmes, essayez afficher les journaux pour votre fonction Cloud.

Si votre fonction ne se connecte pas à la base de données et qu'une erreur d'autorisation s'affiche dans les journaux, vous devrez peut-être corriger le rôle du compte de service par défaut utilisé par votre fonction. Ce compte de service se présente au format suivant : PROJECT_ID@appspot.gserviceaccount.com Vous pouvez résoudre ce problème de l'une des manières suivantes:

En savoir plus

Pour en savoir plus sur les étapes ci-dessus, consultez les articles suivants: