Esegui una query su un database

Al momento il webhook utilizza dati impostati come hardcoded in Funzione accountBalanceCheck. In questo passaggio del tutorial, creerai Spanner popolarlo con dati di bilanciamento e aggiorna la funzione per eseguire una query sul database.

Configurazione progetto

È importante che l'agente Dialogflow e il database sono entrambi nello stesso progetto. Questo è il modo più semplice per ottenere un accesso sicuro al tuo database. Inoltre, devi abilitare l'API Spanner.

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

    Vai al selettore dei progetti

  2. Abilita l'API Spanner per il progetto.

    Abilita l'API Spanner

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.

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

    Vai alle istanze Spanner

  2. Fai clic su Crea istanza.

  3. Come nome dell'istanza, inserisci Tutorial Instance.

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

  5. 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.

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

  7. 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:

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

Creare tabelle per il database

Ora che hai un database, devi creare le tabelle per il database. Per creare tabelle:

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

    CREATE TABLE Checking (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  3. 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.

  4. Nella sezione Tabelle della pagina Panoramica del database, fai clic su Crea tabella.

  5. Nella pagina Scrivi istruzioni DDL, inserisci:

    CREATE TABLE Savings (
      AccountId INT64,
      Balance INT64,
    ) PRIMARY KEY(AccountId);
    
  6. Fai clic su Invia. La console Google Cloud torna alla pagina Panoramica del database e indica che sono in corso gli aggiornamenti dello schema. Attendi il completamento dell'aggiornamento.

Inserire dati nelle tabelle

Ora che il database contiene tabelle, devi aggiungere i dati alle tabelle. Per aggiungere dati:

  1. Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Controllo. Nella console Google Cloud viene visualizzata la pagina Schema della tabella.
  2. Nel menu di navigazione a sinistra, Fai clic su Dati per visualizzare la pagina Dati della tabella.
  3. Fai clic su Inserisci. La console Google Cloud mostra la pagina Query della tabella con un nuova scheda query che contiene istruzioni INSERT e SELECT. Sostituisci queste istruzioni con quanto segue:

    INSERT INTO Checking (AccountId, Balance)
    VALUES(1, 1000),
          (2, 2000);
    
  4. Fai clic su Esegui.

  5. 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.

  6. Fai clic sul link tutorial-database: Panoramica. per tornare alla pagina della panoramica del database.

  7. Nell'elenco delle tabelle nella pagina Panoramica del database, fai clic sulla tabella Risparmi. Nella console Google Cloud viene visualizzata la pagina Schema della tabella.

  8. Nel menu di navigazione a sinistra, Fai clic su Dati per visualizzare la pagina Dati della tabella.

  9. Fai clic su Inserisci. La console Google Cloud mostra la pagina Query della tabella con un nuova scheda query che contiene istruzioni INSERT e SELECT. Sostituisci queste istruzioni con quanto segue:

    INSERT INTO Savings (AccountId, Balance)
    VALUES(1, 10000),
          (2, 20000);
    
  10. Fai clic su Esegui.

  11. 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 una query sul database

La funzione accountBalanceCheck 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 saldo dell'account impostato come hardcoded.

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

  1. Apri la pagina Panoramica di Cloud Functions.

    Vai alla panoramica di Cloud Functions

  2. Fai clic sulla funzione tutorial-banking-webhook per visualizzare la relativa pagina dei dettagli.

  3. Fai clic su Modifica.

  4. Apri la sezione Impostazioni 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: l'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 indica che la funzione è stata dispiattata correttamente.

Testa l'agente

L'agente è ora pronto a provare. 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, grazie per aver scelto ACME Bank.
2 Voglio conoscere il saldo del mio conto Per quale conto vuoi il saldo: di risparmio o corrente?
3 Controllo in corso… Ecco il tuo saldo aggiornato: 10,00 $

Se esamini il codice, 10 $ non è il valore impostato come hardcoded. Ciò significa che il webhook è stato connesso correttamente al database, che ha un saldo di 10 $.

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:

Ulteriori informazioni

Per ulteriori informazioni sui passaggi precedenti, vedi: