

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.

# Configuration d'attributs complexes dans votre bot Lex V2
<a name="context-mgmt-complex-attributes"></a>

Les attributs de session et de demandes sont des mappages chaîne/chaîne d'attributs et de valeurs. Dans de nombreux cas, vous pouvez utiliser le mappage de chaînes pour transférer les valeurs d'attribut entre votre application cliente et un bot. Cependant, dans certains cas, vous devez transférer des données binaires ou une structure complexe qu'il n'est pas facile de convertir en mappage de chaînes. Par exemple, l'objet JSON suivant représente un tableau des trois villes les plus peuplées aux Etats-Unis :

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

Ce tableau de données est difficile à convertir en mappage chaîne/chaîne. Dans ce cas, vous pouvez convertir un objet en chaîne simple pour pouvoir l'envoyer au bot avec les opérations [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) et [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html). 

Par exemple, si vous utilisez JavaScript, vous pouvez utiliser l'`JSON.stringify`opération pour convertir un objet en JSON et l'`JSON.parse`opération pour convertir du texte JSON en JavaScript objet :

```
// To convert an object to a string.
var jsonString = JSON.stringify({{object}}, null, 2);
// To convert a string to an object.
var {{obj}} = JSON.parse({{JSON string}});
```

Pour envoyer des attributs avec cette `RecognizeUtterance` opération, vous devez encoder les attributs en base64 avant de les ajouter à l'en-tête de la demande, comme indiqué dans le code suivant : JavaScript

```
var {{encodedAttributes}} = new Buffer({{attributeString}}).toString("base64");
```

Pour envoyer des données binaires aux opérations `RecognizeText` et `RecognizeUtterance`, convertissez d'abord les données en chaîne codée en base64, puis envoyez la chaîne en tant que valeur dans les attributs de session :

```
"sessionAttributes" : {
   "binaryData": "{{base64 encoded data}}"
}
```