Gestione dei messaggi - Amazon Lex versione 1

Se utilizzi Amazon Lex V2, consulta invece la guida Amazon Lex V2.

 

Se utilizzi Amazon Lex V1, ti consigliamo di aggiornare i bot ad Amazon Lex V2. Non stiamo più aggiungendo nuove funzionalità alla V1 e consigliamo vivamente di utilizzare la V2 per tutti i nuovi bot.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione dei messaggi

Quando crei un bot, puoi configurare messaggi illustrativi o informativi da inviare al client. Considerare i seguenti esempi:

  • Puoi configurare il tuo bot con il prompt illustrativo seguente:

    I don't understand. What would you like to do?

    Amazon Lex invia questo messaggio al cliente se non comprende le intenzioni dell'utente.

     

  • Supponiamo che venga creato un bot per supportare un intento denominato OrderPizza. Per un ordine di pizza, gli utenti devono fornire informazioni quali le dimensioni della pizza, i contorni e il tipo di crosta. È possibile configurare i seguenti prompt:

    What size pizza do you want? What toppings do you want? Do you want thick or thin crust?

    Dopo aver determinato l'intenzione dell'utente di ordinare una pizza, Amazon Lex invia questi messaggi al cliente per ottenere informazioni dall'utente.

In questa sezione viene descritta la progettazione delle interazioni dell'utente nella configurazione del tuo bot.

Tipi di messaggi

Un messaggio può essere un prompt o un'istruzione.

  • Un prompt è normalmente una domanda che prevede la risposta dell'utente.

  • Un'istruzione è informativa. Non prevede una risposta.

Un messaggio può includere riferimenti a slot, attributi di sessione e attributi di richiesta. In fase di esecuzione, Amazon Lex sostituisce questi riferimenti con valori effettivi.

Per fare riferimento ai valori slot che sono stati impostati, utilizza la sintassi seguente:

{SlotName}

Per fare riferimento agli attributi di sessione, utilizza la sintassi seguente:

[SessionAttributeName]

Per fare riferimento agli attributi di richiesta, utilizza la sintassi seguente:

((RequestAttributeName))

I messaggi possono includere valori di slot, attributi di sessione e attributi di richiesta.

Supponiamo di aver configurato il seguente seguente, riportati di di di di di di di di di di, riportati di di di di di di di di OrderPizza di di di di di

"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes."

Questo messaggio fa riferimento sia ad attributi slot (PizzaTopping) sia ad attributi di sessione (FirstName e DeliveryTime). In fase di esecuzione, Amazon Lex sostituisce questi segnaposti con valori e restituisce al client il seguente messaggio:

"Hey John, your cheese pizza will arrive in 30 minutes."

Per includere parentesi quadre ([]) o graffe ({}) in un messaggio, utilizza il carattere escape della barra rovesciata (\). Ad esempio, il messaggio seguente include parentesi graffe e parentesi quadre:

\{Text\} \[Text\]

Il testo restituito all'applicazione del client ha questo aspetto:

{Text} [Text]

Per informazioni sugli attributi di sessione, consulta le operazioni API di runtime PostText e PostContent. Per un esempio, consulta Prenota viaggio.

Le funzioni Lambda possono anche generare messaggi e restituirli ad Amazon Lex per inviarli all'utente. Se si aggiungono funzioni Lambda quando si configura l'intento, è possibile creare messaggi in modo dinamico. Fornendo i messaggi durante la configurazione del bot, è possibile eliminare la necessità di creare un prompt nella funzione Lambda.

Contesti per la configurazione di messaggi

Durante la creazione del bot, è possibile creare messaggi in diversi contesti, ad esempio richieste di chiarimento nel bot, richieste per i valori degli slot e messaggi relativi agli intenti. Amazon Lex sceglie un messaggio appropriato in ogni contesto da restituire all'utente. Puoi fornire un gruppo di messaggi per ogni contesto. In tal caso, Amazon Lex sceglie a caso un messaggio dal gruppo. Puoi specificare anche il formato del messaggio oppure raggruppare i messaggi. Per ulteriori informazioni, consulta Formati di messaggio supportati.

Se hai una funzione Lambda associata a un intento, puoi sovrascrivere qualsiasi messaggio configurato in fase di compilazione. Tuttavia, non è necessaria una funzione Lambda per utilizzare nessuno di questi messaggi.

Messaggi bot

Puoi configurare il tuo bot con richieste di chiarimento e messaggi di fine sessione. In fase di esecuzione, Amazon Lex utilizza la richiesta di chiarimenti se non comprende l'intento dell'utente. Puoi configurare il numero di volte in cui Amazon Lex richiede chiarimenti prima di inviare il messaggio di fine sessione. Puoi configurare i messaggi a livello di bot nella sezione Gestione degli errori della console Amazon Lex, come nell'immagine seguente:

Sezione di gestione degli errori nella scheda dell'editor della console. È possibile specificare richieste di chiarimento e una frase di riaggancio.

Con l'API, si possono configurare messaggi impostando i campi clarificationPrompt e abortStatement nell'operazione PutBot.

Se utilizzi una funzione Lambda con un intento, la funzione Lambda potrebbe restituire una risposta che indirizza Amazon Lex a chiedere l'intento di un utente. Se la funzione Lambda non fornisce tale messaggio, Amazon Lex utilizza la richiesta di chiarimenti.

Prompt di slot

È necessario specificare almeno un messaggio di prompt per ognuno degli slot obbligatori in un intento. In fase di esecuzione, Amazon Lex utilizza uno di questi messaggi per richiedere all'utente di fornire un valore per lo slot. Ad esempio, per uno slot cityName, il seguente è un prompt valido:

Which city would you like to fly to?

Puoi impostare uno o più prompt per ogni slot utilizzando la console. Puoi anche creare gruppi di prompt utilizzando l'operazione PutIntent. Per ulteriori informazioni, consulta Gruppi di messaggi.

Risposte

Nella console, utilizza la sezione delle risposte per creare conversazioni dinamiche e coinvolgenti per il tuo bot. Puoi creare uno o più gruppi di messaggi per una risposta. In fase di esecuzione, Amazon Lex crea una risposta selezionando un messaggio da ciascun gruppo di messaggi. Per ulteriori informazioni sui gruppi di messaggi, consulta Gruppi di messaggi.

Ad esempio, il primo gruppo di messaggi può contenere diversi saluti: "Salve", "Ciao" e "Saluti". Il secondo gruppo di messaggi può contenere diverse forme di presentazioni: "Io sono il bot per le prenotazioni" e "Questo è il bot per le prenotazioni". Un terzo gruppo di messaggi può comunicare le funzionalità del bot: "Posso noleggiare un'auto o prenotare un albergo", "Puoi noleggiare un'auto o prenotare un albergo" e "Posso aiutarti a noleggiare un'auto e prenotare un albergo".

Lex utilizza un messaggio da ogni gruppo di messaggi e crea risposte dinamiche dando origine a una conversazione. Ad esempio, un'interazione potrebbe essere la seguente:

Una possibile conversazione con un bot.

Un'altra potrebbe essere la seguente:

Un'altra possibile conversazione con un bot.

In entrambi i casi, l'utente può rispondere con un nuovo intento, ad esempio l'intento BookCar o BookHotel.

È possibile impostare il bot in modo che ponga una domanda di follow-up nella risposta. Ad esempio, per l'interazione precedente, puoi creare un quarto gruppo di messaggi con le domande seguenti: "Posso essere d'aiuto con un'auto o un albergo?", "Desideri effettuare una prenotazione ora?" e "C'è qualcosa che posso fare per te?". Per messaggi che includono "No" come risposta, puoi creare un prompt di follow-up. Il seguente seguente seguente seguente seguente seguente seguente seguente seguente seguente seguente seguente seguente seguente

Richiesta di follow-up in una conversazione con un bot.

Per creare un prompt di follow-up, scegli Attendi risposta utente. Successivamente digita il messaggio o i messaggi che desideri inviare quando un utente dice "No". Quando crei una risposta da utilizzare come prompt di follow-up, è necessario specificare anche un'istruzione se la risposta all'istruzione è "No". Vedi l'immagine seguente per un esempio:

Configurazione dei messaggi per quando un utente dice «no».

Per aggiungere risposte a un intento con l'API, utilizza l'operazione PutIntent. Per specificare una risposta, imposta il campo conclusionStatement nella richiesta PutIntent. Per impostare un prompt di follow-up, imposta il campo followUpPrompt e includi l'istruzione da inviare se l'utente dice "No". Non puoi impostare entrambi i campi conclusionStatement e followUpPrompt nello stesso intento.

Formati di messaggio supportati

Quando usi l'PostTextoperazione o quando usi l'PostContentoperazione con l'Acceptintestazione impostata sutext/plain;charset=utf8, Amazon Lex supporta i messaggi nei seguenti formati:

  • PlainText—Il messaggio contiene testo UTF-8 semplice.

  • SSML—Il messaggio contiene testo formattato per l'output vocale.

  • CustomPayload—Il messaggio contiene un formato personalizzato che hai creato per il tuo cliente. Puoi definire il payload in base alle esigenze della tua applicazione.

  • Composite—Il messaggio è una raccolta di messaggi, uno per ogni gruppo di messaggi. Per ulteriori informazioni sui gruppi di messaggi, consulta Gruppi di messaggi.

Per impostazione predefinita, Amazon Lex restituisce uno qualsiasi dei messaggi definiti per un determinato prompt. Ad esempio, se definisci cinque messaggi per ottenere un valore di slot, Amazon Lex sceglie uno dei messaggi a caso e lo restituisce al client.

Se desideri che Amazon Lex restituisca un tipo specifico di messaggio al client in una richiesta in fase di esecuzione, imposta il parametro dellax-amzn-lex:accept-content-types richiesta. La risposta si limita al tipo o ai tipi richiesti. Se è presente più di un messaggio del tipo specificato, Amazon Lex ne restituisce uno a caso. Per ulteriori informazioni sull'intestazione x-amz-lex:accept-content-types, consulta Impostazione del tipo di risposta.

Gruppi di messaggi

Un gruppo di messaggi è un insieme di risposte adatte a un particolare prompt. Utilizza gruppi di messaggi quando desideri che il tuo bot crei risposte dinamiche dando origine a una conversazione. Quando Amazon Lex restituisce una risposta all'applicazione client, sceglie casualmente un messaggio da ciascun gruppo. Puoi creare un massimo di cinque gruppi di messaggi per ogni risposta. Ogni gruppo può contenere un massimo di cinque messaggi. Per esempi su come creare gruppi di messaggi nella console, consulta Risposte.

Per creare un gruppo di messaggi, puoi utilizzare la console o le operazioni PutBot, PutIntent o PutSlotType per assegnare il numero di gruppo a un messaggio. Se non crei un gruppo di messaggi o se crei un solo gruppo di messaggi, Amazon Lex invia un singolo messaggio nelMessage campo. Le applicazioni dei client ricevono più messaggi in una risposta solo quando hai creato più di un gruppo di messaggi nella console oppure quando crei più di un gruppo di messaggi durante la creazione o l'aggiornamento di un intento con l'operazione PutIntent.

Quando Amazon Lex invia un messaggio da un gruppo, ilMessage campo della risposta contiene un oggetto JSON escape che contiene i messaggi. L'esempio seguente mostra i contenuti del campo Message quando include più messaggi.

Nota

L'esempio è stato formattato per la leggibilità. In una risposta non sono contenuti ritorni a capo (CR).

{\"messages\":[ {\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text\"}, {\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text\"}, {\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload\"} ]}

È possibile impostare il formato dei messaggi. Il formato può essere uno dei seguenti:

  • PlainText—Il messaggio è in semplice testo UTF-8.

  • SSML: il messaggio è SSML (Speech Synthesis Markup Language).

  • CustomPayload—Il messaggio è in un formato personalizzato specificato dall'utente.

Per controllare il formato dei messaggi che le operazioni PostContent e PostText restituiscono nel campo Message, imposta l'attributo della richiesta x-amz-lex:accept-content-types. Ad esempio, se si imposta l'intestazione a quanto segue, si ricevono solo messaggi di solo testo e SSML nella risposta:

x-amz-lex:accept-content-types: PlainText,SSML

Se si richiede un formato di messaggio specifico e un gruppo di messaggi non contiene quel messaggio con quel formato, ottieni un'eccezione NoUsableMessageException. Quando usi un gruppo di messaggi per raggruppare i messaggi per tipo, non utilizzare l'intestazione x-amz-lex:accept-content-types.

Per ulteriori informazioni sull'intestazione x-amz-lex:accept-content-types, consulta Impostazione del tipo di risposta.

Schede di risposta

Nota

Le schede di risposta non funzionano con la chat di Amazon Connect. Tuttavia, vedi Aggiungere messaggi interattivi alla chat per funzionalità simili.

Una scheda di risposta contiene un insieme di risposte appropriate per un prompt. Usa le schede di risposta per semplificare le interazioni per i tuoi utenti e aumentare la precisione dei tuoi bot riducendo errori tipografici nelle interazioni di testo. Puoi inviare una scheda di risposta per ogni prompt inviato da Amazon Lex all'applicazione client. Le schede di risposta possono essere utilizzate con Facebook Messenger, Slack, Twilio e le applicazioni del tuo client.

Ad esempio, in un'applicazione per taxi, è possibile configurare un'opzione nella scheda di risposta per "Casa" e impostare il valore sull'indirizzo di casa dell'utente. Quando l'utente seleziona questa opzione, Amazon Lex riceve l'intero indirizzo come testo di input. Vedi l'immagine seguente:

Un esempio di scheda di risposta.

Puoi definire una scheda di risposta per i prompt seguenti:

  • Istruzione di conclusione

  • Prompt di conferma

  • Prompt di follow-up

  • Istruzione di rifiuto

  • Enunciazioni tipo slot

Puoi definire solo una scheda di risposta per ogni prompt.

Puoi configurare le schede di risposta quando crei un intento. Puoi definire una scheda di risposta statica in fase di compilazione utilizzando la console o l'operazione PutIntent. Oppure è possibile definire una scheda di risposta dinamica in fase di esecuzione in una funzione Lambda. Se definisci entrambe le schede di risposta statica e dinamica, la scheda di risposta dinamica ha la precedenza.

Amazon Lex invia le schede di risposta nel formato comprensibile al cliente. Questo trasforma le schede di risposta per Facebook Messenger, Slack e Twilio. Per gli altri clienti, Amazon Lex invia una struttura JSON nellaPostText risposta. Ad esempio, se il client è Facebook Messenger, Amazon Lex trasforma la scheda di risposta in un modello generico. Per ulteriori informazioni sui modelli generici di Facebook Messenger, consulta Modello generico sul sito Web di Facebook. Per un esempio della struttura JSON, consulta Generazione dinamica di schede di risposta.

Puoi utilizzare le schede di risposta solo con l'operazione PostText. Non puoi utilizzare le schede di risposta con l'operazione PostContent.

Definizione di Schede di risposta statica

Definisci le schede di risposta statiche con l'PutBotoperazione o la console Amazon Lex quando crei un intento. Una risposta statica viene definita contemporaneamente all'intento. Utilizza una scheda di risposta statica quando le risposte sono fisse. Supponiamo che stai creando un bot con un intento che ha uno slot per il gusto. Quando definisci lo slot del gusto, devi specificare i prompt, come illustrato nella schermata della console seguente:

Editor dell'intento nella console.

Quando si definiscono i prompt, è possibile associare facoltativamente una scheda di risposta e definire i dettagli all'PutBotoperazione oppure, nella console Amazon Lex, come mostrato nell'esempio seguente:

La console mostra l'editor della scheda di risposta.

A questo punto, supponiamo che il tuo bot sia stato integrato con Facebook Messenger. L'utente può fare clic sui pulsanti per scegliere un gusto, come mostrato nell'illustrazione seguente:

Scheda di risposta su Facebook Messenger.

Per personalizzare il contenuto di una scheda di risposta, si può fare riferimento agli attributi della sessione. In fase di esecuzione, Amazon Lex sostituisce questi riferimenti con valori appropriati tratti dagli attributi della sessione. Per ulteriori informazioni, consulta Impostazione degli attributi di sessione. Per un esempio, consulta Utilizzo di una scheda di risposta.

Generazione dinamica di schede di risposta

Per generare schede di risposta in modo dinamico in fase di esecuzione, utilizza la funzione Lambda di inizializzazione e convalida per l'intento. Usa una scheda di risposta dinamica quando le risposte vengono determinate in fase di esecuzione nella funzione Lambda. In risposta all'input dell'utente, la funzione Lambda genera una scheda di risposta e la restituisce nelladialogAction sezione della risposta. Per ulteriori informazioni, consulta Formato della risposta.

Quella che segue è una risposta parziale di una funzione Lambda che mostra l'responseCardelemento. Questo genera un'esperienza utente simile a quella illustrata nella sezione precedente.

responseCard: { "version": 1, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title": "What Flavor?", "subtitle": "What flavor do you want?", "imageUrl": "Link to image", "attachmentLinkUrl": "Link to attachment", "buttons": [ { "text": "Lemon", "value": "lemon" }, { "text": "Raspberry", "value": "raspberry" }, { "text": "Plain", "value": "plain" } ] } ] }

Per un esempio, consulta Pianifica un appuntamento.