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.
Antes de criar o banco de dados, selecione seu projeto no Google Cloud console.
Ative a API Spanner para o projeto.
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.
No Google Cloud console, acesse a página Instâncias do Spanner.
Clique em Criar instância.
Para o nome da instância, insira Tutorial Instance.
O ID da instância é inserido automaticamente com base no nome dela.
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.
Em Alocar capacidade de computação, insira 100 unidades de processamento. Isso fornece uma capacidade mínima para o tutorial.
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:
- Na página Visão geral da instância, clique em Criar banco de dados.
- Para o nome do banco de dados, insira tutorial-database.
- Selecione o dialeto do banco de dados SQL padrão do Google.
- 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:
- Na seção "Tabelas" da página Visão geral do banco de dados, clique em Criar tabela.
Na página Escrever instruções DDL, insira:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);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:
- 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".
- No menu de navegação à esquerda, clique em Dados para mostrar a página Dados da tabela "Destinos".
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
INSERTeSELECT. Substitua essas instruções pelo seguinte:INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);Clique em Executar.
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:
Abra a página de visão geral do Cloud Functions.
Clique na função tutorial-telecommunications-webhook para acessar a página de detalhes.
Clique em Editar.
Abra a seção Configurações de ambiente de execução, criação e conexões.
Selecione a guia Ambiente de execução.
Adicione as seguintes variáveis na seção "Variáveis de ambiente de execução":
PROJECT_ID: ID do projetoSPANNER_INSTANCE_ID: ID da instância do Spanner (provavelmentetutorial-instance)SPANNER_DATABASE_ID: ID do banco de dados do Spanner (provavelmentetutorial-database)
Clique em Próxima.
Clique em Implantar.
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:
Se a conta de serviço padrão for mostrada na página principal do IAM, altere as permissões da conta de serviço. O papel de Editor vai funcionar, mas talvez você queira um papel mais granular em um cenário de produção.
Se uma conta de serviço padrão não for mostrada na página principal do IAM, conceda o papel necessário adicionando a conta de serviço como um novo principal.
Como alternativa, você pode usar uma conta de serviço criada.
Mais informações
Para mais informações sobre as etapas acima, consulte:
- Como usar o Cloud Spanner com Cloud Functions
- Criar e consultar um banco de dados usando o console do Google Cloud
- Linguagem de definição de dados do SQL padrão do Google
- Linguagem de manipulação de dados SQL padrão do Google