

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómo establecer atributos complejos en su bot Lex V2
<a name="context-mgmt-complex-attributes"></a>

Los atributos de sesión y solicitud son string-to-string mapas de atributos y valores. En muchos casos, puede utilizar la asignación de cadenas para transferir valores de atributos entre la aplicación cliente y un bot. En algunos casos, sin embargo, es posible que necesite transferir datos binarios o una estructura compleja que no se puede convertir fácilmente a una asignación de cadenas. Por ejemplo, el siguiente objeto JSON representa una matriz de las tres ciudades más pobladas de los Estados Unidos:

```
{
   "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"
         }
      }
   ]
}
```

Esta matriz de datos no se traduce bien en un string-to-string mapa. En este caso, puede transformar un objeto en una cadena sencilla para poder enviársela a su bot con las operaciones [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) y [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html). 

Por ejemplo, si está utilizando JavaScript, puede usar la `JSON.stringify` operación para convertir un objeto en JSON y la `JSON.parse` operación para convertir el texto JSON en un JavaScript objeto:

```
// 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}});
```

Para enviar atributos con la `RecognizeUtterance` operación, debes codificar los atributos en base64 antes de añadirlos al encabezado de la solicitud, como se muestra en el siguiente JavaScript código:

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

Puede enviar datos binarios a las operaciones `RecognizeText` y `RecognizeUtterance` convirtiendo primero los datos a una cadena codificada en base64 y, a continuación, enviar la cadena como el valor en los atributos de sesión:

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