Al momento, il webhook utilizza dati impostati come hardcoded nella funzione cruisePlanCoverage.
In questo passaggio del tutorial, creerai un database Spanner, lo compilerai con le destinazioni coperte 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 consentire alla tua funzione di accedere in modo sicuro al tuo 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 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 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 località della regione che hai scelto durante la creazione della funzione.
In Alloca capacità di calcolo, inserisci 100 unità di elaborazione. In questo modo, viene fornita una capacità minima per il tutorial.
Fai clic su Crea. La console Google Cloud visualizza 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.
- Come nome del database, inserisci tutorial-database.
- Seleziona il dialetto del database Google SQL standard.
- Fai clic su Crea. La console Google Cloud visualizza la pagina Panoramica del database che hai creato.
Crea una tabella per il tuo database
Ora che hai un database, devi creare una tabella per il database. Per creare una tabella:
- Nella sezione Tabelle della pagina Panoramica del database, fai clic su Crea tabella.
Nella pagina Scrivi istruzioni DDL, inserisci:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);Fai clic su Invia. La console Google Cloud torna alla pagina Panoramica del database e mostra che gli aggiornamenti dello schema sono in corso. Attendi il completamento dell'aggiornamento.
Inserisci i dati nella tabella
Ora che il tuo database ha una tabella, devi aggiungere i dati alla tabella. Per aggiungere dati:
- Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella di destinazione. La console Google Cloud mostra la pagina Schema della tabella di destinazione.
- Nel menu di navigazione a sinistra, fai clic su Dati per visualizzare la pagina Dati della tabella di destinazione.
Fai clic su Inserisci. La console Google Cloud mostra la pagina Query della tabella di destinazione con una nuova scheda Query contenente le istruzioni
INSERTeSELECT. Sovrascrivi queste istruzioni con le seguenti:INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);Fai clic su Esegui.
Nel menu di navigazione a sinistra, fai di nuovo clic su Dati per visualizzare i dati della tabella di destinazione. Verifica che la tabella contenga i dati desiderati.
Aggiorna la Cloud Function per eseguire query sul database
La funzione cruisePlanCoverage nel codice del webhook controlla 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 elenco di destinazioni 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-telecommunications-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 tuo 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.
Testa l'agente
Ora l'agente è pronto per essere provato. Fai clic sul pulsante Test Agent nella console Dialogflow per aprire il simulatore. Prova ad avere la seguente conversazione con l'agente:
| Turno di conversazione | Tu | Agente |
|---|---|---|
| 1 | Ciao | Ciao! Sono l'agente virtuale per le telecomunicazioni. Posso aiutarti a risolvere i problemi relativi alla fatturazione e ai piani, a risolvere i problemi e ad aggiungere piani di viaggio e di crociera. Come posso aiutarti oggi? |
| 2 | Voglio aggiungere un piano di crociera | Fammi dare un'occhiata. Qual è il tuo numero di telefono con noi? |
| 3 | 123-123-1234 | Quanti giorni dura la tua crociera? |
| 4 | 7 | L'opzione 1 include chiamate e messaggi. Il costo è di [XX] $/giorno. Scopri di più qui [URL]. L'opzione 2 include chiamate, messaggi e dati. Il costo è di [XX] $/giorno. Scopri di più qui [URL]. Quale piano di crociera vuoi aggiungere? |
| 5 | Opzione 1 | Ok. Ho aggiunto il piano al tuo account. Durante la crociera, potresti aver bisogno di copertura anche a terra. In quale porto farai scalo? |
| 6 | Italia | E quanti giorni trascorrerai lì? |
| 7 | 3 | Ottime notizie. L'Italia ha una copertura senza costi sulla terraferma. Ecco fatto. Posso fare qualcos'altro per aiutarti oggi? |
Se esamini il codice, l'Italia non è nell'elenco hardcoded delle destinazioni coperte. Ciò significa che il webhook si è connesso correttamente al database, che include l'Italia.
Risoluzione dei problemi
Il codice del webhook include istruzioni di log. Se riscontri problemi, prova a visualizzare i log della Cloud Function.
Se la funzione non si connette al database e visualizzi un errore di autorizzazione nei log, potresti dover correggere il ruolo per il 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 il account di servizio predefinito viene visualizzato nella pagina principale di IAM, modifica le autorizzazioni per il service account. Il ruolo Editor funzionerà, ma potresti volere un ruolo più granulare in uno scenario di produzione.
Se nella pagina principale di IAM non viene visualizzato un account di servizio predefinito, concedi il ruolo richiesto aggiungendo il 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, consulta:
- 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