Il webhook attualmente utilizza dati hardcoded nella funzione accountBalanceCheck.
In questo passaggio del tutorial,
creerai un
database
Spanner, lo popolerai con i dati del saldo
e aggiornerai la funzione per eseguire query sul database.
Configurazione progetto
È importante che l'agente Dialogflow e il database si trovino nello stesso progetto. Questo è il modo più semplice per la tua funzione di avere accesso sicuro al database. Inoltre, devi abilitare l'API Spanner.
Prima di creare il database, seleziona il progetto dalla Google Cloud console.
Abilita l'API Spanner per il progetto.
Creazione di un'istanza di Spanner
La prima volta che utilizzi Spanner, devi creare un'istanza, ovvero un'allocazione di risorse utilizzate dai database Spanner in quell'istanza.
Nella Google Cloud console, vai alla pagina Istanze Spanner.
Fai clic su Crea istanza.
Per il nome dell'istanza, inserisci Tutorial Instance.
L'ID istanza viene inserito automaticamente in base al nome dell'istanza.
In Scegli la configurazione, mantieni l'opzione predefinita Regionale e seleziona la stessa regione località scelta durante la creazione della funzione.
In Alloca capacità di calcolo, inserisci 100 unità di elaborazione. Questa opzione fornisce una capacità minima per il tutorial.
Fai clic su Crea. La Google Cloud console mostra la pagina Panoramica dell'istanza che hai creato.
Creazione di un database Spanner
Ora che hai un'istanza, devi creare un database. Per creare un database:
- Nella pagina Panoramica dell'istanza, fai clic su Crea database.
- Per il nome del database, inserisci tutorial-database.
- Seleziona il dialetto del database SQL standard di Google.
- Fai clic su Crea. La Google Cloud console mostra la pagina Panoramica del database che hai creato.
Creazione di tabelle per il database
Ora che hai un database, devi creare le tabelle per il database. Per creare le tabelle:
- Nella sezione Tabelle della pagina Panoramica del database, fai clic su Crea tabella.
Nella pagina Scrivi istruzioni DDL, inserisci:
CREATE TABLE Checking ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);Fai clic su Invia. La Google Cloud console torna alla pagina Panoramica del database e mostra che sono in corso gli aggiornamenti dello schema. Attendi il completamento dell'aggiornamento.
Nella sezione Tabelle della pagina Panoramica del database, fai clic su Crea tabella.
Nella pagina Scrivi istruzioni DDL, inserisci:
CREATE TABLE Savings ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);Fai clic su Invia. La Google Cloud console torna alla pagina Panoramica del database e mostra che sono in corso gli aggiornamenti dello schema. Attendi il completamento dell'aggiornamento.
Inserimento di dati nelle tabelle
Ora che il database ha le tabelle, devi aggiungere dati alle tabelle. Per aggiungere dati:
- Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Checking. La Google Cloud console mostra la pagina Schema della tabella.
- Nel menu di navigazione a sinistra, fai clic su Dati per visualizzare la pagina Dati della tabella.
Fai clic su Inserisci. La Google Cloud console mostra la pagina Query della tabella con una nuova scheda di query che contiene le istruzioni
INSERTeSELECT. Sovrascrivi queste istruzioni con le seguenti:INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);Fai clic su Esegui.
Nel menu di navigazione a sinistra, fai di nuovo clic su Dati per visualizzare i dati della tabella. Verifica che la tabella contenga i dati desiderati.
Fai clic sul link tutorial-database: Panoramica per tornare alla pagina di panoramica del database.
Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Savings. La Google Cloud console mostra la pagina Schema della tabella.
Nel menu di navigazione a sinistra, fai clic su Dati per visualizzare la pagina Dati della tabella.
Fai clic su Inserisci. La Google Cloud console mostra la pagina Query della tabella con una nuova scheda di query che contiene le istruzioni
INSERTeSELECT. Sovrascrivi queste istruzioni con le seguenti:INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);Fai clic su Esegui.
Nel menu di navigazione a sinistra, fai di nuovo clic su Dati per visualizzare i dati della tabella. Verifica che la tabella contenga i dati desiderati.
Aggiornamento della Cloud Function per eseguire query sul database
La funzione accountBalanceCheck nel codice del webhook verifica se sono impostate variabili di ambiente specifiche con informazioni per la connessione al database.
Se queste variabili di ambiente non sono impostate, la funzione utilizza un saldo del conto hardcoded.
Ora che hai configurato un database, aggiorna la Cloud Function per impostare le variabili di ambiente richieste:
Apri la pagina della panoramica di Cloud Functions.
Fai clic sulla funzione tutorial-banking-webhook per andare alla relativa pagina dei dettagli.
Fai clic su Modifica.
Apri la sezione Impostazioni di runtime, build e connessioni.
Seleziona la scheda Runtime.
Aggiungi le seguenti variabili nella sezione Variabili di ambiente runtime:
PROJECT_ID: il tuo ID progettoSPANNER_INSTANCE_ID: l'ID istanza Spanner (probabilmentetutorial-instance)SPANNER_DATABASE_ID: l'ID del database Spanner (probabilmentetutorial-database)
Fai clic su Avanti.
Fai clic su Esegui il deployment.
Attendi finché l'indicatore di stato non mostra che il deployment della funzione è stato eseguito correttamente.
Test dell'agente
L'agente è ora pronto per essere provato. Fai clic sul pulsante Test Agent nella console Dialogflow per aprire il simulatore. Prova a fare la seguente conversazione con l'agente:
| Turno di conversazione | Tu | Agente |
|---|---|---|
| 1 | Ciao | Ciao, grazie per aver scelto ACME Bank. |
| 2 | Voglio conoscere il saldo del mio account | Per quale conto vuoi conoscere il saldo: risparmio o corrente? |
| 3 | Corrente | Ecco il tuo ultimo saldo: 10,00 $ |
Se esamini il codice, 10 $ non è il valore hardcoded. Ciò significa che il webhook si è connesso correttamente al database, che ha un saldo di 10 $.
Risoluzione dei problemi
Il codice del webhook include istruzioni di logging. Se riscontri problemi, prova a visualizzare i log della Cloud Function.
Se la funzione non si connette al database e nei log viene visualizzato un errore di autorizzazione, potrebbe essere necessario correggere il ruolo per il account di servizio predefinito utilizzato dalla funzione.
Questo account di servizio ha il formato
PROJECT_ID@appspot.gserviceaccount.com.
Puoi risolvere il problema in uno dei seguenti modi:
Se il account di servizio predefinito viene visualizzato nella pagina principale di IAM, modifica le autorizzazioni per il service account. Il ruolo Editor funzionerà, ma in uno scenario di produzione potresti preferire un ruolo più granulare.
Se un account di servizio predefinito non viene visualizzato nella pagina principale di IAM, concedi il ruolo richiesto aggiungendo il account di servizio come nuova entità.
In alternativa, puoi utilizzare un account di servizio che crei.
Ulteriori informazioni
Per ulteriori informazioni sui passaggi precedenti, consulta:
- Utilizzo di Cloud Spanner con Cloud Functions
- Creazione ed esecuzione di query su un database utilizzando la console Google Cloud
- Linguaggio di definizione dei dati SQL standard di Google
- Linguaggio di manipolazione dei dati SQL standard di Google