Creazione di un intent con parametri

Ora è necessario un appuntamento che possa fissare un appuntamento per il negozio di biciclette. A differenza del primo orario, che restituisce solo la risposta statica "Siamo aperti dalle 9:00 alle 18:00 tutti i giorni. C'è qualcos'altro che posso fare per te?", il nuovo intento deve essere quello di poter eseguire un insieme più complesso di attività.

Esaminiamo la seguente interazione tra l'utente e l'agente:

Utente: Buongiorno.

Agente: Benvenuto. Posso dirti gli orari di apertura o posso fissare un appuntamento. Quale preferisci?

Utente: devo fissare un appuntamento alle 15 di oggi.

Agente: OK. Ho il tuo appuntamento programmato di mercoledì 1 agosto alle 15:00. A presto! Arrivederci.

Nella finestra di dialogo in alto, l'utente pronuncia Ho bisogno di fissare un appuntamento alle 15:00 di oggi" contenere informazioni importanti, "300" e "oggi", la visita in giornata. La risposta dell'agente include le informazioni su data e ora menzionate nell'espressione utente: "OK. Ho il tuo appuntamento programmato di mercoledì 1 agosto alle 15:00. A presto! Ciao."

Per noi, identificare informazioni importanti dalle frasi è semplice; per le macchine, tuttavia, è un'attività complessa. Dobbiamo dare agli intenti la possibilità di estrarre informazioni importanti, i parametri, dalle frasi degli utenti.

Estrazione delle informazioni utilizzando entità e parametri

Dialogflow utilizza concetti noti come entità e parametri per estrarre informazioni target dalle frasi degli utenti e convertirle in un insieme di parametri, che possono essere elaborati da altre funzioni o sistemi per eseguire diverse attività.

Per creare un nuovo intent con i parametri:

  1. Crea un intent denominato Make Appointment.
  2. Nella sezione Frasi di addestramento, aggiungi la seguente frase di addestramento:

    I need to make an appointment at 3 PM today.

  3. Nella tabella Azioni e parametri, verifica che siano state visualizzate le entità di sistema @sys.date e @sys.time.

  4. Nella tabella Risposta di testo, aggiungi la seguente frase di risposta:

    Got it. I have your appointment scheduled on $date at $time. See you soon. Good-bye.

  5. Fai clic su SALVA.

    Figura 5. Diagramma di flusso che mostra l'aggiunta dell'intent Prendi appuntamento.

Con questa configurazione, l'intent Prendi appuntamento esamina le frasi degli utenti, acquisisce tutte le parole mappate alle entità di sistema integrate di Dialogflow @sys.date e @sys.time e inserisce questi valori acquisiti nei parametri $date e $time. Di conseguenza, nella risposta possiamo utilizzare $date e $time per fare riferimento ai valori di data e ora acquisiti dalle frasi dell'utente: "OK. Ho l'appuntamento fissato per $date alle ore $time. A presto! Ciao."

Dialogflow consente inoltre di creare entità personalizzate per l'estrazione di parametri non comuni o senza categoria. Tuttavia, nel nostro scenario, l'uso di entità di sistema è sufficiente per acquisire parametri tipici come l'ora e la data. Per ulteriori informazioni sulle entità, consulta il documento Entità.

Ottenere i parametri richiesti utilizzando la compilazione a slot

Seguendo la best practice della sezione precedente, ora dobbiamo fornire più frasi di addestramento oltre a quella in corso, "Ho bisogno di fissare un appuntamento oggi alle 15:00."

Aggiungi le seguenti frasi di addestramento:

  • Can I schedule service for 4 PM tomorrow?
  • Can I set up an appointment for noon on Friday?

Finora tutte le frasi di addestramento contengono le informazioni su data e ora: "15:00 di oggi" "16:00 di domani" &"mezzogiorno di venerdì." Tuttavia, nel mondo reale, le frasi degli utenti potrebbero non includere sempre tutti i parametri necessari. Aggiungi le seguenti frasi di addestramento:

  • Can you fix my road bike?
  • My bike is broken.
  • I'd like to get my bike fixed, I have a mountain bike that needs servicing.
  • I need to fix my bike today.
  • I'd like to schedule an appointment on this Thursday.

Tutte le frasi precedenti indicano che l'utente vuole pianificare un appuntamento; pertanto, il nostro nuovo intent deve essere associato a tali frasi per gestire il compito di pianificare un appuntamento. Tuttavia, in ciascuna di queste frasi mancano le informazioni sull'ora, sulle informazioni o su entrambe. Frasi come queste sono spiacevoli perché l'intent non può pianificare un appuntamento senza le informazioni su data e ora.

Dialogflow fornisce una funzionalità chiamata slot-fill che garantisce che un intent riceva tutte le informazioni necessarie da un utente. Per attivare questa funzionalità, devi contrassegnare i parametri come obbligatori.

Quando un intent ha parametri obbligatori, ma viene abbinato a un'espressione che manca a uno qualsiasi dei parametri richiesti, l'intent pone domande per recuperare tutti i parametri richiesti dall'utente. Diamo un'occhiata alla finestra di dialogo seguente:

Utente: Buongiorno.

Agente: Benvenuto. Posso dirti gli orari di apertura o posso fissare un appuntamento. Quale preferisci?

Utente: devo riparare la bici.

Agente: Ok, posso aiutarti. In che giorno vuoi venire?

Utente: Oggi.

Agente: E a che ora preferisce?

Utente: 15:00.

Agente: OK. Ho il tuo appuntamento programmato di mercoledì 1 agosto alle 15:00. A presto! Arrivederci.

Per rendere obbligatori i parametri $time e $date e fornire risposte rapide per i parametri:

  1. Fai clic sull'intent Fissa un appuntamento.
  2. Nella tabella Azioni e parametri, seleziona le caselle REQUIREDper i parametri $time e $date. Viene creata una colonna denominata PROMPTS.
  3. Se il parametro $date si trova sotto il parametro $time nella tabella, trascina la riga del parametro $date sopra il parametro $time. Il posizionamento nella tabella determina l'ordine in cui vengono poste le domande del prompt.
  4. Per il parametro $date, fai clic sul link Definisci richieste nella colonna PROMPTS e aggiungi le seguenti richieste:
    • Okay, I can help you with that. What day do you want to come in?
    • Sure, what day are you coming in?
    • Okay, what day will work for you?
  5. Per il parametro $time, fai clic sul link Definisci richieste e aggiungi le seguenti richieste:
    • And what time works for you?
    • What time?
    • Now, what time do you want the appointment?
  6. Fai clic su SALVA.
  7. Verifica la configurazione della compilazione degli slot utilizzando il simulatore nella console Dialogflow.

    Figura 6. Diagramma di flusso che mostra i prompt di riempimento slot per i parametri obbligatori.

Ora è nostra intenzione ottenere informazioni su data e ora non appena un utente indica la necessità di prendere un appuntamento. Tuttavia, al momento l'intent risponde solo con una risposta di simulazione; non è previsto alcun appuntamento effettivo. Dobbiamo creare un processo di backend, fulfillment, che consente di pianificare un appuntamento su Google Calendar.

Nella sezione successiva, vedremo come creare fulfillment per l'intent Prendi appuntamento.