Consultar um banco de dados

Seu webhook usa dados codificados na função cruisePlanCoverage. Nesta etapa do tutorial, você vai criar um banco de dados do Spanner, preenchê-lo com destinos cobertos, e atualizar sua 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 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 Tutorial Instance.

  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 fazer isso:

  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 uma tabela para o banco de dados

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

  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 Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  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.

Inserir dados na tabela

Agora que o banco de dados tem uma tabela, é necessário adicionar dados a ela. Para adicionar dados:

  1. Na lista de tabelas na página Visão geral do banco de dados, clique na tabela "Destinos". O Google Cloud console mostra a página Esquema da tabela "Destinos".
  2. No menu de navegação à esquerda, clique em Dados para mostrar a página Dados da tabela "Destinos".
  3. Clique em Inserir. O Google Cloud console mostra a página Consulta da tabela "Destinos" com uma nova guia de consulta que contém instruções INSERT e SELECT. Substitua essas instruções pelo seguinte:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. Clique em Executar.

  5. No menu de navegação à esquerda, clique em Dados novamente para mostrar os dados da tabela "Destino". Confirme se a tabela contém os dados desejados.

Atualizar a função do Cloud para consultar o banco de dados

A função cruisePlanCoverage 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á uma lista codificada de destinos.

Agora que você tem um banco de dados configurado, atualize a 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-telecommunications-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 seu 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á! Sou o agente virtual de telecomunicações. Posso ajudar você a resolver dúvidas sobre faturamento e planejamento, solucionar problemas e adicionar planos de viagem e cruzeiros. Como posso ajudar você hoje?
2 Quero adicionar um plano de cruzeiro Vou verificar para você. Qual é seu número de telefone?
3 123-123-1234 Quantos dias dura seu cruzeiro?
4 7 A opção 1 inclui chamadas e mensagens. Ela custa $[XX]/dia. Mais informações aqui [URL]. A opção 2 inclui chamadas, mensagens e dados. Ela custa $[XX]/dia. Mais informações aqui [URL]. Qual plano de cruzeiro você quer adicionar?
5 Opção 1 Entendi. Adicionei esse plano à sua conta. Durante o cruzeiro, você também pode precisar de cobertura em terra. Em qual porto você vai parar?
6 Itália E quantos dias você vai passar lá?
7 3 Temos uma ótima novidade! A Itália tem cobertura sem custo financeiro em terra. Tudo pronto. Posso ajudar com mais alguma coisa hoje?

Se você examinar o código, a Itália não estará na lista codificada de destinos cobertos. Isso significa que o webhook se conectou ao banco de dados, que inclui a Itália.

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: