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à.
AWS Lambda formato di risposta per Lex V2
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. Per ulteriori informazioni, consulta ImageResponseCard.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 di richiesta per il tuo bot Lex V2. 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" } }