No momento, seu webhook usa dados codificados na função accountBalanceCheck
.
Nesta etapa do tutorial,
você vai criar um banco de dados do
Spanner, preenchê-lo com dados de saldo
e atualizar a 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 a 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 do Google Cloud.
Ative a API Spanner para o projeto.
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.
No console do 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 da instância.
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.
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 criada.
Criar um banco de dados do Spanner
Agora que você tem uma instância, você precisa 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 do Google Cloud exibe a página Visão geral do banco de dados. que você criou.
Crie tabelas para seu banco de dados
Agora que você tem um banco de dados, é necessário criar tabelas para ele. Para criar tabelas:
- 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 Checking ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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 até que a atualização seja concluída.
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 Savings ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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 até que a atualização seja concluída.
Inserir dados nas tabelas
Agora que o banco de dados tem tabelas, é necessário adicionar dados a elas. Para adicionar dados:
- Na lista de tabelas na página Visão geral do banco de dados, clique na tabela "Em verificação". O console do Google Cloud exibe a página Esquema da tabela.
- No menu de navegação à esquerda, Clique em Dados para exibir a página Dados da tabela.
Clique em Inserir. O console do Google Cloud exibe a página Consulta da tabela com um nova guia de consulta que contém instruções
INSERT
eSELECT
. Substitua essas declarações pelas seguintes informações:INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);
Clique em Executar.
No menu de navegação à esquerda, clique em Dados novamente para mostrar os dados da tabela. Confirme se a tabela contém os dados desejados.
Clique no link tutorial-database: Overview para voltar à página de visão geral do banco de dados.
Na lista de tabelas na página Visão geral do banco de dados, clique na tabela "Economias". O console do Google Cloud exibe a página Esquema da tabela.
No menu de navegação à esquerda, Clique em Dados para exibir a página Dados da tabela.
Clique em Inserir. O console do Google Cloud exibe a página Consulta da tabela com um nova guia de consulta que contém instruções
INSERT
eSELECT
. Substitua essas declarações pelas seguintes informações:INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);
Clique em Executar.
No menu de navegação à esquerda, Clique em Dados novamente para exibir os dados da tabela. Confirme se a tabela contém os dados desejados.
Atualizar a função do Cloud para consultar o banco de dados
A função accountBalanceCheck
no código do webhook
verifica se as variáveis de ambiente específicas estã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 um saldo de conta codificado.
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-banking-webhook para acessar a página de detalhes dela.
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
: 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 implantado com sucesso.
Testar seu agente
Seu agente já pode fazer um teste. 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á, agradecemos por escolher o ACME Bank. |
2 | Quero saber o saldo da minha conta | Qual conta você quer consultar o saldo: poupança ou corrente? |
3 | Verificando | Seu saldo mais recente é de US$ 10,00. |
Se você examinar o código, US$ 10 não é o valor fixado no código. Isso significa que seu webhook foi conectado ao banco de dados, que tem um saldo de US$ 10.
Solução de problemas
O código do webhook inclui instruções de registro. 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 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.
Esta conta de serviço tem o formato
PROJECT_ID@appspot.gserviceaccount.com
.
É possível corrigir isso de uma das seguintes maneiras:
Se a conta de serviço padrão aparecer na página principal do IAM, mudar 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 a conta de serviço padrão não for exibida na página principal do IAM, conceda o papel necessário adicionando a conta de serviço como um novo principal.
Também é possível usar uma conta de serviço criada por você.
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