Al momento, il webhook utilizza dati impostati come hardcoded nella
funzione accountBalanceCheck
.
In questo passaggio del tutorial, creerai un database Spanner, lo compilerai con i dati del bilanciamento e aggiornerai la funzione per eseguire query sul database.
Configurazione progetto
È importante che l'agente Dialogflow e il database siano entrambi nello stesso progetto. Questo è il modo più semplice per la funzione di avere accesso sicuro al database. Inoltre, devi abilitare l'API Spanner.
Prima di creare il database, seleziona il progetto dalla console Google Cloud.
Abilitare l'API Spanner per il progetto.
Creazione di un'istanza di Spanner
Quando utilizzi Spanner per la prima volta, devi creare un'istanza, ovvero un'allocazione di risorse utilizzate dai database Spanner in quell'istanza.
Nella console Google Cloud, vai alla pagina Istanze Spanner.
Fai clic su Crea istanza.
Come nome dell'istanza, inserisci Istanza tutorial.
L'ID istanza viene inserito automaticamente in base al nome dell'istanza.
In Scegli la configurazione, mantieni l'opzione predefinita A livello di regione e seleziona la località corrispondente alla stessa regione che hai scelto durante la creazione della funzione.
In Alloca capacità di calcolo, inserisci 100 unità di elaborazione. Ciò fornisce una capacità minima per il tutorial.
Fai clic su Crea. Nella console Google Cloud viene visualizzata la pagina Panoramica per l'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.
- Come nome del database, inserisci tutorial-database.
- Seleziona il dialetto del database Google Standard SQL.
- Fai clic su Crea. Nella console Google Cloud viene visualizzata la pagina Panoramica relativa al database che hai creato.
Crea tabelle per il tuo 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 console Google Cloud 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 console Google Cloud torna alla pagina Panoramica del database e mostra che sono in corso gli aggiornamenti dello schema. Attendi il completamento dell'aggiornamento.
Inserire i dati nelle tabelle
Ora che il database contiene tabelle, devi aggiungere dati alle tabelle. Per aggiungere dati:
- Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic su Tabella di controllo. Nella console Google Cloud viene visualizzata 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 console Google Cloud mostra la pagina Query della tabella con una nuova scheda Query contenente le istruzioni
INSERT
eSELECT
. Sovrascrivi queste istruzioni con quanto segue:INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);
Fai clic su Run (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 riepilogo del database.
Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Risparmio. Nella console Google Cloud viene visualizzata 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 console Google Cloud mostra la pagina Query della tabella con una nuova scheda Query contenente le istruzioni
INSERT
eSELECT
. Sovrascrivi queste istruzioni con quanto segue:INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);
Fai clic su Run (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.
Aggiorna la Cloud Function per eseguire query sul database
La funzione accountBalanceCheck
nel codice webhook verifica se sono impostate variabili di ambiente specifiche con informazioni per la connessione al database.
Se le variabili di ambiente non sono impostate,
la funzione utilizza un saldo dell'account impostato come hardcoded.
Ora che hai configurato un database, aggiorna la Cloud Function per impostare le variabili di ambiente richieste:
Apri la pagina Panoramica di Cloud Functions.
Fai clic sulla funzione tutorial-banking-webhook per passare 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 alla sezione Variabili di ambiente runtime:
PROJECT_ID
: il tuo ID progettoSPANNER_INSTANCE_ID
: il tuo ID istanza Spanner (probabilmentetutorial-instance
)SPANNER_DATABASE_ID
: ID database Spanner (probabilmentetutorial-database
)
Tocca Avanti.
Fai clic su Esegui il deployment.
Attendi finché l'indicatore di stato indica che il deployment della funzione è stato eseguito correttamente.
Testa l'agente
L'agente è ora pronto per provare. Fai clic sul pulsante Agente di test nella console di Dialogflow per aprire il simulatore. Prova a effettuare la seguente conversazione con l'agente:
svolta di conversazione | Tu | Agente |
---|---|---|
1 | Un saluto da Google | Ciao, grazie per aver scelto ACME Bank. |
2 | Voglio conoscere il saldo del mio account | Per quale conto vuoi il saldo (di risparmio o conto corrente)? |
3 | Controllo in corso… | Ecco il tuo ultimo saldo: 10,00 $ |
Se esamini il codice, 10 $ non è il valore impostato come hardcoded. Questo significa che il webhook si è connesso correttamente al database, il che ha un saldo di 10 $.
Risoluzione dei problemi
Il codice webhook include le istruzioni di logging. In caso di problemi, prova a visualizzare i log della Cloud Function.
Se la tua funzione non si connette al database e visualizzi un errore di autorizzazione nei log, potrebbe essere necessario correggere il ruolo per l'account di servizio predefinito utilizzato dalla funzione.
Questo account di servizio è nel formato
PROJECT_ID@appspot.gserviceaccount.com
.
Puoi risolvere il problema in uno dei seguenti modi:
Se l'account di servizio predefinito è visualizzato nella pagina principale di IAM, modifica le autorizzazioni per l'account di servizio. Puoi avere il ruolo Editor, ma ti consigliamo di assumere un ruolo più granulare in uno scenario di produzione.
Se un account di servizio predefinito non è visualizzato nella pagina principale IAM, concedi il ruolo richiesto aggiungendo l'account di servizio come nuova entità.
In alternativa, puoi utilizzare un account di servizio creato da te.
Ulteriori informazioni
Per ulteriori informazioni sui passaggi precedenti, vedi:
- Utilizzo di Cloud Spanner con Cloud Functions
- Crea ed esegui 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