Crea un'app Google Chat Dialogflow CX che capisce e risponde con il linguaggio naturale

In questa pagina viene spiegato come creare un'app Google Chat che sia in grado di a capire e rispondere con un linguaggio naturale usando Dialogflow. Questa guida utilizza Dialogflow CX, che ha un'integrazione diretta con Google Chat. Puoi anche utilizzare Dialogflow ES per creare un App Google Chat Dialogflow ES seguendo il Google Chat Dialogflow ES guida.

Prendiamo ad esempio un'app di Chat che aiuti le persone ad affittare automobili. Un utente potrebbe scrivere: "Vorrei noleggiare un'auto". La L'app Chat potrebbe rispondere con una domanda come "Dove vuoi ritirare il veicolo?" che avvia un processo simile conversazione con l'utente in cui l'app Chat comprende e risponde con voce umana durante la prenotazione del noleggio dell'auto.

Questo è solo un esempio. Le app Dialogflow Chat sono utili in tutto tipi di interazioni. Se richiede un linguaggio naturale umano, App Dialogflow Chat. La agenti predefiniti ti aiutano a iniziare rapidamente e mostrano cosa può fare Dialogflow, ad esempio:

  • Prenota voli
  • Fissa un appuntamento dal medico
  • Ordina cibo a domicilio
  • Rispondere a domande sul catalogo di prodotti per la vendita al dettaglio, ad esempio se gli articoli sono disponibili in altri colori
  • Pagina di selezione predefinita dell'agente Dialogflow.
    Figura 1. Selezione di un agente predefinito per un'app Dialogflow Chat.
    .
  • Test dell'agente in Dialogflow CX.
    Figura 2. Test dell'agente in Dialogflow CX per verificare che la logica e la configurazione dell'agente funzionino come previsto. Il diagramma mostra un insieme sequenziale di pagine di argomenti che riguardano passaggi specifici della conversazione, come l'impostazione di un punto di ritiro e di ritorno per un'auto a noleggio, e configura la logica che le collega. La conversazione viene testata in un simulatore.
  • Configurazione di un'app Dialogflow Chat.
    Figura 3. Hai configurato un'app di Chat per elaborare le risposte utilizzando l'agente Dialogflow CX nella pagina di configurazione dell'API Chat della console Google Cloud.
  • Test dell'app Dialogflow CX Chat
    Figura 4. Parlare della prenotazione di un'auto a noleggio con l'app Dialogflow Chat in Google Chat.

Obiettivi

  • Configurare l'ambiente.
  • Crea ed esegui il deployment di un agente Dialogflow CX.
  • Crea e implementa un'app di Chat basata sul Agente Dialogflow CX.
  • Prova l'app Chat.

Prerequisiti

Architettura

Il seguente diagramma mostra l'architettura di un App di chat creata con Dialogflow:

Architettura di un'app di chat implementata con Dialogflow.

Nel diagramma precedente, un utente che interagisce con un Dialogflow L'app Chat prevede il seguente flusso di informazioni:

  1. Un utente invia un messaggio in Chat a un App di Chat, in un messaggio diretto o in Spazio di Chat.
  2. Un agente virtuale Dialogflow, che risiede in Google Cloud, riceve ed elabora il messaggio per produrre una risposta.
  3. Facoltativamente, l'utilizzo di Webhook Dialogflow, l'agente Dialogflow può interagire con servizi di terze parti esterni, come sistema di gestione dei progetti o strumento di gestione dei ticket.
  4. L'agente Dialogflow invia una risposta all'agente Servizio app di Chat in Chat.
  5. La risposta viene consegnata allo spazio di Chat.

Configurare l'ambiente

Prima di utilizzare le API di Google, devi attivarle in un progetto Google Cloud. Puoi attivare una o più API in un singolo progetto Google Cloud.
  1. Nella console Google Cloud, abilita l'API Google Chat e l'API Dialogflow.

    Abilita le API

  2. Assicurati di abilitare le API nel modo corretto progetto Cloud e fai clic su Avanti.

  3. Verifica di abilitare le API corrette, quindi fai clic su Abilita.

Crea un agente Dialogflow CX

R Agente Dialogflow CX è un agente virtuale che gestisce le conversazioni simultanee con i tuoi utenti finali. È un modulo di comprensione del linguaggio naturale che comprende le sfumature del linguaggio umano. Dialogflow traduce il testo degli utenti finali durante una conversazione con i dati strutturati che le tue app e i tuoi servizi è in grado di comprendere. Progetti e crei un agente Dialogflow per gestire i tipi di conversazioni richieste per il tuo sistema.

Un agente Dialogflow è una sorta di agente di un call center umano. Li addestrerai entrambi per gestire gli scenari di conversazione previsti e la formazione deve essere eccessivamente esplicita.

Ecco come creare l'agente Dialogflow CX:

  1. Nella console di Dialogflow CX, apri la console di Dialogflow CX. Clic Menu > Dialogflow CX.

    Vai alla console di Dialogflow CX

  2. Scegli un progetto Google Cloud. Per trovare il progetto, potresti dover fai clic su Tutto e cercala.

  3. Ora hai la possibilità di scegliere un agente predefinito e crearne uno tuo. Se preferisci consultare un agente personalizzazione in dettaglio più avanti, scegli una delle agenti predefiniti, utili per capire cosa possono fare gli agenti.

    Per scegliere un agente predefinito, segui questi passaggi:

    1. Fai clic su Utilizza agenti predefiniti.
    2. Seleziona un agente predefinito. Per questa guida, seleziona Viaggi: autonoleggio.

      Gli agenti sono classificati come "principianti", il livello intermedio o avanzato in base al numero di funzionalità utilizzate dall'agente e sulla sofisticatezza della sua logica di conversazione. La scelta di un l'agente intermedio o avanzato potrebbe richiedere personalizzazioni e impostazioni, tra cui l'abilitazione di funzionalità e API in nella console Google Cloud.

    3. Fai clic su Importa come agente.

    Per creare il tuo agente, segui questi passaggi:

    1. Fai clic su Crea agente.
    2. Seleziona Genera automaticamente per creare una agente del datastore o seleziona Crea il tuo per creare altri tipi di agenti.

    Per una procedura dettagliata del processo di creazione dell'agente, consulta Crea un agente Dialogflow CX.

  4. Configura le impostazioni di base dell'agente:

    1. In Nome visualizzato, inserisci un nome visualizzato.
    2. Seleziona il tuo preferito. location. Se vuoi modificare le impostazioni avanzate impostazioni di geolocalizzazione, fai clic su Modifica.
    3. Seleziona il fuso orario che preferisci.
    4. Seleziona la lingua predefinita per l'agente. Non puoi modificare la lingua predefinita per un agente dopo la creazione.
  5. Fai clic su Crea. Dialogflow CX inizia a creare l'agente e poi mostra il flusso di avvio predefinito dell'agente.

  6. Se vuoi, puoi personalizzare l'agente. Per una procedura dettagliata dettagliata, personalizzazione, consulta Crea un agente Dialogflow CX.

  7. Come best practice, testa l'agente:

    1. Fai clic su Testa l'agente.
    2. Seleziona Testa l'agente nell'ambiente.
    3. In Ambiente, seleziona Bozza.
    4. In Flow, seleziona Default Start Flow (Avvia flusso predefinito).
    5. In Pagina, seleziona Pagina iniziale.
    6. Nella barra di scrittura Parla con l'agente, digita Hello e premi Invio. L'agente risponde presentandosi.
    7. Completa il test presentando la conversazione di prova di esempio.
  8. L'agente Dialogflow CX è stato creato. Torna alla console Dialogflow CX. Fai clic su Menu > Dialogflow CX.

    Vai alla console di Dialogflow CX

  9. Nella sezione Agents (Agenti), fai clic su . > Copia nome. Salva questo nome come che utilizzerai durante la configurazione dell'app Chat.

Crea un'app di Chat e connettila all'agente Dialogflow

Dopo aver creato un agente Dialogflow CX, segui questi passaggi per trasformarlo in una App Chat:

  1. Nella console Google Cloud, vai all'API Google Chat. Cerca "API Google Chat" e fai clic su API Google Chat e poi su Gestisci.

    Vai all'API Chat

  2. Fai clic su Configurazione e configura l'app Chat:

    1. In Nome app, inserisci Dialogflow App.
    2. In URL avatar, inserisci https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png.
    3. In Descrizione, inserisci Responds to real human conversation.
    4. In Funzionalità, seleziona Ricevi messaggi 1:1 e Partecipare a spazi e conversazioni di gruppo.
    5. In Impostazioni di connessione, seleziona Dialogflow.
    6. In Impostazioni di Dialogflow, seleziona Dialogflow CX.
    7. In Nome risorsa agente o ambiente, incolla l'agente Dialogflow CX il nome che hai copiato alla fine Crea un agente Dialogflow CX.
    8. Rendi disponibile questa app di Chat a persone e gruppi specifici nel tuo dominio e inserisci il tuo indirizzo email.
    9. In Log, seleziona Log errori in Logging.
  3. Fai clic su Salva.

L'app Chat è pronta per ricevere e rispondere messaggi su Chat.

Testare l'app Chat

Testa l'app Dialogflow CX Chat inviandola tramite messaggio Google Chat.

  1. Apri Google Chat usando l'account Google Workspace che hai indicato quando ti sei aggiunto come trusted tester.

    Vai a Google Chat

  2. Fai clic su Nuova chat.
  3. Nel campo Aggiungi una o più persone, digita il nome del tuo Chat.
  4. Seleziona la tua app Chat dai risultati. Un annuncio diretto si apre il messaggio.

  5. Nel nuovo messaggio diretto con l'app, digita Hello e premi enter.

    L'app Dialogflow Chat risponde con l'introduzione per trovare le regole.

  6. Completa il test facendo in modo che esempio di conversazione di prova.

Esempio di conversazione di prova

Per testare l'app Dialogflow CX Chat nella Nella console di Dialogflow CX o in Google Chat, avvia la seguente conversazione. La spiegazione ti aiuta a comprendere in che modo l'agente Dialogflow CX interpreta le il linguaggio naturale dell'utente e produce la propria risposta in linguaggio naturale in ogni passaggio della conversazione. Questa conversazione di esempio si basa sul agente predefinito chiamata Viaggi: noleggio auto.

Dialog Spiegazione
Utente finale: Gentile
Agent: Ciao! Sono l'agente virtuale di noleggio auto. Posso ti aiuta ad avviare una nuova prenotazione di auto a noleggio. Come posso aiutarti oggi?
  1. La route Intent di benvenuto predefinito nel flusso di avvio predefinito.
  2. Il fulfillment per questo gestore dello stato ("Ciao! Sono...") viene aggiunto alla coda di risposte.
  3. L'agente invia la coda di risposte all'utente finale.
Utente finale:voglio noleggiare un'auto.
Agent: Dove vuoi ritirare il veicolo?
  1. La route per intent car_rental.reservation_create nella pagina iniziale.
  2. La sessione passa alla pagina Luogo di ritiro.
  3. Il modulo della pagina Luogo di ritiro non è completo, pertanto l'agente utilizza il parametro pickup_location per chiedere all'utente ("Dove vuoi ritirare..."), che viene aggiunto alla coda delle risposte.
  4. L'agente invia la coda di risposte all'utente finale.
Utente finale: Las Vegas
Agente: Ok, il ritiro sarà a Las Vegas.
Agent: Il punto di consegna è diverso da quello punto di ritiro?
  1. L'input dell'utente finale riempie il campo pickup_location richiesto dall'agente nella versione precedente la conversazione.
  2. L'intent car_rental.return_different_location nel flusso di avvio predefinito corrisponde.
  3. Il percorso di completamento del modulo nella pagina Luogo di ritiro viene valutato e chiamato. Ha un fulfillment ("Ok, il tuo ritiro..."), che viene aggiunto alla coda di risposte con i riferimenti ai parametri risolti in i valori effettivi forniti dall'utente finale.
  4. La sessione passa alla pagina Conferma sede.
  5. La pagina Confirm Location (Conferma località) contiene un fulfillment di voci ("Il punto di consegna è diverso..."), che viene aggiunto alla coda delle risposte.
  6. L'agente invia la coda di risposte all'utente finale.
Utente finale:sì. Farò scendere l'auto a Los Angeles.
Agent: Ok, il trasferimento sarà a Los Angeles.
Agent: Che data e ora vuoi ritirare il veicolo?
  1. L'intent car_rental.return_different_location nel flusso di avvio predefinito corrisponde.
  2. La sessione passa alla pagina Luogo di riconsegna.
  3. L'input dell'utente finale riempie il campo drop_off_location richiesto dall'agente nella versione precedente la conversazione.
  4. Il percorso di completamento del modulo nella pagina Luogo di consegna viene valutato e chiamato. Ha un evasione degli ordini ("Ok, la consegna..."), che viene aggiunto alla coda delle risposte.
  5. La sessione passa alla pagina Durata del noleggio.
  6. La pagina Durata del noleggio contiene valori del modulo incompleti, quindi richiede all'utente il parametro pickup_date_time ("La data e l'ora che vuoi ritirare..."), che viene aggiunto alla coda delle risposte.
  7. L'agente invia la coda di risposte all'utente finale.
Utente finale:vorrei ritirare l'auto il 5 marzo a mezzogiorno.
Agent: A che data e ora vuoi far scendere il veicolo?
  1. L'input dell'utente finale compila il campo pickup_date_time. richiesto dall'agente nella versione precedente la conversazione.
  2. Nella pagina Durata del noleggio manca un altro valore del modulo, quindi richiede all'utente il parametro drop_off_date_time ("In che data e ora vuoi riconsegnare..."), che viene aggiunto alla coda delle risposte.
  3. L'agente invia la coda di risposte all'utente finale.
Utente finale:15 marzo a mezzogiorno.
Agent: Quindi, per conferma:

Potrai ritirare il veicolo tra Las Vegas 2024-03-05 12:00:00 e lasciarlo aperto a Los Angeles 15/03/2024 12:00:00

Va bene?
  1. L'input dell'utente finale riempie il campo drop_off_date_time richiesto dall'agente nella versione precedente la conversazione.
  2. La sessione passerà alla pagina Conferma durata del noleggio.
  3. La pagina Conferma la durata del noleggio ha un completamento dell'offerta ("Per conferma..."), che viene aggiunto alla coda delle risposte.
  4. L'agente invia la coda di risposte all'utente finale.
Utente finale:sì, grazie.
Agent: Ottimo! Ora scegliamo un veicolo.
Agent: Vuole un'economia o un lusso veicolo?
  1. L'intent small_talk.confirmation.yes percorso nella pagina Conferma la durata del noleggio.
  2. L'agente conferma la scelta dell'utente con un messaggio ("Bene. Ora scegliamo..."), che viene aggiunto alla coda delle risposte.
  3. La sessione passa alla pagina Disambiguazione del veicolo.
  4. Il modulo della pagina Disambiguazione del veicolo non è completo, pertanto l'agente usa il parametro vehicle_type per chiedere all'utente ("Ti piacerebbe un'offerta economica o un lusso..."), che viene aggiunto alla coda delle risposte.
  5. L'agente invia la coda di risposte all'utente finale.
Utente finale:economico.
Agent: Vuoi il camion dei Piatti o l'Auto di Cymbal?
  1. L'intent $session.params.vehicle_type="economy_vehicle" corrisponde alla route.
  2. La sessione passerà alla pagina Opzioni economiche.
  3. La pagina Opzioni economiche include una voce di completamento della voce ("Ti piacerebbe..."), che viene aggiunto alla coda delle risposte.
  4. L'agente invia la coda di risposte all'utente finale.
Utente finale:Cymbal Cam.
Agent: Il camion di Cymbal costa 50,33 $al giorno. Può ospitare fino a 4 persone ed è dotato di radio AM/FM. Vuoi procedere con il pagamento?
Utente finale:sì, grazie.
  1. L'intent $session.params.vehicle_type="Cymbal Transport" la route corrisponde e il parametro vehicle_model è compilato.
  2. La sessione passerà alla pagina Conferma il camion di Cymbal.
  3. La pagina Conferma Cymbal Cam ha una distribuzione per l'accesso ("Il camion di Cymbal costa 50,33 $al giorno..."), che viene aggiunto alla coda delle risposte.
  4. L'agente invia la coda di risposte all'utente finale.
  5. La risposta dell'utente corrisponde a small_talk.confirmation.yes percorso.
Agent: Che tipo di carta utilizzerai?
Utente finale: Altostrat
Agent: Inserisci il numero della carta.
Utente finale: 1234 1234 1234 1234
Agent: Come si chiama la carta?
Utente finale: Carlo
Agent: Qual è la via di fatturazione?
Utente finale: 1800 Amphibious Blvd. Mountain View, CA
Agent: Qual è il codice postale di fatturazione?
Utente finale: 94045
Agent: Sceglierai la Cymbal Car a Las Vegas, 2024-03-05 12:00:00 e lasciandolo lì, 15-03-2024 12:00:00. Il totale per questo viaggio sarà € 175,38
Agente: Grazie per aver noleggiato da noi e buona giornata.
  1. La sessione passa alla pagina Pagamento.
  2. Il modulo di pagamento non è completo e quindi richiede l'intervento dell'agente l'utente per card_type, card_number, billing_name, billing_street_address, e i parametri billing_zip_code ("Quale tipo di carta sarà..."), che vengono aggiunti in sequenza alla coda di risposta e inviati come l'utente risponde. Le risposte dell'utente impostano ogni valore parametro.
  3. La sessione passa alla pagina di conferma del noleggio.
  4. La pagina Conferma noleggio contiene un completamento dell'accesso ("Ok, il ritiro sarà..."), che viene aggiunto alla coda delle risposte.
  5. L'agente invia la coda di risposte all'utente finale.
  6. La sessione passa alla pagina Fine sessione.

Inviare messaggi della scheda da Dialogflow

Dialogflow può rispondere con text o messaggi card. Per rispondere con una scheda , specificalo come messaggio payload personalizzato nel fulfillment.

Il seguente JSON mostra come inviare un messaggio carta come payload personalizzato in distribuzione:

json

{
  'cardsV2': [{
    'cardId': 'createCardMessage',
    'card': {
      'header': {
        'title': 'A card message!',
        'subtitle': 'Sent from Dialogflow',
        'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
        'imageType': 'CIRCLE'
      },
      'sections': [
        {
          'widgets': [
            {
              'buttonList': {
                'buttons': [
                  {
                    'text': 'Read the docs!',
                    'onClick': {
                      'openLink': {
                        'url': 'https://developers.google.com/workspace/chat'
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

Limiti e considerazioni

  • Eventi di interazione via chat hanno un supporto limitato e alcune considerazioni:
      .
    • Le seguenti tipi di eventi di interazione sono supportati:
        .
      • MESSAGE
      • ADDED_TO_SPACE
      • CARD_CLICKED
    • Per gli eventi MESSAGE o ADDED_TO_SPACE, l'input della query inviato L'agente Dialogflow corrisponde al valore del campo argumentText in il messaggio di Chat. Se il messaggio include un comando slash, il valore di al suo posto viene utilizzato il campo text.
    • Per gli eventi CARD_CLICKED, l'input della query inviato all'agente Dialogflow ha il formato CARD_CLICKED.functionName, dove functionName corrisponde al valore del campo function della Oggetto Azione collegato all'elemento della scheda interattiva (come un pulsante).
    • Payload JSON completo di ogni evento di interazione di Chat viene inviato a Dialogflow come payload personalizzato nel parametro di query, è accessibile con un Webhook Dialogflow eseguendo una query sul valore del campo WebhookRequest.payload.
  • Considerazioni per rispondere comandi slash e ricezione di dati da schede o finestre di dialogo:
    • Quando le app Dialogflow Chat ricevono un messaggio con una barra , l'input della query contiene solo il valore del campo text. Il campo text inizia con il nome del comando slash (ad esempio, /command), che puoi utilizzare per configurare l'intent di un agente Dialogflow per rilevare un comando slash.
    • Se l'agente Dialogflow deve elaborare Payload JSON dell'evento di interazione chat, può farlo utilizzando un Webhook Dialogflow per ispezionare il payload personalizzato nel parametro di query.
    • Per visualizzare una finestra di dialogo dalla l'agente Dialogflow risponde con un singolo payload JSON personalizzato che include un messaggio contenente un DIALOG risposta all'azione.
    • Per elaborare i dati inseriti dalle schede, l'agente Dialogflow può rilevare intent che iniziano con il testo CARD_CLICKED e rispondono con un un unico payload JSON personalizzato contenente azione.
  • Le anteprime dei link non sono supportate.
  • Se l'agente Dialogflow risponde con un solo messaggio, quest'ultimo viene inviato a Google Chat in modo sincrono. Se l'agente Dialogflow risponde con più messaggi, tutti i messaggi vengono inviati a Chat in modo asincrono chiamando create nella risorsa spaces.messages nell'API Chat una volta per ogni .
  • Quando utilizzi l'integrazione di Dialogflow CX con Chat, è necessario impostare l'agente Dialogflow e l'app Chat nello stesso progetto Google Cloud. Se devi configurare Dialogflow e Chat in diversi progetti Cloud, puoi configurare un server intermedio per facilitare la connessione. Per scoprire come fare, vedi questo Esempio di integrazione di Chat per Dialogflow CX su GitHub.

Risoluzione dei problemi

Quando un'app Google Chat o card restituisce un errore, L'interfaccia di Chat mostra il messaggio "Si è verificato un problema". o "Impossibile elaborare la richiesta". A volte, l'UI di Chat non mostra alcun messaggio di errore, ma l'app Chat o la scheda restituisce un risultato inaspettato; Ad esempio, il messaggio di una scheda potrebbe non vengono visualizzate.

Anche se un messaggio di errore potrebbe non essere visualizzato nella UI di Chat, messaggi di errore descrittivi e dati di log che ti aiuteranno a correggere gli errori quando il logging degli errori per le app di chat è attivo. Per assistenza con la visualizzazione, il debug e la correzione degli errori, consulta Risolvere i problemi e correggere gli errori di Google Chat.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi per utilizzate in questo tutorial, ti consigliamo di eliminare progetto cloud.

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse. Clic Menu > IAM e Amministratore > Gestisci risorse.

    Vai a Resource Manager .

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare e fai clic su Elimina .
  3. Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminarlo. del progetto.
  • Dialogflow CX prende una macchina a stato di progettazione degli agenti Dialogflow, che offre dati chiari ed espliciti controllo su una conversazione, una migliore esperienza per l'utente finale e un flusso di lavoro di sviluppo. Quando si crea un Dialogflow Google Chat, ti consigliamo di utilizzare Dialogflow CX.
  • Dialogflow ES è un altro modo per utilizzare Dialogflow con un'app di Chat.