Consultar um banco de dados

No momento, 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 a função para consultar o banco de dados.

Configuração do projeto

É importante que o agente e o banco de dados do Dialogflow 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.

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

    Acessar o seletor de projetos

  2. Ative a API Spanner para o projeto.

    Ativar a API Spanner

Criar uma instância do Spanner

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.

  1. No console do Google Cloud, 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 da instância.

  5. Em Escolher sua configuração: mantenha a opção padrão Regional e selecione a mesma região local que você escolheu 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 console do Google Cloud 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, digite tutorial-database.
  3. Selecione o dialeto do banco de dados SQL padrão do Google.
  4. Clique em Criar. O console do Google Cloud mostra a página Visão geral do banco de dados que você criou.

Criar uma tabela para seu banco de dados

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

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

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. Clique em Enviar. O console do Google Cloud 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 na tabela

Agora que seu 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 console do Google Cloud exibe 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 console do Google Cloud mostra a página Consulta da tabela "Destinations" com uma nova guia de consulta que contém instruções INSERT e SELECT. Substitua essas declarações pelas seguintes informações:

    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 de 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 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 uma lista de destinos codificada em disco.

Agora que você configurou um banco de dados, 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 página de visão geral do Cloud Functions

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

  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: o ID da instância do Spanner (provavelmente tutorial-instance)
    • SPANNER_DATABASE_ID: o 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 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á! Sou o agente virtual de telecomunicações. Posso ajudar você a tirar dúvidas sobre faturamento e planejamento, resolver problemas e adicionar planos de viagem e cruzeiro. Como posso ajudar?
2 Quero adicionar um plano de cruzeiro Vou verificar isso para você. Qual é seu número de telefone conosco?
3 123-123-1234 Quantos dias dura o cruzeiro?
4 7 A opção 1 inclui ligações e mensagens de texto. O custo é de R$[XX] por dia. Mais informações [URL]. A opção 2 inclui chamadas, mensagens de texto e dados. Custa US $[XX]/dia. Mais informações em [URL]. Qual plano de cruzeiro você quer adicionar?
5 Opção 1 Ok. Eu adicionei esse plano à sua conta. Durante um cruzeiro, talvez você também precise de cobertura em terra. Em qual porta você vai interromper?
6 Itália Quantos dias você vai passar lá?
7 3 Ótima notícia! A Itália tem cobertura gratuita em terra. Tudo pronto. Posso ajudar com mais alguma coisa hoje?

Se você examinar o código, A Itália não está na lista fixada no código de destinos cobertos. Isso significa que seu webhook foi conectado ao banco de dados, que inclui a Itália.

Solução de problemas

O código do webhook inclui log statements. Se você tiver problemas, tente ver os registros da sua Função do Cloud.

Se a função não estiver se conectando ao banco de dados, e encontrar um erro de permissão nos registros, pode ser necessário corrigir o papel da conta de serviço padrão usado pela sua função. Essa conta de serviço está no formato PROJECT_ID@appspot.gserviceaccount.com: É possível corrigir isso de uma das seguintes maneiras:

Mais informações

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