Votre webhook utilise actuellement des données codées en dur dans la fonction cruisePlanCoverage.
Au cours de 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 se trouvent dans le même projet. C'est le moyen le plus simple pour que votre fonction ait un accès sécurisé à votre base de données. Vous devez également activer l'API Spanner.
Avant de créer la base de données, sélectionnez votre projet dans la console Google Cloud .
Activez l'API Spanner pour le projet.
Créer une instance Spanner
Lorsque vous utilisez Spanner pour la première fois, vous devez créer une instance. Celle-ci représente l'allocation des ressources nécessaires aux bases de données Spanner que vous créerez dans cette instance.
Dans la console Google Cloud , accédez à la page Instances Spanner.
Cliquez sur Créer une instance.
Pour le nom de l'instance, saisissez Instance du tutoriel.
L'ID de l'instance est automatiquement renseigné en fonction du nom de l'instance.
Dans Choisissez votre configuration, conservez l'option par défaut Régional et sélectionnez le même emplacement régional que celui que vous avez choisi lors de la création de la fonction.
Dans Allouer une capacité de calcul, saisissez 100 unités de traitement. Cela fournit une capacité minimale pour le tutoriel.
Cliquez sur Créer. La console Google Cloud affiche la page de présentation de l'instance que vous avez créée.
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 :
- Sur la page Présentation de l'instance, cliquez sur Créer une base de données.
- Pour le nom de la base de données, saisissez tutorial-database.
- Sélectionnez le dialecte de base de données SQL standard Google.
- Cliquez sur Créer. La console Google Cloud affiche la page de présentation de la base de données que vous avez créée.
Créer une table pour votre base de données
Maintenant que vous disposez d'une base de données, vous devez y créer une table. Pour créer une table :
- Dans la section "Tables" de la page Présentation de la base de données, cliquez sur Créer une table.
Sur la page Écrire des instructions LDD, saisissez :
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);Cliquez sur Envoyer. La console Google Cloud revient à la page Présentation de la base de données et indique que les mises à jour du schéma sont en cours. Attendez que la mise à jour soit terminée.
Insérer des données dans votre table
Maintenant que votre base de données comporte une table, vous devez y ajouter des données. Pour ajouter des données :
- Dans la liste des tables de la page Présentation de la base de données, cliquez sur la table "Destinations". La console Google Cloud affiche la page Schéma de la table de destination.
- Dans le menu de navigation de gauche, cliquez sur Données pour afficher la page Données de la table de destination.
Cliquez sur Insérer. La console Google Cloud affiche la page Requête de la table Destinations avec un nouvel onglet de requête contenant les instructions
INSERTetSELECT. Remplacez ces instructions par les suivantes :INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);Cliquez sur Exécuter.
Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données de la table de 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 du code du webhook vérifie si des variables d'environnement spécifiques sont définies avec les informations de connexion à 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 :
Ouvrez la page de présentation de Cloud Functions.
Cliquez sur la fonction "tutorial-telecommunications-webhook" pour accéder à sa page d'informations.
Cliquez sur Modifier.
Ouvrez la section Paramètres d'exécution, de compilation et de connexion.
Sélectionnez l'onglet Environnement d'exécution.
Ajoutez les variables suivantes dans la section "Variables d'environnement d'exécution" :
PROJECT_ID: ID du projet.SPANNER_INSTANCE_ID: ID de votre instance Spanner (probablementtutorial-instance)SPANNER_DATABASE_ID: ID de votre base de données Spanner (probablementtutorial-database)
Cliquez sur Suivant.
Cliquez sur Déployer.
Attendez que l'indicateur d'état indique que la fonction a bien été déployée.
Tester votre agent
Votre agent est maintenant prêt à être testé. Cliquez sur le bouton Tester l'agent dans la console Dialogflow pour ouvrir le simulateur. Essayez d'avoir la conversation suivante avec l'agent :
| Tour de conversation | Vous | Agent |
|---|---|---|
| 1 | Bonjour | Bonjour ! Je suis l'agent virtuel pour les télécommunications. Je peux vous aider à résoudre les problèmes de facturation et de forfait, à résoudre les problèmes, et à ajouter des forfaits de voyage et de croisière. Comment puis-je vous aider aujourd'hui ? |
| 2 | Je souhaite ajouter un forfait croisière | Je vais vérifier. 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. Pour en savoir plus, consultez [URL]. L'option 2 inclut les appels, les SMS et les données. Il coûte [XX] $/jour. Pour en savoir plus, consultez [URL]. Quel plan 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 aussi besoin d'une couverture sur terre. À quel port allez-vous vous arrêter ? |
| 6 | Italie | Et combien de jours allez-vous y passer ? |
| 7 | 3 | Bonne nouvelle ! L'Italie dispose d'une couverture sans frais sur terre. Tout est prêt. 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 codée en dur des destinations couvertes. Cela signifie que votre webhook s'est bien connecté à 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 d'afficher les journaux de 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 sous la forme PROJECT_ID@.
Pour résoudre ce problème, vous pouvez procéder de l'une des manières suivantes :
Si le compte de service par défaut s'affiche sur la page principale IAM, modifiez les autorisations du compte de service. Le rôle Éditeur fonctionnera, mais vous souhaiterez peut-être un rôle plus précis dans un scénario de production.
Si un compte de service par défaut ne s'affiche pas sur la page principale IAM, accordez le rôle requis en ajoutant le compte de service en tant que nouveau compte principal.
Vous pouvez également utiliser un compte de service que vous créez.
En savoir plus
Pour en savoir plus sur les étapes ci-dessus, consultez les ressources suivantes :