

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

# Amazon Lex V2 AWS Lambda함수의 공통 구조
<a name="lambda-common-structures"></a>

Lambda 응답 내에는 여러 구조가 반복됩니다. 이러한 공통 구조에 대한 세부 정보는 이 섹션에 나와 있습니다.

## 의도
<a name="lambda-intent"></a>

```
"intent": {
    "confirmationState": "Confirmed | Denied | None",
    "name": string,
    "slots": {
        // see Slots for details about the structure
    },
    "state": "Failed | Fulfilled | FulfillmentInProgress | InProgress | ReadyForFulfillment | Waiting",
    "kendraResponse": {
        // Only present when intent is KendraSearchIntent. For details, see
// https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax       }
}
```

`intent` 필드는 다음 필드가 있는 객체에 매핑됩니다.

### confirmationState
<a name="lambda-intent-confirmationstate"></a>

사용자가 의도에 사용할 슬롯을 확인했고 의도가 이행될 준비가 되었는지 나타냅니다. 다음과 같은 값이 가능합니다.

`Confirmed`– 사용자가 슬롯 값이 정확한지 확인합니다.

`Denied`– 사용자가 슬롯 값이 잘못되었다고 표시합니다.

`None`– 사용자가 아직 확인 단계에 도달하지 않았습니다.

### 이름
<a name="lambda-intent-name"></a>

의도의 이름.

### slots
<a name="lambda-intent-slots"></a>

의도를 이행하는 데 필요한 슬롯에 대한 정보입니다. 구조에 대한 자세한 내용은 [Slots](#lambda-slot)를 참조하세요.

### state
<a name="lambda-intent-state"></a>

의도의 이행 상태를 나타냅니다. 다음과 같은 값이 가능합니다.

`Failed`– 봇이 의도를 이행하지 못했습니다.

`Fulfilled`– 봇이 의도 이행을 완료했습니다.

`FulfillmentInProgress`– 봇이 의도를 이행하는 중입니다.

`InProgress`– 봇이 의도를 충족하는 데 필요한 슬롯 값을 도출하는 중입니다.

`ReadyForFulfillment`– 봇이 의도에 대한 모든 슬롯 값을 가져왔고 의도를 이행할 준비가 되었습니다.

`Waiting`– 봇이 사용자의 응답을 기다리고 있습니다(스트리밍 대화로 제한됨).

### kendraResponse
<a name="lambda-intent-kendraresponse"></a>

Kendra 검색 쿼리 결과에 대한 정보가 들어 있습니다. 이 필드는 의도가 `KendraSearchIntent`인 경우에만 표시됩니다. 자세한 내용은 [Kendra용 쿼리 API 호출의 응답 구문](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax)을 참조하세요.

## Slots
<a name="lambda-slot"></a>

`slots` 필드는 `intent` 구조 내에 존재하며 해당 의도의 슬롯 이름을 키로 하는 구조에 매핑됩니다. 슬롯이 다중 값 슬롯이 아닌 경우(자세한 내용은 [슬롯에서 여러 값 사용](multi-valued-slots.md) 참조) 다음 형식의 구조에 매핑됩니다. 참고로, `shape`은 `Scalar`입니다.

```
{
    slot name: {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    }
}
```

슬롯이 다중 값 슬롯인 경우, 슬롯이 매핑되는 객체에는 `values`라는 또 다른 필드가 포함되며, 이 필드는 다중 값 슬롯을 구성하는 슬롯에 대한 정보를 각각 포함하는 구조 목록에 매핑됩니다. 목록에 있는 각 객체의 형식은 일반 슬롯이 매핑되는 객체의 형식과 일치합니다. 참고로 `shape`은 `List`지만 `values` 아래 컴포넌트 슬롯의 `shape`은 `Scalar`입니다.

```
{
    slot name: {
    "shape": "List",
    "value": {
        "originalValue": string,
        "interpretedValue": string,
        "resolvedValues": [
            string,
            ...
        ]
    },
    "values": [
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        ...
    ]
}
```

슬롯 객체의 필드는 다음과 같습니다.

### shape
<a name="lambda-slots-shape"></a>

슬롯의 모양입니다. 이 값은 슬롯에 여러 값이 있는 경우 `List`이고(자세한 내용은 [슬롯에서 여러 값 사용](multi-valued-slots.md) 참조), 그렇지 않은 경우 `Scalar`입니다.

### value
<a name="lambda-slots-value"></a>

사용자가 슬롯에 제공한 값과 Amazon Lex V2의 해석에 대한 정보를 다음 형식으로 포함하는 객체입니다.

```
{
    "originalValue": string,
    "interpretedValue": string,
    "resolvedValues": [
        string,
        ...
    ]
}
```

필드는 아래에 설명되어 있습니다.
+ **originalValue** - Amazon Lex V2가 슬롯 값과 관련이 있다고 판단하는 슬롯 유도에 대한 사용자 응답의 부분입니다.
+ **interpretedValue** - 사용자 입력을 고려하여 Amazon Lex V2가 슬롯에 대해 결정하는 값입니다.
+ **resolvedValues** - Amazon Lex V2가 사용자 입력에 대해 가능한 해상도라고 판단하는 값의 목록입니다.

### values
<a name="lambda-slots-values"></a>

다중 값 슬롯을 구성하는 슬롯에 대한 정보가 들어 있는 객체 목록입니다. 각 개체의 형식은 위에서 설명한 `shape` 및 `value` 필드가 있는 일반 슬롯의 형식과 일치합니다. `values`는 슬롯이 여러 값으로 구성된 경우에만 표시됩니다(자세한 내용은 [슬롯에서 여러 값 사용](multi-valued-slots.md) 참조). 다음 JSON 객체는 두 개의 구성 요소 슬롯을 보여줍니다.

```
"values": [
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    ...
]
```

## 세션 상태
<a name="lambda-session-state"></a>

`sessionState` 필드는 사용자와의 대화 상태에 대한 정보가 포함된 객체에 매핑됩니다. 객체에 나타나는 실제 필드는 대화 작업 유형에 따라 달라집니다. Lambda 응답의 필수 필드는 [응답의 필수 필드](lambda-response-format.md#lambda-response-required)를 참조하세요. `sessionState` 객체의 형식은 다음과 같습니다.

```
"sessionState": {
    "activeContexts": [
        {
            "name": string,
            "contextAttributes": {
                string: string
            },
            "timeToLive": {
                "timeToLiveInSeconds": number,
                "turnsToLive": number
            }
        },
        ...
    ],
    "sessionAttributes": {
        string: string,
        ...
    },
    "runtimeHints": {
        "slotHints": {
            intent name: {
                slot name: {
                    "runtimeHintValues": [
                        {
                            "phrase": string
                        },
                        ...
                    ]
                },
                ...
            },
            ...
        }
    },
    "dialogAction": {
        "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see 의도 for details about the structure
    },
    "originatingRequestId": string
}
```

필드는 아래에 설명되어 있습니다.

### activeContexts
<a name="lambda-active-contexts"></a>

사용자가 세션에서 사용 중인 컨텍스트에 대한 정보가 들어 있는 개체 목록입니다. 컨텍스트를 사용하여 의도 인식을 용이하게 하고 제어할 수 있습니다. 컨텍스트에 대한 자세한 내용은 [Lex V2 봇의 의도 컨텍스트 설정](context-mgmt-active-context.md) 섹션을 참조하세요. 각 객체의 형식은 다음과 같습니다.

```
{
    "name": string,
    "contextAttributes": {
        string: string
    },
    "timeToLive": {
        "timeToLiveInSeconds": number,
        "turnsToLive": number
    }
}
```

필드는 아래에 설명되어 있습니다.
+ **name** – 컨텍스트의 이름입니다.
+ **contextAttributes** – 컨텍스트의 속성 이름과 해당 속성이 매핑되는 값이 들어 있는 객체입니다.
+ **timeToLive** – 컨텍스트가 활성 상태로 유지되는 기간을 지정하는 객체입니다. 이 객체에는 다음 필드 중 하나 또는 둘 다를 포함할 수 있습니다.
  + **timeToLiveInSeconds** – 컨텍스트가 활성 상태로 유지되는 시간 (초) 입니다.
  + **turnsToLive** – 컨텍스트가 활성 상태로 유지되는 턴 수입니다.

### sessionAttributes
<a name="lambda-session-attributes"></a>

세션별 컨텍스트 정보를 나타내는 키/값 페어의 맵입니다. 자세한 내용은 [Lex V2 봇의 세션 특성 설정](context-mgmt-session-attribs.md) 단원을 참조하십시오. 객체의 형식은 다음과 같습니다

```
{
    string: string,
    ...
}
```

### runtimeHints
<a name="lambda-runtime-hints"></a>

오디오 인식을 개선하기 위해 고객이 슬롯에 사용할 가능성이 높은 문구에 대한 힌트를 제공합니다. 힌트에 입력한 값을 사용하면 비슷한 소리가 나는 단어보다 해당 값을 오디오로 더 잘 인식할 수 있습니다. `runtimeHints` 객체의 형식은 다음과 같습니다.

```
{
    "slotHints": {
        intent name: {
            slot name: {
                "runtimeHintValues": [
                    {
                        "phrase": string
                    },
                    ...
                ]
            },
            ...
        },
        ...
    }
}
```

`slotHints` 필드는 봇에 있는 의도의 이름을 필드로 하는 객체에 매핑됩니다. 각 의도 이름은 필드가 해당 의도의 슬롯 이름인 객체에 매핑됩니다. 각 슬롯 이름은 객체 목록인 `runtimeHintValues`라는 단일 필드가 있는 구조에 매핑됩니다. 각 객체에는 힌트에 매핑되는 `phrase` 필드가 있습니다.

### dialogAction
<a name="lambda-dialog-action"></a>

Amazon Lex V2가 수행할 다음 작업을 결정합니다. 객체의 형식은 다음과 같습니다.

```
{
    "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
    "slotToElicit": string,
    "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
}
```

필드는 아래에 설명되어 있습니다.
+  **slotElicitationStyle** – `dialogAction`의 `type`이 `ElicitSlot`인 경우 Amazon Lex V2가 사용자의 오디오 입력을 해석하는 방법을 결정합니다. 자세한 내용은 [대화하는 동안 맞춤법 스타일을 사용하여 슬롯 값 캡처](spelling-styles.md) 단원을 참조하십시오. 다음과 같은 값이 가능합니다.

  `Default`– Amazon Lex V2는 오디오 입력을 기본 방식으로 해석하여 슬롯을 채웁니다.

  `SpellByLetter`– Amazon Lex V2는 슬롯 값에 대한 사용자의 맞춤법을 수신합니다.

  `SpellByWord`– Amazon Lex V2는 각 문자와 관련된 단어(예: "a as in apple")를 사용하여 슬롯 값에 대한 사용자의 철자를 수신합니다.
+  **slotToElicit** – `dialogAction`의 `type`이 `ElicitSlot`인 경우 사용자로부터 유도할 슬롯을 정의합니다.
+ **type** – 봇이 실행해야 하는 작업을 정의합니다. 다음과 같은 값이 가능합니다.

  `Delegate`– Amazon Lex V2에서 다음 단계를 결정하도록 합니다.

  `ElicitIntent`– 고객에게 의도를 표현하라는 메시지를 표시합니다.

  `ConfirmIntent`– 고객의 슬롯 값과 의도가 이행될 준비가 되었는지 확인합니다.

  `ElicitSlot`– 고객에게 의도의 슬롯 값을 제공하라는 메시지를 표시합니다.

  `Close`– 의도 이행 프로세스를 종료합니다.

### 의도
<a name="lambda-sessionstate-intent"></a>

`intent` 필드의 구조는 [의도](#lambda-intent)를 참조하세요.

### originatingRequestId
<a name="lambda-originating-request-id"></a>

요청에 대한 고유 식별자입니다. Lambda 응답의 경우 이 필드가 선택 사항입니다.