Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Votre webhook utilise actuellement des données codées en dur dans la fonction accountBalanceCheck.
Dans cette étape du tutoriel, vous allez créer une base de données Spanner, la remplir de 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 .
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.
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 emplacement de région 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 Présentation de l'instance que vous avez créée.
Créer une base de données Spanner
Maintenant que vous avez 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 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 DDL, saisissez ce qui suit:
Cliquez sur Envoyer.
La console Google Cloud revient à la page Présentation de la base de données et indique que des mises à jour du schéma sont en cours.
Attendez que la mise à jour soit terminée.
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 DDL, saisissez ce qui suit:
Cliquez sur Envoyer.
La console Google Cloud revient à la page Présentation de la base de données et indique que des mises à jour du schéma sont en cours.
Attendez que la mise à jour soit terminée.
Insérer des données dans vos tables
Maintenant que votre base de données contient des tables, vous devez y ajouter des données.
Pour ajouter des données:
Dans la liste des tables de la page Vue d'ensemble de la base de données, cliquez sur la table "Checking".
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 Insérer.
La Google Cloud console affiche la page Requête de la table avec un nouvel onglet de requête contenant des instructions INSERT et SELECT.
Remplacez ces instructions par les suivantes:
Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données de la table.
Vérifiez que la table contient les données souhaitées.
Cliquez sur le lien tutoriel-database: Overview (tutoriel-database : Présentation) pour revenir à la page de présentation de la base de données.
Dans la liste des tables de la page Vue d'ensemble de la base de données, cliquez sur la table "É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 Insérer.
La Google Cloud console affiche la page Requête de la table avec un nouvel onglet de requête contenant des instructions INSERT et SELECT.
Remplacez ces instructions par les suivantes:
Dans le menu de navigation de gauche, cliquez à nouveau sur Données pour afficher les données de la table.
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, modifiez 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 (probablement tutorial-instance)
SPANNER_DATABASE_ID: ID de votre base de données Spanner (probablement tutorial-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 de tenir la conversation suivante avec l'agent:
Tour de parole
Vous
Agent
1
Bonjour,
Bonjour, merci d'avoir choisi la banque ACME.
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 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@appspot.gserviceaccount.com.
Pour résoudre ce problème, procédez 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 ne s'affiche pas sur la page principale d'IAM, attribuez le rôle requis en ajoutant le compte de service en tant que nouveau compte principal.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThis tutorial guides you through replacing hardcoded data in a webhook's \u003ccode\u003eaccountBalanceCheck\u003c/code\u003e function with a Spanner database.\u003c/p\u003e\n"],["\u003cp\u003eYou will learn how to create a Spanner instance and database, and populate it with account balance data in \u003ccode\u003eChecking\u003c/code\u003e and \u003ccode\u003eSavings\u003c/code\u003e tables.\u003c/p\u003e\n"],["\u003cp\u003eThe process includes enabling the Spanner API, setting up project configurations, defining the database schema with tables, and inserting data into those tables.\u003c/p\u003e\n"],["\u003cp\u003eThe final steps cover updating the Cloud Function's runtime environment variables to connect to the newly created database and deploying these changes.\u003c/p\u003e\n"],["\u003cp\u003eAfter deployment, the tutorial provides instructions to test your agent and details on troubleshooting connection or permission errors using the function's logs and the IAM page.\u003c/p\u003e\n"]]],[],null,["# Query a database\n\nYour webhook currently uses hardcoded data in the\n`accountBalanceCheck` function.\nIn this step of the tutorial,\nyou will create a\n[Spanner](/spanner/docs)\ndatabase, populate it with balance data,\nand update your function to query the database.\n\nProject configuration\n---------------------\n\nIt is important that your Dialogflow agent and the database\nare both in the same project.\nThis is the easiest way for your function to have\nsecure access to your database.\nAlso, you must enable the Spanner API.\n\n1. Before creating the database,\n select your project from the Google Cloud console.\n\n [Go to project selector](https://console.cloud.google.com/projectselector2/home/dashboard)\n2. Enable the Spanner API for the project.\n\n [Enable the Spanner API](https://console.cloud.google.com/flows/enableapi?apiid=spanner.googleapis.com)\n\nCreate a Spanner instance\n-------------------------\n\nWhen you first use Spanner,\nyou must create an instance,\nwhich is an allocation of resources\nthat are used by Spanner databases in that instance.\n\n1. In the Google Cloud console, go to the **Spanner Instances** page.\n\n [Go to Spanner instances](https://console.cloud.google.com/spanner/instances)\n2. Click **Create instance**.\n\n3. For the instance name, enter **Tutorial Instance**.\n\n4. The instance ID is automatically entered based on the instance name.\n\n5. In **Choose your configuration** ,\n retain the default option **Regional** and select the same region\n [location](/dialogflow/es/docs/how/region)\n that you chose when creating the function.\n\n6. In **Allocate compute capacity**,\n enter 100 processing units.\n This provides a minimal capacity for the tutorial.\n\n7. Click **Create** .\n The Google Cloud console displays the **Overview** page for the instance\n you created.\n\nCreate a Spanner database\n-------------------------\n\nNow that you have an instance,\nyou need to create a database.\nTo create a database:\n\n1. In the instance **Overview** page, click **Create database**.\n2. For the database name, enter **tutorial-database**.\n3. Select the **Google Standard SQL** database dialect.\n4. Click **Create** . The Google Cloud console displays the **Overview** page for the database you created.\n\nCreate tables for your database\n-------------------------------\n\nNow that you have a database,\nyou need to create tables for the database.\nTo create tables:\n\n1. In the Tables section of the database **Overview** page, click **Create table**.\n2. In the **Write DDL statements** page, enter:\n\n CREATE TABLE Checking (\n AccountId INT64,\n Balance INT64,\n ) PRIMARY KEY(AccountId);\n\n3. Click **Submit** .\n The Google Cloud console returns to the database **Overview** page and\n shows that **Schema updates** are underway.\n Wait until the update is complete.\n\n4. In the Tables section of the database **Overview** page,\n click **Create table**.\n\n5. In the **Write DDL statements** page, enter:\n\n CREATE TABLE Savings (\n AccountId INT64,\n Balance INT64,\n ) PRIMARY KEY(AccountId);\n\n6. Click **Submit** .\n The Google Cloud console returns to the database **Overview** page and\n shows that **Schema updates** are underway.\n Wait until the update is complete.\n\nInsert data into your tables\n----------------------------\n\nNow that your database has tables,\nyou need to add data to the tables.\nTo add data:\n\n1. In the list of tables on the database **Overview** page, click the Checking table. The Google Cloud console displays the table's **Schema** page.\n2. In the left navigation menu, click **Data** to display the table's **Data** page.\n3. Click **Insert** .\n The Google Cloud console displays the table's **Query** page with a\n new query tab that contains `INSERT` and `SELECT` statements.\n Overwrite those statements with the following:\n\n INSERT INTO Checking (AccountId, Balance)\n VALUES(1, 1000),\n (2, 2000);\n\n4. Click **Run**.\n\n5. In the left navigation menu,\n click **Data** again to display the table's data.\n Confirm that the table contains the desired data.\n\n6. Click the **tutorial-database: Overview** link\n to return to the database overview page.\n\n7. In the list of tables on the database **Overview** page,\n click the Savings table.\n The Google Cloud console displays the table's **Schema** page.\n\n8. In the left navigation menu,\n click **Data** to display the table's **Data** page.\n\n9. Click **Insert** .\n The Google Cloud console displays the table's **Query** page with a\n new query tab that contains `INSERT` and `SELECT` statements.\n Overwrite those statements with the following:\n\n INSERT INTO Savings (AccountId, Balance)\n VALUES(1, 10000),\n (2, 20000);\n\n10. Click **Run**.\n\n11. In the left navigation menu,\n click **Data** again to display the table's data.\n Confirm that the table contains the desired data.\n\nUpdate the Cloud Function to query the database\n-----------------------------------------------\n\nThe `accountBalanceCheck` function in the webhook code\nchecks whether specific environment variables are set\nwith information for connecting to the database.\nIf these environment variables are not set,\nthe function uses a hardcoded account balance.\n\nNow that you have a database set up,\nupdate your Cloud Function to set required environment variables:\n\n1. Open the Cloud Functions overview page.\n\n [Go to Cloud Functions overview](https://console.cloud.google.com/functions/list)\n2. Click the tutorial-banking-webhook function to go to its details page.\n\n3. Click **Edit**.\n\n4. Open the **Runtime, build and connections settings** section.\n\n5. Select the **Runtime** tab.\n\n6. Add the following variables in the Runtime environment variables section:\n\n - `PROJECT_ID`: your project ID\n - `SPANNER_INSTANCE_ID`: your Spanner instance ID (probably `tutorial-instance`)\n - `SPANNER_DATABASE_ID`: your spanner database ID (probably `tutorial-database`)\n7. Click **Next**.\n\n8. Click **Deploy**.\n\n9. Wait until the status indicator shows that the function\n has successfully deployed.\n\nTest your agent\n---------------\n\nYour agent is now ready to try.\nClick the **Test Agent** button from the Dialogflow console\nto open the simulator.\nAttempt to have the following conversation with the agent:\n\nIf you examine the code,\n$10 is not the hardcoded value.\nThis means that your webhook has successfully connected to the database,\nwhich does have a balance of $10.\n\nTroubleshooting\n---------------\n\nThe webhook code includes logging statements.\nIf you are having issues, try viewing the logs for your Cloud Function.\n\nIf your function is not connecting to the database,\nand you see a permission error in the logs,\nyou may need to fix the role for the default service account\nused by your function.\nThis service account is of the form\n\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e`@appspot.gserviceaccount.com`.\nYou can fix this in one of the following ways:\n\n- If the default service account is shown on the IAM main page,\n [change permissions for the service account](/functions/docs/securing/function-identity#default).\n The *Editor* role will work,\n but you may want a more granular role in a production scenario.\n\n [Go to the IAM main page](https://console.cloud.google.com/iam-admin/iam)\n- If the a default service account is not shown on the IAM main page,\n [grant the required role](/iam/docs/grant-role-console#grant_an_iam_role)\n by adding the service account as a new principal.\n\n- Alternatively, you can\n [use a service account that you create](/functions/docs/securing/function-identity#individual).\n\nMore information\n----------------\n\nFor more information about the steps above, see:\n\n- [Using Cloud Spanner with Cloud Functions](/functions/docs/tutorials/use-cloud-spanner)\n- [Create and query a database by using the Google Cloud console](/spanner/docs/create-query-database-console)\n- [Google Standard SQL data definition language](/spanner/docs/reference/standard-sql/data-definition-language)\n- [Google Standard SQL data manipulation language](/spanner/docs/reference/standard-sql/dml-syntax)"]]