

Aviso de fin de soporte: el 15 de septiembre de 2025, AWS dejaremos de ofrecer soporte para Amazon Lex V1. Después del 15 de septiembre de 2025, ya no podrá acceder a la consola de Amazon Lex V1 ni a los recursos de Amazon Lex V1. Si utiliza Amazon Lex V2, consulte en su lugar la [guía Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

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.

# Definición de atributos complejos
<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 [PostContent](API_runtime_PostContent.md) y [PostText](API_runtime_PostText.md). 

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 los atributos de sesión con la `PostContent` 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 `PostContent` y `PostText` 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}}"
}
```