Creare un client Django frontend per un'app Dialogflow

In questo codelab, imparerai a creare un client Django frontend per creare un'esperienza di conversazione per un'app Dialogflow. In particolare, procedi nel seguente modo:

  • Scarica, configura ed esegui il client frontend Django.
  • Configura l'endpoint di Detect Dialogflow da chiamare dal client frontend Django.
  • Esegui il deployment dell'app su Google Cloud su App Engine.
  • Verifica se gli inviti di Calendar sono configurati in base alla richiesta dell'utente.

Prerequisiti

Prima di procedere, devi completare i seguenti codelab:

  1. Crea un programma degli appuntamenti con Dialogflow
  2. Informazioni sulle entità in Dialogflow
  3. Comprendere il fulfillment integrando Dialogflow con Calendar

Obiettivi didattici

  • Come configurare ed eseguire un client frontend Django per Dialogflow
  • Come eseguire il deployment del client frontend Django in Google Cloud su App Engine
  • Come testare un'app Dialogflow da un frontend personalizzato

Cosa devi creare

  • Configura ed esegui un client frontend Django per Dialogflow.
  • Eseguirai il deployment del client frontend Django in Google Cloud su App Engine.
  • Testerai un'app Dialogflow da quel frontend personalizzato.

Che cosa ti serve

  • Comprensione di base di Python
  • Nozioni di base su Dialogflow

Utilizzerai l'esperienza di conversazione Schedule Scheduler creata in precedenza e creerai un frontend personalizzato per l'app. Dovrai creare il frontend con Django, eseguirlo e testarlo localmente ed eseguirne il deployment in App Engine.

L'utente invierà una richiesta di appuntamento tramite il frontend, che chiamerà l'API Dialogflow DetectIntent per impostare un appuntamento per la data e l'ora richieste. Il fulfillment di Dialogflow invierà una richiesta a Calendar per impostare il rispettivo appuntamento e restituire una conferma all'utente tramite Dialogflow.

Il risultato finale sarà simile a questo:

  1. Per clonare il repository sulla macchina locale, digita questo comando nel terminale locale del computer:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Passa alla directory che contiene il codice. In alternativa, puoi scaricare l'anteprima come file ZIP ed estrarla.
cd Django-Dialogflow-Appointment-Scheduler

Una volta eseguito il deployment, l'app utilizza il proxy Cloud SQL integrato nell'ambiente standard di App Engine per comunicare con l'istanza Cloud SQL. Tuttavia, per testare la tua app localmente, devi installare e utilizzare una copia locale del proxy Cloud SQL nel tuo ambiente di sviluppo. Per saperne di più, vedi Informazioni sul proxy Cloud SQL.

Per eseguire le attività di amministrazione di base sull'istanza Cloud SQL, puoi utilizzare il client Cloud SQL per MySQL.

Installa il proxy Cloud SQL

Scarica e installa il proxy Cloud SQL. Il proxy Cloud SQL viene utilizzato per connettersi all'istanza Cloud SQL quando è in esecuzione localmente.

Scarica il proxy.

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

Rendi il proxy eseguibile.

chmod +x cloud_sql_proxy

crea un'istanza di Cloud SQL

  1. Crea un'istanza Cloud SQL per l'istanza MySQL di seconda generazione Assegna all'istanza il nome "polls-instance" o un nome simile. La preparazione dell'istanza potrebbe richiedere qualche minuto. Una volta pronta, dovrebbe essere visibile nell'elenco delle istanze.
  2. Utilizza lo strumento gcloud per eseguire il comando seguente, dove [YOUR_INSTANCE_NAME] rappresenta il nome dell'istanza. Prendi nota del valore visualizzato per il nome di connessione dell'istanza per il passaggio successivo, visualizzato nel formato [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

In alternativa, puoi fare clic sull'istanza per visualizzare il Nome connessione istanza.

Inizializza l'istanza Cloud SQL

Avvia il proxy Cloud SQL utilizzando il nome di connessione istanza del passaggio precedente. Sostituisci [YOUR_INSTANCE_CONNECTION_NAME] con il valore registrato nel passaggio precedente. In questo modo viene stabilita una connessione dal computer locale all'istanza per scopi di test locale. Tieni in esecuzione il proxy Cloud SQL durante il test locale.

./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

Quindi, crea un nuovo utente e database Cloud SQL.

  1. Crea un nuovo database con Google Cloud Console per la tua istanza Cloud SQL, denominata polls-instance. Ad esempio, puoi inserire"polls"come nome.
  2. Crea un nuovo account utente utilizzando Cloud Console per la tua istanza Cloud SQL, denominata polls-instance.

Configura le impostazioni del database

  1. Apri mysite/settings.py per modificare.
  2. In due punti, sostituisci [YOUR-USERNAME] e [YOUR-PASSWORD] con il nome utente e la password del database che hai creato nella sezione precedente. Ciò consente di configurare la connessione al database per il deployment e i test locali di App Engine.
  3. Nella riga ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME],' sostituisci [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] con il valore registrato nella sezione precedente.
  4. Esegui il comando seguente e copia il valore del nome della connessione dell'istanza di output per il passaggio successivo.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. Sostituisci [YOUR-CONNECTION-NAME] con il valore che hai registrato nella sezione precedente.
  2. Sostituisci [YOUR-DATABASE] con il nome che hai scelto nella sezione precedente.
# [START db_setup]
if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]'
        }
    }
# [END db_setup]
  1. Chiudi e salva settings.py.
  1. Nella console di Dialogflow, fai clic su . Nella scheda Generale accanto a ID progetto, fai clic su Google Cloud .
  2. Fai clic sul Menu di navigazione ☰ > API e servizi > Credenziali.
  3. Fai clic su Create Credentials > Account di servizio.
  4. Nella sezione Dettagli account di servizio, inserisci "quot;appointment-scheduler" come Nome account di servizio, quindi fai clic su Crea.

  1. In Concedi a questo account di servizio l'accesso al progetto, fai clic su Continua per saltare l'operazione.
  2. In corrispondenza dell'opzione Concedi agli utenti l'accesso a questo account di servizio (facoltativo), fai clic su Crea chiave > JSON > Crea.

Il file JSON verrà scaricato sul computer e ti servirà nelle seguenti sezioni di configurazione.

  1. Nella cartella della chat, sostituisci AppointmentScheduler.json con il file JSON delle credenziali.
  2. In views.py nella cartella della chat, cambia GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" nell'ID progetto.

Per eseguire l'app Django sul tuo computer locale, devi configurare un ambiente di sviluppo Python, inclusi Python, pip e virtualenv. Per istruzioni, consulta la sezione Configurare un ambiente di sviluppo Python.

  1. Crea un ambiente Python isolato e installa le dipendenze:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Esegui le migrazioni Django per configurare i modelli.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Avvia un server web locale.
python3 manage.py runserver
  1. Nel browser web, inserisci http://localhost:8000/. Dovresti vedere una pagina web semplice come mostrato nel seguente screenshot:

Le pagine dell'app di esempio vengono pubblicate dal server web di Django in esecuzione sul computer. Quando vuoi iniziare, premi Control+S (Command+S su Macintosh) per interrompere il server web locale.

Esegui questo comando per spostare tutti i file statici dell'app nella cartella specificata da STATIC_ROOT in settings.py:

python3 manage.py collectstatic

Carica l'app eseguendo questo comando nella directory dell'app in cui si trova il file app.yaml:

gcloud app deploy

Attendi il messaggio che ti comunica che l'aggiornamento è stato completato.

Nel browser web, inserisci https://<tuo_id_progetto>.appspot.com.

Questa volta, la tua richiesta viene gestita da un server web in esecuzione nell'ambiente standard di App Engine.

Il comando app deploy esegue il deployment dell'app come descritto in app.yaml e imposta la nuova versione di cui è stato eseguito il deployment come versione predefinita, consentendo di gestire tutto il nuovo traffico.

Vai all'indirizzo https://<your_project_id>.appspot.com e inserisci quanto segue:

  1. Utente: "Imposta un appuntamento per la registrazione al veicolo domani alle 15:00."
  2. Il chatbot risponde come segue:

  1. Calendar prenota la risposta.

Se prevedi di completare altri codelab di Dialogflow, salta questa parte per ora e torna più tardi.

Eliminare l'agente Dialogflow

  1. Fai clic su accanto all'agente esistente.
  1. Nella scheda Generali, scorri fino in fondo e fai clic su Elimina questo agente.
  2. Digita Elimina nella finestra visualizzata e fai clic su Elimina.

Hai creato un chatbot in Dialogflow e lo hai integrato con Calendar. Sei diventato uno sviluppatore di chatbot.

Scopri di più

Per scoprire di più, consulta le seguenti risorse: