Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
No momento, seu webhook usa dados codificados na função accountBalanceCheck.
Nesta etapa do tutorial,
você vai criar um banco de dados do
Spanner, preenchê-lo com dados de saldo
e atualizar a função para consultar o banco de dados.
Configuração do projeto
É importante que o agente do Dialogflow e o banco de dados
estejam no mesmo projeto.
Essa é a maneira mais fácil de a função ter
acesso seguro ao banco de dados.
Além disso, você precisa ativar a API Spanner.
Antes de criar o banco de dados,
selecione seu projeto no console Google Cloud .
Ao usar o Spanner pela primeira vez,
é necessário criar uma instância,
que é uma alocação de recursos
usados pelos bancos de dados do Spanner nessa instância.
No console Google Cloud , acesse a página Instâncias do Spanner.
Clique em Enviar.
O Google Cloud console retorna à página Visão geral do banco de dados e
mostra que as atualizações do esquema estão em andamento.
Aguarde a conclusão da atualização.
Na seção "Tabelas" da página Visão geral do banco de dados, clique em Criar tabela.
Clique em Enviar.
O Google Cloud console retorna à página Visão geral do banco de dados e
mostra que as atualizações do esquema estão em andamento.
Aguarde a conclusão da atualização.
Inserir dados nas tabelas
Agora que seu banco de dados tem tabelas,
é necessário adicionar dados a elas.
Para adicionar dados:
Na lista de tabelas na página Visão geral do banco de dados,
clique na tabela de verificação.
O Google Cloud console mostra a página Esquema da tabela.
No menu de navegação à esquerda,
clique em Dados para mostrar a página Dados da tabela.
Clique em Inserir.
O Google Cloud console mostra a página Consulta da tabela com uma
nova guia de consulta que contém instruções INSERT e SELECT.
Substitua essas instruções por:
No menu de navegação à esquerda,
clique em Dados novamente para mostrar os dados da tabela.
Confirme se a tabela contém os dados desejados.
Clique no link tutorial-database: Overview para voltar à página de visão geral do banco de dados.
Na lista de tabelas na página Visão geral do banco de dados,
clique na tabela "Savings".
O Google Cloud console mostra a página Esquema da tabela.
No menu de navegação à esquerda,
clique em Dados para mostrar a página Dados da tabela.
Clique em Inserir.
O Google Cloud console mostra a página Consulta da tabela com uma
nova guia de consulta que contém instruções INSERT e SELECT.
Substitua essas instruções por:
No menu de navegação à esquerda,
clique em Dados novamente para mostrar os dados da tabela.
Confirme se a tabela contém os dados desejados.
Atualizar a função do Cloud para consultar o banco de dados
A função accountBalanceCheck no código do webhook
verifica se variáveis de ambiente específicas são definidas
com informações para se conectar ao banco de dados.
Se essas variáveis de ambiente não estiverem definidas,
a função vai usar um saldo de conta codificado.
Agora que você configurou um banco de dados,
atualize a função do Cloud para definir as variáveis de ambiente necessárias:
Clique na função tutorial-banking-webhook para acessar a página de detalhes dela.
Clique em Editar.
Abra a seção Configurações de ambiente de execução, criação e conexões.
Selecione a guia Ambiente de execução.
Adicione as seguintes variáveis na seção "Variáveis de ambiente de execução":
PROJECT_ID: ID do projeto;
SPANNER_INSTANCE_ID: o ID da instância do Spanner (provavelmente tutorial-instance)
SPANNER_DATABASE_ID: o ID do banco de dados do Spanner (provavelmente tutorial-database)
Clique em Próxima.
Clique em Implantar.
Aguarde até que o indicador de status mostre que a função foi implantada.
Testar o agente
Seu agente está pronto para ser testado.
Clique no botão Test Agent no console do Dialogflow
para abrir o simulador.
Tente ter a seguinte conversa com o agente:
Turno de conversa
Você
Agente
1
Olá
Olá, agradecemos por escolher o ACME Bank.
2
Quero saber o saldo da minha conta
Qual conta você quer consultar o saldo: poupança ou corrente?
3
Verificando
Seu saldo mais recente é de US$ 10,00.
Se você examinar o código,
$10 não é o valor codificado em disco.
Isso significa que seu webhook foi conectado ao banco de dados,
que tem um saldo de US $10.
Solução de problemas
O código do webhook inclui instruções de registro.
Se você tiver problemas, tente conferir os registros da sua Função do Cloud.
Se a função não estiver se conectando ao banco de dados
e você encontrar um erro de permissão nos registros,
talvez seja necessário corrigir o papel da conta de serviço padrão
usada pela função.
Esta conta de serviço tem o formato
PROJECT_ID@appspot.gserviceaccount.com.
Você pode corrigir isso de uma das seguintes maneiras:
Se a conta de serviço padrão aparecer na página principal do IAM, mude as permissões da conta de serviço.
A função Editor vai funcionar,
mas talvez você queira uma função mais granular em um cenário de produção.
Se uma conta de serviço padrão não aparecer na página principal do IAM,
conceda o papel necessário
adicionando a conta de serviço como um novo principal.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-18 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)"]]