Al momento il tuo webhook utilizza dati hardcoded nella funzione cruisePlanCoverage
.
In questo passaggio del tutorial,
creerai
Spanner
popolarlo con destinazioni coperte
e aggiorna la funzione
per eseguire una query sul database.
Configurazione progetto
È importante che l'agente Dialogflow e il database si trovino entrambi nello stesso progetto. Questo è il modo più semplice per consentire alla funzione di accedere in modo sicuro al database. Inoltre, devi attivare l'API Spanner.
Prima di creare il database, seleziona il tuo progetto dalla console Google Cloud.
Abilita 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 tua configurazione, mantieni l'opzione predefinita A livello di regione e seleziona la stessa regione località che hai scelto durante la creazione della funzione.
In Alloca capacità di calcolo, inserisci 100 unità di elaborazione. Questa impostazione fornisce una capacità minima per il tutorial.
Fai clic su Crea. La console Google Cloud 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.
- Come nome del database, inserisci tutorial-database.
- Seleziona il dialetto del database Google SQL standard.
- Fai clic su Crea. La console Google Cloud mostra la pagina Panoramica per il database che hai creato.
Creare una tabella per il 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 sono in corso aggiornamenti dello schema. Attendi il completamento dell'aggiornamento.
Inserire i dati nella tabella
Ora che il database contiene una tabella, devi aggiungere i dati. Per aggiungere dati:
- Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Destinazioni. La console Google Cloud mostra la pagina Schema della tabella Destinazioni.
- Nel menu di navigazione a sinistra, Fai clic su Dati per visualizzare la pagina Dati della tabella Destinazioni.
Fai clic su Inserisci. La console Google Cloud mostra la pagina Query della tabella Destinazioni con una nuova scheda di query contenente istruzioni
INSERT
eSELECT
. Sostituisci queste istruzioni con quanto segue: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 Destinazione. Verifica che la tabella contenga i dati desiderati.
Aggiorna la Cloud Function per eseguire una query sul database
La funzione cruisePlanCoverage
nel codice webhook
verifica se sono state 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 hardcoded.
Ora che hai configurato un database, aggiornate la funzione Cloud per impostare le variabili di ambiente richieste:
Apri la pagina Panoramica di Cloud Functions.
Fai clic sulla funzione tutorial-telecommunications-webhook per visualizzare la 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 di 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 indica che la funzione il deployment è stato eseguito correttamente.
Testa l'agente
L'agente è ora pronto per essere provato. Fai clic sul pulsante Testa agente dalla console Dialogflow. per aprire il simulatore. Prova ad avviare una conversazione con l'agente:
Turno di conversazione | Tu | Agente |
---|---|---|
1 | Ciao | Ciao! Sono l\'agente virtuale per le telecomunicazioni. Posso aiutarti a risolvere problemi di fatturazione e pianificazione, a risolvere i problemi e ad aggiungere piani di viaggio e crociera. Come posso aiutarti oggi? |
2 | Voglio aggiungere un piano di crociera | Fammi dare un'occhiata. Qual è il tuo numero di telefono registrato? |
3 | 123-123-1234 | Quanti giorni dura la crociera? |
4 | 7 | L'opzione 1 include chiamate e SMS. Costa [XX] $ al giorno. Scopri di più qui [URL]. L'opzione 2 include chiamate, SMS e dati. Costa [XX] $ al giorno. Scopri di più qui [URL]. Quale piano di crociera vuoi aggiungere? |
5 | Opzione 1 | Ok. Ho aggiunto il piano al tuo account. Potresti aver bisogno anche di una copertura via terra durante la crociera. In quale porta ti fermerai? |
6 | Italia | E per quanti giorni? |
7 | 3 | Ottime notizie. L'Italia ha una copertura gratuita a terra. Ecco fatto. Posso fare qualcos'altro per aiutarti oggi? |
Se esamini il codice, L'Italia non è nell'elenco impostato come hardcoded delle destinazioni coperte. Ciò significa che il webhook è stato connesso correttamente al database, inclusa l'Italia.
Risoluzione dei problemi
Il codice webhook include istruzioni di logging. Se hai problemi, prova a visualizzare i log della tua funzione Cloud.
Se la funzione non si connette al database e viene visualizzato 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 ha il formato
PROJECT_ID@appspot.gserviceaccount.com
.
Puoi risolvere il problema in uno dei seguenti modi:
Se nella pagina principale IAM viene mostrato l'account di servizio predefinito, modificare le autorizzazioni per l'account di servizio. Puoi anche usare il ruolo Editor, ma potresti volere un ruolo più granulare in uno scenario di produzione.
Se un account di servizio predefinito non è mostrato 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, consulta:
- Utilizzo di Cloud Spanner con Cloud Functions
- Creare ed eseguire query su un database utilizzando la console Google Cloud
- Data Definition Language (linguaggio di definizione dei dati) di Google Standard SQL
- Google Standard SQL Data Manipulation Language (Linguaggio di manipolazione dei dati SQL standard di Google)