Consultar um banco de dados

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 sua função para consultar o banco de dados.

Configuração do projeto

É importante que seu agente do Dialogflow e o banco de dados estejam no mesmo projeto. Essa é a maneira mais fácil de sua função ter acesso seguro ao banco de dados. Além disso, você precisa ativar a API Spanner.

  1. Antes de criar o banco de dados, selecione seu projeto no Google Cloud console.

    Acessar o seletor de projetos

  2. Ative a API Spanner para o projeto.

    Ativar a API Spanner

Criar uma instância do Spanner

Quando você usa o Spanner pela primeira vez, é preciso criar uma instância, que é uma alocação de recursos usados pelos bancos de dados do Spanner naquela instância.

  1. No Google Cloud console, acesse a página Instâncias do Spanner.

    Acessar instâncias do Spanner

  2. Clique em Criar instância.

  3. Para o nome da instância, insira Instância do tutorial.

  4. O ID da instância é inserido automaticamente com base no nome dela.

  5. Em Escolha sua configuração, mantenha a opção padrão Regional e selecione o mesmo local da região escolhido ao criar a função.

  6. Em Alocar capacidade de computação, insira 100 unidades de processamento. Isso fornece uma capacidade mínima para o tutorial.

  7. Clique em Criar. O Google Cloud console mostra a página Visão geral da instância criada.

Criar um banco de dados do Spanner

Agora que você tem uma instância, é necessário criar um banco de dados. Para criar um banco de dados:

  1. Na página Visão geral da instância, clique em Criar banco de dados.
  2. Para o nome do banco de dados, insira tutorial-database.
  3. Selecione o dialeto do banco de dados SQL padrão do Google.
  4. Clique em Criar. O Google Cloud console mostra a página Visão geral do banco de dados criado.

Criar tabelas para seu banco de dados

Agora que você tem um banco de dados, é necessário criar tabelas para ele. Para criar tabelas:

  1. Na seção "Tabelas" da página Visão geral do banco de dados, clique em Criar tabela.
  2. Na página Escrever instruções DDL, insira:

    CREATE TABLE Checking (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  3. 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 até que a atualização seja concluída.

  4. Na seção "Tabelas" da página Visão geral do banco de dados, clique em Criar tabela.

  5. Na página Escrever instruções DDL, insira:

    CREATE TABLE Savings (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  6. 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 até que a atualização seja concluída.

Inserir dados nas tabelas

Agora que seu banco de dados tem tabelas, é necessário adicionar dados a elas. Para adicionar dados:

  1. Na lista de tabelas na página Visão geral do banco de dados, clique na tabela "Checking". O Google Cloud console mostra a página Esquema da tabela.
  2. No menu de navegação à esquerda, clique em Dados para mostrar a página Dados da tabela.
  3. 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 pelo seguinte:

    INSERT INTO Checking (AccountId, Balance)
    VALUES(1, 1000),
          (2, 2000);
    
  4. Clique em Executar.

  5. 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.

  6. Clique no link tutorial-database: Visão geral para retornar à página de visão geral do banco de dados.

  7. 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.

  8. No menu de navegação à esquerda, clique em Dados para mostrar a página Dados da tabela.

  9. 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 pelo seguinte:

    INSERT INTO Savings (AccountId, Balance)
    VALUES(1, 10000),
          (2, 20000);
    
  10. Clique em Executar.

  11. 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 estão definidas com informações para conexão ao banco de dados. Se essas variáveis de ambiente não estiverem definidas, a função usará um saldo da conta codificado.

Agora que você tem um banco de dados configurado, atualize sua Função do Cloud para definir as variáveis de ambiente necessárias:

  1. Abra a página de visão geral do Cloud Functions.

    Acessar a visão geral do Cloud Functions

  2. Clique na função tutorial-banking-webhook para acessar a página de detalhes.

  3. Clique em Editar.

  4. Abra a seção Configurações de ambiente de execução, criação e conexões.

  5. Selecione a guia Ambiente de execução.

  6. Adicione as seguintes variáveis na seção "Variáveis de ambiente de execução":

    • PROJECT_ID: ID do projeto
    • SPANNER_INSTANCE_ID: ID da instância do Spanner (provavelmente tutorial-instance)
    • SPANNER_DATABASE_ID: ID do banco de dados do Spanner (provavelmente tutorial-database)
  7. Clique em Próxima.

  8. Clique em Implantar.

  9. 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 Testar agente no console do Dialogflow para abrir o simulador. Tente ter a seguinte conversa com o agente:

Turno de conversa Você Agente
1 Olá Olá, obrigado por escolher o ACME Bank.
2 Quero saber o saldo da minha conta Qual conta você quer o saldo: poupança ou corrente?
3 Corrente Este é o seu saldo mais recente: US$ 10,00

Se você examinar o código, US$ 10 não será o valor codificado. Isso significa que seu webhook se conectou 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ê estiver com problemas, tente visualizar os registros da 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. Essa conta de serviço tem o formato PROJECT_ID@appspot.gserviceaccount.com. Você pode corrigir isso de uma das seguintes maneiras:

Mais informações

Para mais informações sobre as etapas acima, consulte: