Atualmente, o seu webhook usa dados codificados na função accountBalanceCheck
.
Neste passo do tutorial,
vai criar uma base de dados
Spanner, preenchê-la com dados de saldo
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.
Antes de criar a base de dados, selecione o seu projeto na Google Cloud consola.
Ative a API Spanner para o projeto.
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.
Na Google Cloud consola, aceda à página Instâncias do Spanner.
Clique em Criar instância.
Para o nome da instância, introduza Tutorial Instance.
O ID da instância é introduzido automaticamente com base no nome da instância.
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.
Em Atribuir capacidade de computação, introduza 100 unidades de processamento. Isto oferece uma capacidade mínima para o tutorial.
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:
- Na página Vista geral da instância, clique em Criar base de dados.
- Para o nome da base de dados, introduza tutorial-database.
- Selecione o dialeto da base de dados SQL padrão da Google.
- Clique em Criar. A Google Cloud consola apresenta a página Vista geral para a base de dados que criou.
Crie tabelas para a sua base de dados
Agora que tem uma base de dados, tem de criar tabelas para a base de dados. Para criar tabelas:
- Na secção Tabelas da página Vista geral da base de dados, clique em Criar tabela.
Na página Escrever declarações DDL, introduza:
CREATE TABLE Checking ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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.
Na secção Tabelas da página Vista geral da base de dados, clique em Criar tabela.
Na página Escrever declarações DDL, introduza:
CREATE TABLE Savings ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
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 nas tabelas
Agora que a sua base de dados tem tabelas, tem de adicionar dados às tabelas. Para adicionar dados:
- Na lista de tabelas na página Vista geral da base de dados, clique na tabela Checking. A Google Cloud consola apresenta a página Esquema da tabela.
- No menu de navegação do lado esquerdo, clique em Dados para apresentar a página Dados da tabela.
Clique em Inserir. A Google Cloud consola apresenta a página Consulta da tabela com um novo separador de consulta que contém declarações
INSERT
eSELECT
. Substitua essas declarações pelo seguinte:INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);
Clique em Executar.
No menu de navegação do lado esquerdo, clique novamente em Dados para apresentar os dados da tabela. Confirme se a tabela contém os dados pretendidos.
Clique no link tutorial-database: Overview para regressar à página de vista geral da base de dados.
Na lista de tabelas na página Vista geral da base de dados, clique na tabela Savings. A Google Cloud consola apresenta a página Esquema da tabela.
No menu de navegação do lado esquerdo, clique em Dados para apresentar a página Dados da tabela.
Clique em Inserir. A Google Cloud consola apresenta a página Consulta da tabela com um novo separador de consulta que contém declarações
INSERT
eSELECT
. Substitua essas declarações pelo seguinte:INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);
Clique em Executar.
No menu de navegação do lado esquerdo, clique novamente em Dados para apresentar os dados da tabela. Confirme se a tabela contém os dados pretendidos.
Atualize a função do Cloud para consultar a base 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 estabelecer ligação à base de dados.
Se estas variáveis de ambiente não estiverem definidas,
a função usa um saldo da conta codificado.
Agora que tem uma base de dados configurada, atualize a sua função na nuvem para definir as variáveis de ambiente necessárias:
Abra a página de vista geral do Cloud Functions.
Clique na função tutorial-banking-webhook para aceder à respetiva página de detalhes.
Clique em Edit.
Abra a secção Definições de tempo de execução, compilação e ligações.
Selecione o separador Tempo de execução.
Adicione as seguintes variáveis na secção Variáveis de ambiente de tempo de execução:
PROJECT_ID
: o ID do seu projetoSPANNER_INSTANCE_ID
: o ID da instância do Spanner (provavelmentetutorial-instance
)SPANNER_DATABASE_ID
: o ID da base de dados do Spanner (provavelmente,tutorial-database
)
Clicar em Seguinte.
Clique em Implementar.
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á, obrigado por escolher o ACME Bank. |
2 | Quero saber o saldo da minha conta | Para que conta quer o saldo: poupança ou corrente? |
3 | Verificação | Aqui está o seu saldo mais recente: 10,00 € |
Se examinar o código, verá que 10 € não é o valor codificado. Isto significa que o webhook estabeleceu ligação com êxito à base de dados, que tem um saldo de 10 €.
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:
Se a conta de serviço predefinida for apresentada na página principal do IAM, altere as autorizações da conta de serviço. A função de Editor funciona, mas pode querer uma função mais detalhada num cenário de produção.
Se uma conta de serviço predefinida não for apresentada na página principal do IAM, conceda a função necessária adicionando a conta de serviço como um novo principal.
Em alternativa, pode usar uma conta de serviço que criar.
Mais informações
Para mais informações sobre os passos acima, consulte:
- Usar o Cloud Spanner com o Cloud Functions
- Crie e consulte uma base de dados através da Google Cloud Console
- Linguagem de definição de dados SQL padrão da Google
- Linguagem de manipulação de dados SQL padrão da Google