No momento, seu webhook usa dados codificados na função cruisePlanCoverage.
Nesta etapa do tutorial,
você vai criar um banco de dados do
Spanner, preencher 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 console Google Cloud .
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 nessa instância.
No console Google Cloud , acesse a página Instâncias do Spanner.
Clique em Criar instância.
Para o nome da instância, insira Instância do tutorial.
O ID da instância é inserido automaticamente com base no nome dela.
Em Escolher sua configuração, mantenha a opção padrão Regional e selecione o mesmo local que você escolheu 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 console do Google Cloud mostra a página Visão geral da instância que você criou.
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:
- Na página Visão geral da instância, clique em Criar banco de dados.
- Para o nome do banco de dados, digite tutorial-database.
- Selecione o dialeto do banco de dados SQL padrão do Google.
- Clique em Criar. O console Google Cloud mostra a página Visão geral do banco de dados que você criou.
Criar uma tabela para o banco de dados
Agora que você tem um banco de dados, é necessário criar uma tabela para ele. Para criar uma tabela:
- 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 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, você precisa adicionar dados a ela. Para adicionar dados:
- Na lista de tabelas da página Visão geral do banco de dados, clique na tabela "Destinations". O console do Google Cloud exibe a página Esquema da tabela "Destinations".
- No menu de navegação à esquerda, clique em Dados para exibir a página Dados da tabela "Destinations".
Clique em Inserir. O console Google Cloud mostra a página Consulta da tabela "Destinations" com uma nova guia de consulta que contém instruções
INSERTeSELECT. Substitua essas declaraçõ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 "Destination". 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 com o 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 sua 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 projeto;SPANNER_INSTANCE_ID: o ID da instância do Spanner (provavelmentetutorial-instance)SPANNER_DATABASE_ID: o 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 com sucesso.
Testar o 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 hoje? |
| 2 | Quero adicionar um plano de cruzeiro | Vamos conferir isso para você. Qual é seu número de telefone? |
| 3 | 123-123-1234 | Quantos dias dura o cruzeiro? |
| 4 | 7 | A opção 1 inclui telefone e mensagens. Ele custa US $[XX]/dia. Saiba mais aqui [URL]. A opção 2 inclui telefone, mensagens e dados. Ele custa US $[XX]/dia. Saiba mais aqui [URL]. Qual plano de cruzeiro você quer adicionar? |
| 5 | Opção 1 | Ok. Esse plano já foi adicionado à 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 terrestre sem custo financeiro. 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 geração de registros. Se você estiver com problemas, tente conferir os registros da sua 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 a função 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 aparecer na página principal do IAM, mude as permissões dela. A função Editor funciona, mas talvez você queira uma função mais granular em um cenário de produção.
Se uma conta de serviço padrão não aparecer na página principal do IAM, conceda o papel necessário adicionando a conta de serviço como uma nova principal.
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 SQL padrão do Google
- Linguagem de manipulação de dados SQL padrão do Google