Consultar uma base de dados

Atualmente, o seu webhook usa dados codificados na função accountBalanceCheck. Neste passo do tutorial, vai criar uma base de dados Spanner, preenchê-la com dados de saldo e atualizar a sua função para consultar a base de dados.

Configuração do projeto

É importante que o seu agente do Dialogflow e a base de dados estejam no mesmo projeto. Esta é a forma mais fácil de a sua função ter acesso seguro à sua base de dados. Além disso, tem de ativar a API Spanner.

  1. Antes de criar a base de dados, selecione o seu projeto na Google Cloud consola.

    Aceder ao seletor de projetos

  2. Ative a API Spanner para o projeto.

    Ative a API Spanner

Crie uma instância do Spanner

Quando usa o Spanner pela primeira vez, tem de criar uma instância, que é uma atribuição de recursos usados pelas bases de dados do Spanner nessa instância.

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Clique em Criar instância.

  3. Para o nome da instância, introduza Tutorial Instance.

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

  5. Em Escolha a sua configuração, mantenha a opção predefinida Regional e selecione a mesma localização que escolheu quando criou a função.

  6. Em Atribuir capacidade de computação, introduza 100 unidades de processamento. Isto oferece uma capacidade mínima para o tutorial.

  7. Clique em Criar. A Google Cloud consola apresenta a página Vista geral da instância que criou.

Crie uma base de dados do Spanner

Agora que tem uma instância, tem de criar uma base de dados. Para criar uma base de dados:

  1. Na página Vista geral da instância, clique em Criar base de dados.
  2. Para o nome da base de dados, introduza tutorial-database.
  3. Selecione o dialeto da base de dados SQL padrão da Google.
  4. Clique em Criar. A Google Cloud consola apresenta a página Vista geral para a base de dados que criou.

Crie tabelas para a sua base de dados

Agora que tem uma base de dados, tem de criar tabelas para a base de dados. Para criar tabelas:

  1. Na secção Tabelas da página Vista geral da base de dados, clique em Criar tabela.
  2. Na página Escrever declarações DDL, introduza:

    CREATE TABLE Checking (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  3. Clique em Enviar. A Google Cloud consola regressa à página Vista geral da base de dados e mostra que as atualizações do esquema estão em curso. Aguarde até que a atualização esteja concluída.

  4. Na secção Tabelas da página Vista geral da base de dados, clique em Criar tabela.

  5. Na página Escrever declarações DDL, introduza:

    CREATE TABLE Savings (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  6. Clique em Enviar. A Google Cloud consola regressa à página Vista geral da base de dados e mostra que as atualizações do esquema estão em curso. Aguarde até que a atualização esteja concluída.

Insira dados nas tabelas

Agora que a sua base de dados tem tabelas, tem de adicionar dados às tabelas. Para adicionar dados:

  1. Na lista de tabelas na página Vista geral da base de dados, clique na tabela Checking. A Google Cloud consola apresenta a página Esquema da tabela.
  2. No menu de navegação do lado esquerdo, clique em Dados para apresentar a página Dados da tabela.
  3. Clique em Inserir. A Google Cloud consola apresenta a página Consulta da tabela com um novo separador de consulta que contém declarações INSERT e SELECT. Substitua essas declarações pelo seguinte:

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

  5. No menu de navegação do lado esquerdo, clique novamente em Dados para apresentar os dados da tabela. Confirme se a tabela contém os dados pretendidos.

  6. Clique no link tutorial-database: Overview para regressar à página de vista geral da base de dados.

  7. Na lista de tabelas na página Vista geral da base de dados, clique na tabela Savings. A Google Cloud consola apresenta a página Esquema da tabela.

  8. No menu de navegação do lado esquerdo, clique em Dados para apresentar a página Dados da tabela.

  9. Clique em Inserir. A Google Cloud consola apresenta a página Consulta da tabela com um novo separador de consulta que contém declarações INSERT e SELECT. Substitua essas declarações pelo seguinte:

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

  11. No menu de navegação do lado esquerdo, clique novamente em Dados para apresentar os dados da tabela. Confirme se a tabela contém os dados pretendidos.

Atualize a função do Cloud para consultar a base de dados

A função accountBalanceCheck no código do webhook verifica se as variáveis de ambiente específicas estão definidas com informações para estabelecer ligação à base de dados. Se estas variáveis de ambiente não estiverem definidas, a função usa um saldo da conta codificado.

Agora que tem uma base de dados configurada, atualize a sua função na nuvem para definir as variáveis de ambiente necessárias:

  1. Abra a página de vista geral do Cloud Functions.

    Aceda à vista geral do Cloud Functions

  2. Clique na função tutorial-banking-webhook para aceder à respetiva página de detalhes.

  3. Clique em Edit.

  4. Abra a secção Definições de tempo de execução, compilação e ligações.

  5. Selecione o separador Tempo de execução.

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

    • PROJECT_ID: o ID do seu projeto
    • SPANNER_INSTANCE_ID: o ID da instância do Spanner (provavelmente tutorial-instance)
    • SPANNER_DATABASE_ID: o ID da base de dados do Spanner (provavelmente, tutorial-database)
  7. Clicar em Seguinte.

  8. Clique em Implementar.

  9. Aguarde até que o indicador de estado mostre que a função foi implementada com êxito.

Teste o seu agente

O seu agente já está pronto para ser testado. Clique no botão Test Agent (Testar agente) na consola do Dialogflow para abrir o simulador. Tente ter a seguinte conversa com o agente:

Interação conversacional Eu Agente
1 Olá, Olá, obrigado por escolher o ACME Bank.
2 Quero saber o saldo da minha conta Para que conta quer o saldo: poupança ou corrente?
3 Verificação Aqui está o seu saldo mais recente: 10,00 €

Se examinar o código, verá que 10 € não é o valor codificado. Isto significa que o webhook estabeleceu ligação com êxito à base de dados, que tem um saldo de 10 €.

Resolução de problemas

O código do webhook inclui declarações de registo. Se estiver a ter problemas, experimente ver os registos da sua função do Google Cloud.

Se a sua função não estiver a estabelecer ligação à base de dados e vir um erro de autorização nos registos, pode ter de corrigir a função da conta de serviço predefinida usada pela sua função. Esta conta de serviço tem o formato PROJECT_ID@appspot.gserviceaccount.com. Pode corrigir este problema de uma das seguintes formas:

Mais informações

Para mais informações sobre os passos acima, consulte: