Preparazione del formato di risposta - Amazon Lex

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 è PlainTextCustomPayload, 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 è PlainTextCustomPayload, 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 un value 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'sessionStateoggetto.

{` "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'sessionStateoggetto 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'confirmationStateintento su. Confirmed Se l'utente risponde «no», Amazon Lex V2 imposta l'confirmationStateintento 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 FailedFulfilled, eInProgress.

"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name": "BookFlight", "state": "Failed | Fulfilled | InProgress" } }