

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Definição de atributos complexos no seu bot do Lex V2
<a name="context-mgmt-complex-attributes"></a>

Os atributos de sessão e solicitação são string-to-string mapas de atributos e valores. Em muitos casos, você pode usar o mapa de string para transferir valores de atributo entre o aplicativo cliente e o bot. Em alguns casos, no entanto, pode ser necessário transferir uma estrutura complexa ou dados binários que não podem ser facilmente convertidos em um mapa de string. Por exemplo, o seguinte objeto JSON representa um arranjo com as três cidades mais populosas dos 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"
         }
      }
   ]
}
```

Essa matriz de dados não se traduz bem em um string-to-string mapa. Nesse caso, você pode transformar um objeto em uma string simples para que você possa enviá-lo ao seu bot com as operações [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) e [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html). 

Por exemplo, se você estiver usando JavaScript, você pode usar a `JSON.stringify` operação para converter um objeto em JSON e a `JSON.parse` operação para converter texto JSON em um 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 com a `RecognizeUtterance` operação, você deve codificar os atributos em base64 antes de adicioná-los ao cabeçalho da solicitação, conforme mostrado no código a seguir: JavaScript

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

Você pode enviar dados binários para as operações `RecognizeText` e `RecognizeUtterance` convertendo os dados para uma string codificada em base64 e, em seguida, enviando a string como o valor nos atributos de sessão:

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