

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS Lambdaformat de réponse pour Lex V2
<a name="lambda-response-format"></a>

La deuxième étape de l'intégration d'une fonction Lambda dans votre bot Amazon Lex V2 consiste à comprendre les champs de la réponse de la fonction Lambda et à déterminer les paramètres que vous souhaitez manipuler. L'objet JSON suivant montre le format général d'une réponse Lambda renvoyée à Amazon Lex V2 :

```
{
    "sessionState": {
        // see État de la session 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,
        ...
    }
}
```

Chaque champ de la réponse est décrit ci-dessous :

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

État de la conversation entre l'utilisateur et votre bot Amazon Lex V2 que vous souhaitez renvoyer. Voir [État de la session](lambda-common-structures.md#lambda-session-state) pour plus de détails sur la structure. Ce champ est toujours obligatoire.

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

Liste des messages qu'Amazon Lex V2 renvoie au client pour la prochaine étape de la conversation. Si le message `contentType` que vous fournissez est `PlainText``CustomPayload`, ou`SSML`, écrivez le message que vous souhaitez renvoyer au client dans le `content` champ. Si c'est le `contentType` cas`ImageResponseCard`, donnez les détails de la carte dans le `imageResponseCard` champ. Si vous ne fournissez aucun message, Amazon Lex V2 utilise le message approprié défini lors de la création du bot.

Le `messages` champ est obligatoire s'il s'`dialogAction.type`agit de `ElicitIntent` ou`ConfirmIntent`.

Chaque élément de la liste est une structure au format suivant, contenant des informations sur un message à renvoyer à l'utilisateur. Voici un exemple :

```
{
    "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML",
    "content": string,
    "imageResponseCard": {
        "title": string,
        "subtitle": string,
        "imageUrl": string,
        "buttons": [
            {
                "text": string,
                "value": string
            },
            ...
        ]
    }
}
```

Une description de chaque champ est fournie ci-dessous :
+ **ContentType** — Type de message à utiliser.

  `CustomPayload`— Chaîne de réponse que vous pouvez personnaliser pour inclure des données ou des métadonnées pour votre application.

  `ImageResponseCard`— Une image avec des boutons que le client peut sélectionner. Pour plus d’informations, consultez [ImageResponseCard](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_ImageResponseCard.html).

  `PlainText`— Chaîne de texte brut.

  `SSML`— Chaîne qui inclut le langage de balisage de synthèse vocale pour personnaliser la réponse audio.
+ **content** — Le message à envoyer à l'utilisateur. Utilisez ce champ si le type de message est `PlainText``CustomPayload`, ou`SSML`.
+ **imageResponseCard**— Contient la définition de la carte-réponse à montrer à l'utilisateur. Utilisez ce champ si le type de message est`ImageResponseCard`. Correspond à une structure contenant les champs suivants :
  + **title** — Le titre de la carte-réponse.
  + **sous-titre** : invite l'utilisateur à choisir un bouton.
  + **imageURL** — Lien vers l'image de la carte.
  + **boutons** : liste de structures contenant des informations sur un bouton. Chaque structure contient un `text` champ contenant le texte à afficher et un `value` champ contenant la valeur à envoyer à Amazon Lex V2 si le client sélectionne ce bouton. Vous pouvez inclure jusqu'à trois boutons.

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

Structure contenant des attributs spécifiques à la demande pour la réponse au client. Pour plus d’informations, consultez [Configuration des attributs de demande pour votre bot Lex V2](context-mgmt-request-attribs.md). Ce champ est facultatif.

## Champs obligatoires dans la réponse
<a name="lambda-response-required"></a>

Au minimum, la réponse Lambda doit inclure `sessionState` un objet. Dans ce cadre, fournissez un `dialogAction` objet et spécifiez le `type` champ. En fonction `type` de `dialogAction` ce que vous fournissez, il se peut que d'autres champs soient obligatoires pour la réponse Lambda. Ces exigences sont décrites comme suit, accompagnées d'exemples pratiques minimaux :

### Délégué
<a name="lambda-response-delegate"></a>

**Delegate** permet à Amazon Lex V2 de déterminer l'étape suivante. Aucun autre champ n'est obligatoire.

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

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

**ElicitIntent**invite le client à exprimer son intention. Vous devez inclure au moins un message dans le `messages` champ pour susciter une intention.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "ElicitIntent"
    },
    "messages": [
        {
            "contentType": PlainText,
            "content": "How can I help you?"
        }
    ]
}
```

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

**ElicitSlot**invite le client à fournir une valeur de créneau. Vous devez inclure le nom de l'emplacement dans le `slotToElicit` champ de l'`dialogAction`objet. Vous devez également inclure le `name` de `intent` dans l'`sessionState`objet.

```
{`
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "OriginCity",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "BookFlight"
        }
    }
}
```

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

**ConfirmIntent**confirme les valeurs des créneaux du client et confirme si l'intention est prête à être réalisée. Vous devez inclure le `name` du `intent` dans l'`sessionState`objet et le `slots` à confirmer. Vous devez également inclure au moins un message dans le `messages` champ pour demander à l'utilisateur de confirmer les valeurs des créneaux. Votre message doit recevoir une réponse « oui » ou « non ». Si l'utilisateur répond « oui », Amazon Lex V2 définit `confirmationState` l'intention sur`Confirmed`. Si l'utilisateur répond « non », Amazon Lex V2 définit `confirmationState` l'intention sur`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?"
        }
    ]
}
```

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

La **fermeture** met fin au processus de réalisation de l'intention et indique qu'aucune autre réponse n'est attendue de la part de l'utilisateur. Vous devez inclure le `name` et `state` de `intent` dans l'`sessionState`objet. Les états d'intention compatibles sont `Failed``Fulfilled`, et`InProgress`.

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