Consultar uma base de dados

O seu webhook usa atualmente dados codificados na função cruisePlanCoverage. Neste passo do tutorial, vai criar uma base de dados do Spanner, preenchê-la com destinos cobertos 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 uma tabela para a sua base de dados

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

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

Insira dados na tabela

Agora que a sua base de dados tem uma tabela, tem de adicionar dados à tabela. Para adicionar dados:

  1. Na lista de tabelas na página Vista geral da base de dados, clique na tabela Destinos. A Google Cloud consola apresenta a página Esquema da tabela Destinos.
  2. No menu de navegação do lado esquerdo, clique em Dados para apresentar a página Dados da tabela Destinos.
  3. Clique em Inserir. A Google Cloud consola apresenta a página Consulta da tabela Destinos com um novo separador de consulta que contém declarações INSERT e SELECT. Substitua essas declaraçõ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 do lado esquerdo, clique novamente em Dados para apresentar os dados da tabela de destino. Confirme se a tabela contém os dados pretendidos.

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

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

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-telecommunications-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á! Sou o agente virtual de telecomunicações. Posso ajudar a resolver questões de faturação e planos, resolver problemas e adicionar planos de viagens e cruzeiros. Como posso ajudar hoje?
2 Quero adicionar um plano de cruzeiro Vou verificar a situação. Qual é o seu número de telefone connosco?
3 123-123-1234 Quantos dias dura o cruzeiro?
4 7 A opção 1 inclui chamadas e mensagens. Tem um custo de $[XX]/dia. Mais informações aqui [URL]. A opção 2 inclui chamadas, mensagens de texto e dados. Tem um custo de $[XX]/dia. Mais informações aqui [URL]. Que plano de cruzeiro quer adicionar?
5 Opção 1 OK. Adicionei esse plano à sua conta. Durante o cruzeiro, também pode precisar de cobertura em terra. Em que porto vai parar?
6 Itália E quantos dias vai passar lá?
7 3 Boas notícias! Itália tem cobertura terrestre gratuita. Está tudo pronto. Há mais alguma questão com que possa ajudar?

Se examinar o código, a Itália não está na lista codificada de destinos abrangidos. Isto significa que o webhook foi associado com êxito à base de dados, que inclui Itália.

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: