Esegui una query su un database

Il webhook attualmente utilizza dati 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 la tua funzione di avere accesso sicuro al tuo database. Inoltre, devi abilitare l'API Spanner.

  1. Prima di creare il database, seleziona il progetto dalla Google Cloud console.

    Vai al selettore di progetti

  2. Abilita l'API Spanner per il progetto.

    Abilita l'API Spanner

Creazione di un'istanza Spanner

La prima volta che utilizzi Spanner, devi creare un'istanza, ovvero un'allocazione di risorse utilizzate dai database Spanner in quell'istanza.

  1. Nella Google Cloud console, vai alla pagina Istanze Spanner.

    Vai alle istanze Spanner

  2. Fai clic su Crea istanza.

  3. In Nome istanza, inserisci Tutorial Instance.

  4. L'ID istanza viene inserito automaticamente in base al nome dell'istanza.

  5. In Scegli la configurazione, mantieni l'opzione predefinita Regionale e seleziona la stessa regione località che hai scelto quando hai creato la funzione.

  6. In Alloca capacità di calcolo, inserisci 100 unità di elaborazione. In questo modo, viene fornita una capacità minima per il tutorial.

  7. Fai clic su Crea. La Google Cloud console 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:

  1. Nella pagina Panoramica dell'istanza, fai clic su Crea database.
  2. In Nome database, inserisci tutorial-database.
  3. Seleziona il dialetto del database SQL standard di Google.
  4. Fai clic su Crea. La Google Cloud console visualizza la pagina Panoramica del database che hai creato.

Creazione di una tabella per il database

Ora che hai un database, devi creare una tabella per il database. Per creare una tabella:

  1. Nella sezione Tabelle della pagina Panoramica del database, fai clic su Crea tabella.
  2. Nella pagina Scrivi istruzioni DDL, inserisci:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. 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 nella tabella

Ora che il database ha una tabella, devi aggiungere dati alla tabella. Per aggiungere dati:

  1. Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Destinations. La Google Cloud console visualizza la pagina Schema della tabella Destinations.
  2. Nel menu di navigazione a sinistra, fai clic su Dati per visualizzare la pagina Dati della tabella Destinations.
  3. Fai clic su Inserisci. La Google Cloud console visualizza la pagina Query della tabella Destinations con una nuova scheda di query che contiene le istruzioni INSERT e SELECT. Sovrascrivi queste istruzioni con le seguenti:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. Fai clic su Esegui.

  5. Nel menu di navigazione a sinistra, fai di nuovo clic su Dati per visualizzare i dati della tabella Destination. Verifica che la tabella contenga i dati desiderati.

Aggiornamento della Cloud Function per eseguire query sul database

La funzione cruisePlanCoverage 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 elenco hardcoded di destinazioni.

Ora che hai configurato un database, aggiorna la Cloud Function per impostare le variabili di ambiente richieste:

  1. Apri la pagina della panoramica di Cloud Functions.

    Vai alla panoramica di Cloud Functions

  2. Fai clic sulla funzione tutorial-telecommunications-webhook per andare alla relativa pagina dei dettagli.

  3. Fai clic su Modifica.

  4. Apri la sezione Impostazioni di runtime, build e connessioni.

  5. Seleziona la scheda Runtime.

  6. Aggiungi le seguenti variabili nella sezione Variabili di ambiente runtime:

    • PROJECT_ID: il tuo ID progetto
    • SPANNER_INSTANCE_ID: il tuo ID istanza Spanner (probabilmente tutorial-instance)
    • SPANNER_DATABASE_ID: il tuo ID database Spanner (probabilmente tutorial-database)
  7. Fai clic su Avanti.

  8. Fai clic su Esegui il deployment.

  9. 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! Sono l'agente virtuale di telecomunicazioni. Posso aiutarti a risolvere domande su fatturazione e piani, risolvere problemi e aggiungere piani di viaggio e crociere. Come posso aiutarti oggi?
2 Voglio aggiungere un piano per la crociera Diamo un'occhiata. Qual è il tuo numero di telefono con noi?
3 123-123-1234 Quanti giorni dura la crociera?
4 7 L'opzione 1 include voce e messaggi. Costa $[XX]/giorno. Ulteriori informazioni qui [URL]. L'opzione 2 include voce, messaggi e dati. Costa $[XX]/giorno. Ulteriori informazioni qui [URL]. Quale piano per la crociera vuoi aggiungere?
5 Opzione 1 Ok. Ho aggiunto questo piano al tuo account. Durante la crociera, potresti aver bisogno di copertura anche a terra. In quale porto ti fermerai?
6 Italia E quanti giorni ci trascorrerai?
7 3 Ottime notizie. L'Italia offre copertura senza costi a terra. 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 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@. Puoi risolvere il problema in uno dei seguenti modi:

Ulteriori informazioni

Per ulteriori informazioni sui passaggi precedenti, consulta: