

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 Lambdaformato di risposta per Lex V2
<a name="lambda-response-format"></a>

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:

## sessionState
<a name="lambda-response-sessionstate"></a>

Lo stato della conversazione tra l'utente e il bot Amazon Lex V2 che desideri restituire. [Stato della sessione](lambda-common-structures.md#lambda-session-state)Per ulteriori dettagli sulla struttura, consulta. Questo campo è sempre obbligatorio.

## messages
<a name="lambda-response-messages"></a>

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`, o`SSML`, scrivi il messaggio che desideri restituire al cliente nel `content` campo. Se `contentType` lo fornisci`ImageResponseCard`, 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` o`ConfirmIntent`.

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](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_ImageResponseCard.html).

  `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`, o`SSML`.
+ **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.

## requestAttributes
<a name="lambda-response-requestattributes"></a>

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](context-mgmt-request-attribs.md). Questo campo è facoltativo.

## Campi obbligatori nella risposta
<a name="lambda-response-required"></a>

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:

### Delegato
<a name="lambda-response-delegate"></a>

**Delegate** consente ad Amazon Lex V2 di determinare il passaggio successivo. Non sono richiesti altri campi.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "Delegate"
    }
}
```

### ElicitIntent
<a name="lambda-response-elicitintent"></a>

**ElicitIntent**richiede 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?"
        }
    ]
}
```

### ElicitSlot
<a name="lambda-response-elicitslot"></a>

**ElicitSlot**richiede 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"
        }
    }
}
```

### ConfirmIntent
<a name="lambda-response-confirmintent"></a>

**ConfirmIntent**conferma 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?"
        }
    ]
}
```

### Chiudi
<a name="lambda-response-close"></a>

**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`, e`InProgress`.

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