

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Lex V2 봇에서 복잡한 특성 설정
<a name="context-mgmt-complex-attributes"></a>

세션 및 요청 속성은 속성 및 값의 문자열 간 매핑입니다. 대부분의 경우 문자열 맵을 사용하여 클라이언트 애플리케이션과 봇 간에 속성 값을 전송할 수 있습니다. 하지만 문자열 맵으로 쉽게 변환할 수 없는 이진 데이터나 복잡한 구조를 전송해야 하는 경우도 있습니다. 예를 들어 다음 JSON 객체는 미국에서 인구가 가장 많은 세 도시의 배열을 나타냅니다.

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

이 데이터 배열은 string-to-string 맵으로 잘 변환되지 않습니다. 이 경우 객체를 간단한 문자열로 변환하여 [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) 및 [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 작업으로 봇에 보낼 수 있습니다.

예를 들어 JavaScript를 사용하는 경우 객체를 JSON으로 변환하는 `JSON.stringify` 작업과 JSON 텍스트를 JavaScript 객체로 변환하는 `JSON.parse` 작업을 사용할 수 있습니다.

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

`RecognizeUtterance` 작업을 통해 속성을 보내려면 다음 JavaScript 코드와 같이, 속성을 요청 헤더에 추가하기 전에 속성을 base64로 인코딩해야 합니다.

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

먼저 데이터를 base64로 인코딩된 문자열로 변환한 다음 이 문자열을 세션 속성의 값으로 전송하여 `RecognizeText` 및 `RecognizeUtterance` 작업에 바이너리 데이터를 보낼 수 있습니다.

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