

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

# AWS LambdaLex V2의 입력 이벤트 형식
<a name="lambda-input-format"></a>

Lambda 함수를 Amazon Lex V2 봇에 통합하는 첫 번째 단계는 Amazon Lex V2 이벤트의 필드를 이해하고 이러한 필드에서 스크립트를 작성할 때 사용할 정보를 결정하는 것입니다. 다음 JSON 객체는 Lambda 함수에 전달되는 Amazon Lex V2 이벤트의 일반적인 형식을 보여줍니다.

**참고**  
`messageVersion`에 대한 해당하는 내용을 변경하지 않아도 입력 형식을 변경할 수 있습니다. 새 필드가 있는 경우 코드에서 오류가 발생하면 안 됩니다.

```
{
    "messageVersion": "1.0",
    "invocationSource": "DialogCodeHook | FulfillmentCodeHook",
    "inputMode": "DTMF | Speech | Text",
    "responseContentType": "audio/mpeg | audio/ogg | audio/pcm | text/plain; charset=utf-8",
    "sessionId": string,
    "inputTranscript": string,
    "invocationLabel": string,
    "bot": {
        "id": string,
        "name": string,
        "localeId": string,
        "version": string,
        "aliasId": string,
        "aliasName": string
    },
    "interpretations": [
        {
            "interpretationSource": "Bedrock | Lex",
            "intent": {
                // see 의도 for details about the structure
            },
            "nluConfidence": number,
            "sentimentResponse": {
                "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
                "sentimentScore": {
                    "mixed": number,
                    "negative": number,
                    "neutral": number,
                    "positive": number
                }
            }
        },
        ...
    ],
    "proposedNextState": {
        "dialogAction": {
            "slotToElicit": string,
            "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
        },
        "intent": {
            // see 의도 for details about the structure
        },
        "prompt": {
            "attempt": string 
        }
    },
    "requestAttributes": {
        string: string,
        ...
    },
    "sessionState": {
        // see 세션 상태 for details about the structure
    },
    "transcriptions": [
        {
            "transcription": string,
            "transcriptionConfidence": number,
            "resolvedContext": {
                "intent": string
            },
            "resolvedSlots": {
                slot name: {
                    // see Slots for details about the structure
                },
                ...
            }
        },
        ...
    ]
}
```

다음은 입력 이벤트의 각 필드에 대한 설명입니다.

## messageVersion
<a name="lambda-input-messageversion"></a>

Lambda 함수로 이동하는 이벤트 데이터의 형식과 Lambda 함수에서 나올 것으로 예상되는 응답 형식을 식별하는 메시지 버전입니다.

**참고**  
의도를 정의할 때 이 값을 구성합니다. 현재 구현에서 Amazon Lex V2는 메시지 버전 1.0만 지원합니다. 따라서 콘솔은 기본값을 1.0으로 가정하며 이는 메시지 버전에 표시되지 않습니다.

## invocationSource
<a name="lambda-input-invocationsource"></a>

Lambda 함수를 호출한 코드 후크입니다. 다음과 같은 값이 가능합니다.

`DialogCodeHook`– Amazon Lex V2는 사용자 입력 후 Lambda 함수를 호출했습니다.

`FulfillmentCodeHook`– Amazon Lex V2는 필요한 슬롯을 모두 채운 후 Lambda 함수를 호출하고 의도를 이행할 준비가 된 후 Lambda 함수를 호출했습니다.

## inputMode
<a name="lambda-input-inputmode"></a>

사용자 발화의 모드입니다. 가능한 값은 다음과 같습니다.

`DTMF`– 사용자가 터치톤 키패드(듀얼 톤 다중 주파수)를 사용하여 발화를 입력합니다.

`Speech`– 사용자가 말을 했습니다.

`Text`– 사용자가 발화를 입력했습니다.

## responseContentType
<a name="lambda-input-responsecontenttype"></a>

사용자에 대한 봇의 응답 모드입니다. `text/plain; charset=utf-8`은 마지막 발화를 기록했음을 나타내며, `audio`로 시작하는 값은 마지막 발화를 말했음을 나타냅니다.

## sessionId
<a name="lambda-input-sessionid"></a>

대화에 사용된 영숫자 세션 식별자입니다.

## inputTranscript
<a name="lambda-input-inputtranscript"></a>

사용자의 입력 내용에 대한 트랜스크립션입니다.
+ 텍스트 입력의 경우 사용자가 입력한 텍스트입니다. DTMF 입력의 경우 사용자가 입력하는 키입니다.
+ 음성 입력의 경우, 이 텍스트는 의도를 호출하거나 슬롯을 채우기 위해 Amazon Lex V2가 사용자 표현을 변환하는 텍스트입니다.

## invocationLabel
<a name="lambda-input-invocationlabel"></a>

Lambda 함수를 호출한 응답을 나타내는 값입니다. 초기 응답, 슬롯 및 확인 응답에 대한 호출 레이블을 설정할 수 있습니다.

## bot
<a name="lambda-input-bot"></a>

요청을 처리한 봇에 대한 정보로, 다음 필드로 구성됩니다.
+ **ID** – 봇을 만들 때 봇에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 **설정** 페이지에서 봇 ID를 확인할 수 있습니다.
+ **이름** - 봇을 만들 때 지정한 이름입니다.
+ **localeId** – 봇에 사용한 로캘의 식별자입니다. 로캘 목록은 [Amazon Lex V2에서 지원하는 언어 및 로캘](how-languages.md) 섹션을 참조하세요.
+ **버전** – 요청을 처리한 봇의 버전입니다.
+ **aliasId** – 봇 별칭을 만들 때 봇 별칭에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 **별칭** 페이지에서 봇 별칭 ID를 확인할 수 있습니다. 목록에서 별칭 ID가 보이지 않는 경우 오른쪽 상단의 톱니바퀴 아이콘을 선택하고 **별칭 ID**를 켜십시오.
+ **aliasName** – 봇 별칭을 부여한 이름입니다.

## 해석
<a name="lambda-input-interpretations"></a>

Amazon Lex V2에서 사용자의 발화와 일치할 가능성이 있다고 간주하는 의도에 대한 정보 목록입니다. 각 항목은 다음과 같은 형식으로 발화가 의도와 일치하는지에 대한 정보를 제공하는 구조입니다.

```
{
    "intent": {
        // see 의도 for details about the structure
    },
    "interpretationSource": "Bedrock | Lex",
    "nluConfidence": number,
    "sentimentResponse": {
        "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
        "sentimentScore": {
            "mixed": number,
            "negative": number,
            "neutral": number,
            "positive": number
        }
    }
}
```

구조 내의 필드는 다음과 같습니다.
+ **의도** – 의도에 대한 정보가 들어 있는 구조입니다. 구조에 대한 자세한 내용은 [의도](lambda-common-structures.md#lambda-intent)를 참조하세요.
+ **nluConfidence** – Amazon Lex V2가 의도가 사용자의 의도와 일치한다고 얼마나 확신하는지 나타내는 점수입니다.
+ **sentimentResponse** – 응답의 감정에 대한 분석으로, 다음 필드를 포함합니다.
  + **sentiment** – 발화의 감정이 `POSITIVE`, `NEGATIVE`, `NEUTRAL`, 또는 `MIXED`인지를 나타냅니다.
  + **sentimentScore** – 각 감정을 숫자로 매핑하는 구조로서 Amazon Lex V2가 해당 발언이 해당 감정을 전달한다고 얼마나 확신하는지 나타냅니다.
+ **interpretationSource** - 슬롯이 Amazon Lex V2 또는 Amazon Bedrock에 의해 확인되는지 여부를 나타냅니다.

## proposedNextState
<a name="lambda-input-proposednextstate"></a>

Lambda 함수가 `sessionState`의 `dialogAction`을 `Delegate`로 설정하면 이 필드가 나타나고 대화의 다음 단계에 대한 Amazon Lex V2의 제안을 표시합니다. 그렇지 않으면 Lambda 함수의 응답에서 반환하는 설정에 따라 다음 상태가 달라집니다. 이 구조에는 다음 두 가지 조건이 모두 충족될 때만 나타납니다.

1. `invocationSource` 값은 `DialogCodeHook`입니다.

1. `dialogAction`의 예측 `type`은 `ElicitSlot`입니다.

이 정보를 사용하여 대화의 적절한 시점에 `runtimeHints`를 추가할 수 있습니다. 자세한 내용은 [대화에서 런타임 힌트를 통한 슬롯 값 인식 개선](using-hints.md)를 참조하세요. `proposedNextState`는 다음 필드가 포함된 구조입니다.

`proposedNextState`의 구조는 다음과 같습니다.

```
"proposedNextState": {
    "dialogAction": {
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see 의도 for details about the structure
    },
    "prompt": {
        "attempt": string 
    }
}
```
+ **dialogAction** – Amazon Lex V2에서 제안하는 다음 단계에 대한 정보가 들어 있습니다. 구조의 필드는 다음과 같습니다.
  + **slotToElicit** – Amazon Lex V2에서 제안한 다음 슬롯을 이끌어낼 수 있는 슬롯입니다. 이 필드는 `type`이 `ElicitSlot`인 경우에만 표시됩니다.
  + **type** – Amazon Lex V2에서 제안한 대화의 다음 단계입니다. 다음과 같은 값이 가능합니다.

    `Delegate`– Amazon Lex V2가 다음 작업을 결정합니다.

    `ElicitIntent`– 다음 작업은 사용자로부터 의도를 이끌어내는 것입니다.

    `ElicitSlot`– 다음 작업은 사용자로부터 슬롯 값을 추출하는 것입니다.

    `Close`– 의도 이행 프로세스를 종료하고 사용자로부터 응답이 없을 것임을 나타냅니다.

    `ConfirmIntent`– 다음 작업은 슬롯이 올바른지, 의도를 충족할 준비가 되었는지 사용자에게 묻는 것입니다.
+ **intent** – 봇이 사용자가 이행하려고 한다고 판단한 의도입니다. 구조에 대한 자세한 내용은 [의도](lambda-common-structures.md#lambda-intent)를 참조하세요.
+ **prompt** – Amazon Lex V2가 사용자에게 다음 슬롯을 묻는 메시지를 표시한 횟수를 지정하는 값에 매핑되는 `attempt` 필드가 포함된 구조입니다. 사용 가능한 값은 첫 번째 시도의 경우 `Initial`, 후속 시도의 경우 `Retry1`, `Retry2`, `Retry3`, `Retry4` 및 `Retry5`입니다.

## requestAttributes
<a name="lambda-input-requestattributes"></a>

클라이언트가 요청에서 전송하는 요청별 속성을 포함하는 구조입니다. 전체 세션에서 유지할 필요가 없는 정보를 전달하려면 요청 속성을 사용합니다. 요청 속성이 존재하지 않는 경우, 값은 null이 됩니다. 자세한 내용은 [Lex V2 봇의 요청 특성 설정](context-mgmt-request-attribs.md) 단원을 참조하십시오.

## sessionState
<a name="lambda-input-sessionstate"></a>

사용자와 Amazon Lex V2 봇 간의 현재 대화 상태입니다. 구조에 대한 자세한 내용은 [세션 상태](lambda-common-structures.md#lambda-session-state)를 참조하세요.

## transcriptions
<a name="lambda-input-transcriptions"></a>

Amazon Lex V2에서 사용자의 발화와 일치할 가능성이 있다고 간주하는 트랜스크립션 목록입니다. 자세한 내용은 [음성 트랜스크립션 신뢰도 점수를 사용하여 Lex V2 봇에서 대화 향상](using-transcript-confidence-scores.md) 단원을 참조하십시오. 각 항목은 가능한 한 가지 트랜스크립션에 대한 정보를 포함하는 다음 형식의 객체입니다.

```
{
    "transcription": string,
    "transcriptionConfidence": number,
    "resolvedContext": {
        "intent": string
    },
    "resolvedSlots": {
        slot name: {
            // see Slots for details about the structure
        },
        ...
    }
}
```

필드는 아래에 설명되어 있습니다.
+ **transcription** – Amazon Lex V2가 사용자의 오디오 발화와 일치할 가능성이 있는 것으로 간주하는 트랜스크립션입니다.
+ **transcriptionConfidence** – Amazon Lex V2가 의도가 사용자의 의도와 일치한다고 얼마나 확신하는지 나타내는 점수입니다.
+ **resolvedContext** – 발화가 관련된 의도에 매핑되는 `intent` 필드를 포함하는 구조입니다.
+ **resolvedSlots** – 발화에 따라 확인되는 각 슬롯의 이름을 키로 하는 구조입니다. 각 슬롯 이름은 해당 슬롯에 대한 정보가 포함된 구조에 매핑됩니다. 구조에 대한 자세한 내용은 [Slots](lambda-common-structures.md#lambda-slot)를 참조하세요.