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à.
Preparazione del formato di risposta
Il secondo passaggio per integrare una funzione Lambda nel tuo bot Amazon Lex V2 consiste nel comprendere i campi nella risposta della funzione Lambda e determinare quali parametri desideri manipolare. Il seguente oggetto JSON mostra il formato generale di una risposta Lambda restituita ad Amazon Lex V2:
{ "sessionState": { // see Stato della sessione for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }, ... ], "requestAttributes": {string
:string
, ... } }
Ogni campo della risposta è descritto di seguito:
Lo stato della conversazione tra l'utente e il bot Amazon Lex V2 che desideri restituire. Stato della sessionePer ulteriori dettagli sulla struttura, consulta. Questo campo è sempre obbligatorio.
Un elenco di messaggi che Amazon Lex V2 restituisce al cliente per la fase successiva della conversazione. Se il messaggio contentType
che fornisci è PlainText
CustomPayload
, oSSML
, scrivi il messaggio che desideri restituire al cliente nel content
campo. Se contentType
lo fornisciImageResponseCard
, inserisci i dettagli della carta nel imageResponseCard
campo. Se non fornisci messaggi, Amazon Lex V2 utilizza il messaggio appropriato definito al momento della creazione del bot.
Il messages
campo è obbligatorio se dialogAction.type
è ElicitIntent
oConfirmIntent
.
Ogni elemento dell'elenco è una struttura nel formato seguente, contenente informazioni su un messaggio da restituire all'utente. Ecco un esempio:
{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }
Di seguito viene fornita una descrizione per ogni campo:
-
contentType: il tipo di messaggio da utilizzare.
CustomPayload
— Una stringa di risposta che è possibile personalizzare per includere dati o metadati per l'applicazione.ImageResponseCard
— Un'immagine con pulsanti selezionabili dal cliente. Vedi ImageResponseCardper ulteriori informazioni.PlainText
— Una stringa di testo semplice.SSML
— Una stringa che include Speech Synthesis Markup Language per personalizzare la risposta audio. -
content — Il messaggio da inviare all'utente. Utilizza questo campo se il tipo di messaggio è
PlainText
CustomPayload
, oSSML
. -
imageResponseCard— Contiene la definizione della scheda di risposta da mostrare all'utente. Utilizza questo campo se il tipo di messaggio è
ImageResponseCard
. Esegue il mapping su una struttura contenente i seguenti campi:-
title: il titolo della scheda di risposta.
-
sottotitolo: la richiesta all'utente di scegliere un pulsante.
-
ImageURL — Un collegamento a un'immagine per la scheda.
-
buttons — Un elenco di strutture contenenti informazioni su un pulsante. Ogni struttura contiene un
text
campo con il testo da visualizzare e unvalue
campo con il valore da inviare ad Amazon Lex V2 se il cliente seleziona quel pulsante. Puoi includere fino a tre pulsanti.
-
Una struttura contenente gli attributi specifici della richiesta per la risposta al cliente. Per ulteriori informazioni, consulta Impostazione degli attributi della richiesta. Questo campo è facoltativo.
Campi obbligatori nella risposta
Come minimo, la risposta Lambda deve includere sessionState
un oggetto. All'interno di ciò, fornisci un dialogAction
oggetto e specifica il type
campo. A seconda type
di dialogAction
quello fornito, potrebbero esserci altri campi obbligatori per la risposta Lambda. Questi requisiti sono descritti di seguito, insieme a esempi di funzionamento minimi:
Delegate consente ad Amazon Lex V2 di determinare il passaggio successivo. Non sono richiesti altri campi.
{ "sessionState": { "dialogAction": { "type": "Delegate" } }
ElicitIntentrichiede al cliente di esprimere un'intenzione. È necessario includere almeno un messaggio nel messages
campo per sollecitare l'individuazione di un intento.
{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }
ElicitSlotrichiede al cliente di fornire un valore di slot. È necessario includere il nome dello slot nel slotToElicit
campo dell'oggetto. dialogAction
È inoltre necessario includere il name
di intent
nell'sessionState
oggetto.
{` "sessionState": { "dialogAction": { "slotToElicit":
"OriginCity"
, "type": "ElicitSlot" }, "intent": { "name":"BookFlight"
} } }
ConfirmIntentconferma i valori degli slot del cliente e se l'intento è pronto per essere soddisfatto. È necessario includere il name
di intent
nell'sessionState
oggetto e il codice slots
da confermare. È inoltre necessario includere almeno un messaggio nel messages
campo per chiedere all'utente la conferma dei valori dello slot. Il messaggio dovrebbe richiedere una risposta «sì» o «no». Se l'utente risponde «sì», Amazon Lex V2 imposta l'confirmationState
intento su. Confirmed
Se l'utente risponde «no», Amazon Lex V2 imposta l'confirmationState
intento su. Denied
{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name":
"BookFlight"
, "slots": {"DepartureDate"
: { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } },"DestinationCity"
: { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } },"OriginCity"
: { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }
Close termina il processo di adempimento dell'intento e indica che non sono previste ulteriori risposte da parte dell'utente. È necessario includere la name
e state
del intent
nell'oggetto. sessionState
Gli stati di intento compatibili sono Failed
Fulfilled
, eInProgress
.
"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name":
"BookFlight"
, "state": "Failed | Fulfilled | InProgress" } }