Votre webhook utilise actuellement des données codées en dur dans la fonction accountBalanceCheck
.
Dans cette étape du tutoriel,
vous allez créer
Spanner
la base de données, la remplir
avec des données de solde,
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. Il s'agit du moyen le plus simple pour que votre fonction dispose d'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.
Activer 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, c'est-à-dire un élément qui alloue les ressources utilisées par les bases de données Spanner 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 Tutorial Instance.
L'ID d'instance est automatiquement saisi en fonction du nom de l'instance.
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.
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 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 de Google.
- Cliquez sur Créer. La console Google Cloud affiche la page Présentation de la base de données que vous avez créée.
Créer des tables pour votre base de données
Maintenant que vous avez une base de données, vous devez créer des tables pour elle. Pour créer des tableaux :
- 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 Checking ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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.
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 Savings ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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 vos tableaux
Maintenant que votre base de données contient des tables, vous devez ajouter des données aux tables. Pour ajouter des données:
- Dans la liste des tables de la page Présentation de la base de données, cliquez sur le tableau courant. La console Google Cloud affiche la page Schéma de la table.
- Dans le menu de navigation de gauche, cliquez sur Données pour afficher la page Données de la table.
Cliquez sur Insert. La console Google Cloud affiche la page Requête de la table avec un Nouvel onglet de requête contenant les instructions
INSERT
etSELECT
. Remplacez ces instructions par les suivantes :INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);
Cliquez sur Exécuter.
Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données du tableau. Vérifiez que la table contient les données souhaitées.
Cliquez sur le lien tutorial-database: Présentation pour revenir à la page de présentation de la base de données.
Dans la liste des tables de la page Présentation de la base de données, cliquez sur le tableau "Économies". La console Google Cloud affiche la page Schéma de la table.
Dans le menu de navigation de gauche, cliquez sur Données pour afficher la page Données de la table.
Cliquez sur Insert. La console Google Cloud affiche la page Requête de la table avec un Nouvel onglet de requête contenant les instructions
INSERT
etSELECT
. Remplacez ces instructions par les suivantes :INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);
Cliquez sur Exécuter.
Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données du tableau. 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 accountBalanceCheck
du code du webhook vérifie si des variables d'environnement spécifiques sont définies avec des informations permettant de se connecter à la base de données.
Si ces variables d'environnement ne sont pas définies, la fonction utilise un solde de compte codé 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-banking-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 de votre 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 l'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 de tenir la conversation suivante avec l'agent :
Au tour de la conversation | Vous | Agent |
---|---|---|
1 | Bonjour, | Bonjour et merci d'avoir choisi ACME Bank. |
2 | Je souhaite connaître le solde de mon compte | Pour quel compte souhaitez-vous connaître le solde : compte d'épargne ou compte courant ? |
3 | Vérification… | Voici votre dernier solde : 10,00 $ |
Si vous examinez le code, 10 $ n'est pas la valeur codée en dur. Cela signifie que votre webhook s'est bien connecté à la base de données, qui dispose d'un solde de 10 $.
Dépannage
Le code du webhook inclut des instructions de journalisation. En cas de problème, 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 sous la forme PROJECT_ID@appspot.gserviceaccount.com
.
Vous pouvez résoudre ce problème de l'une des manières suivantes:
Si le compte de service par défaut s'affiche sur la page principale d'IAM, modifiez les autorisations du compte de service. Le rôle Éditeur fonctionne, mais vous pouvez opter pour un rôle plus précis dans un scénario de production.
Si un compte de service par défaut n'apparaît pas sur la page principale IAM, attribuer 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 articles suivants:
- Utiliser Cloud Spanner avec Cloud Functions
- Créer et interroger une base de données à l'aide de la console Google Cloud
- Langage de définition de données SQL standard de Google
- Langage de manipulation de données SQL standard de Google