

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

# API 작업을 사용하여 Amazon Lex V2 봇에 AWS Lambda함수 연결
<a name="lambda-attach-api"></a>

Lambda 함수를 간접 호출하려면 먼저 Amazon Lex V2 봇 별칭에 Lambda 함수를 연결해야 합니다. 각 봇 별칭에는 Lambda 함수를 하나만 연결할 수 있습니다. API 작업을 사용하여 Lambda 함수를 연결하려면 이 단계를 수행합니다.

새 봇 별칭을 생성하는 경우 [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html) 작업을 사용하여 Lambda 함수를 연결하세요. Lambda 함수를 기존 봇 별칭에 연결하려면 [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) 작업을 사용하세요. 올바른 설정을 포함하도록 `botAliasLocaleSettings` 필드를 수정하세요.

```
{
    "botAliasLocaleSettings" : {
        locale: {
            "codeHookSpecification": {
                "lambdaCodeHook": {
                    "codeHookInterfaceVersion": "1.0",
                    "lambdaARN": "arn:aws:lambda:region:account-id:function:function-name"
                }
            },
            "enabled": true
        },
        ...
    }
}
```

1. `botAliasLocaleSettings` 필드는 Lambda 함수를 연결하려는 로캘이 키인 객체에 매핑됩니다. 지원되는 로캘 및 유효한 키인 코드 목록은 [지원되는 언어 및 로캘](how-languages.md#supported-languages) 섹션을 참조하세요.

1. Lambda 함수`lambdaARN`의를 찾으려면 [https://console.aws.amazon.com/lambda/home](https://console.aws.amazon.com/lambda/home) AWS Lambda콘솔을 열고 왼쪽 사이드바에서 **함수**를 선택한 다음 봇 별칭과 연결할 함수를 선택합니다. **함수 개요**의 오른쪽에 있는 **함수 ARN**에서 `lambdaARN`을 찾습니다. 여기에는 리전, 계정 ID, 함수 이름이 포함되어야 합니다.

1. Amazon Lex V2에서 별칭에 대한 람다 함수를 호출할 수 있도록 하려면 `enabled` 필드를 `true`로 설정합니다.

**API 작업을 사용하여 Lambda 함수를 호출하도록 Amazon Lex V2 의도 설정**

의도 중에 Lambda 함수 호출을 설정하려면 새 의도를 생성하는 경우 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 작업을 사용하고, 기존 의도에서 함수를 호출하는 경우에는 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 작업을 사용하세요. 의도 작업에서 Lambda 함수 호출을 제어하는 필드는 `dialogCodeHook`, `initialResponseSetting`, `intentConfirmationSetting` 및 `fulfillmentCodeHook`입니다.

슬롯을 추출하는 동안 함수를 호출하는 경우 새 슬롯을 생성하는 경우 [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) 작업을 사용하고 기존 슬롯에서 함수를 호출하려면 [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) 작업을 사용하세요. 슬롯 작업에서 Lambda 함수 간접 호출을 제어하는 필드는 `valueElicitationSetting` 객체의 `slotCaptureSetting`입니다.

1. 대화가 끝날 때마다 람다 대화 상자 코드 후크가 실행되도록 설정하려면 `dialogCodeHook` 필드에 있는 다음 [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html) 객체의 `enabled` 필드를 `true`로 설정합니다.

   ```
   "dialogCodeHook": {
       "enabled": boolean
   }
   ```

1. 또는 함수를 호출하려는 대화 단계에 해당하는 구조 내에서 `codeHook` 및/또는 `elicitationCodeHook` 필드를 수정하여 대화의 특정 지점에서만 실행되도록 Lambda 대화 코드 후크를 설정할 수도 있습니다. 의도 이행을 위해 Lambda 대화 코드 후크를 사용하려면 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 또는 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 작업에서 `fulfillmentCodeHook` 필드를 사용합니다. 이러한 세 가지 유형의 코드 후크의 구조와 용도는 다음과 같습니다.

## 코드후크
<a name="lambda-code-hook"></a>

이 `codeHook` 필드는 대화의 지정된 단계에서 실행할 코드 후크의 설정을 정의합니다. 이 객체는 다음과 같은 구조를 가진 [DialogCodeHookInvocationSeting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html) 객체입니다.

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ Amazon Lex V2가 대화의 해당 지점에서 코드 후크를 호출하도록 `active` 필드를 `true`로 변경합니다.
+ 코드 후크가 정상적으로 실행되도록 Amazon Lex V2에 대해 `enableCodeHookInvocation` 필드를 `true`로 변경합니다. `false`로 표시하면 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다.
+ `invocationLabel`은 코드 후크가 호출되는 대화 단계를 나타냅니다.
+ `postCodeHookSpecification` 필드를 사용하여 코드 후크가 성공하거나 실패하거나 제한 시간이 초과된 후에 발생하는 동작과 메시지를 지정합니다.

## elicitationCodeHook
<a name="lambda-elicitation-code-hook"></a>

이 `elicitationCodeHook` 필드는 슬롯을 다시 불러와야 하는 경우 실행할 코드 후크의 설정을 정의합니다. 이 시나리오는 슬롯 추출이 실패하거나 의도 확인이 거부된 경우 발생할 수 있습니다. `elicitationCodeHook` 필드는 다음과 같은 구조의 [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html) 객체입니다.

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ 코드 후크가 정상적으로 실행되도록 Amazon Lex V2에 대해 `enableCodeHookInvocation` 필드를 `true`로 변경합니다. `false`로 표시하면 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다.
+ `invocationLabel`은 코드 후크가 호출되는 대화 단계를 나타냅니다.

## fulfillmentCodeHook
<a name="lambda-fulfillment-code-hook"></a>

`fulfillmentCodeHook` 필드는 의도를 이행하기 위해 실행할 코드 후크의 설정을 정의합니다. 이는 다음과 같은 [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html) 객체에 매핑됩니다.

```
"fulfillmentCodeHook": {
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```
+ Amazon Lex V2가 대화의 해당 지점에서 코드 후크를 호출하도록 `active` 필드를 `true`로 변경합니다.
+ 코드 후크가 정상적으로 실행되도록 Amazon Lex V2에 대해 `enabled` 필드를 `true`로 변경합니다. `false`로 표시하면 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다.
+ `fulfillmentUpdatesSpecification` 필드를 사용하여 의도를 이행하는 동안 사용자에게 업데이트하도록 표시되는 메시지와 이와 관련된 타이밍을 지정합니다.
+ `postFulfillmentStatusSpecification` 필드를 사용하여 코드 후크가 성공, 실패 또는 시간 초과된 후에 발생하는 메시지 및 작업을 지정합니다.

대화의 다음 지점에서 `active` 및 `enableCodeHookInvocation`/`enabled` 필드를 `true`로 설정하여 Lambda 코드 후크를 호출할 수 있습니다

## 초기 응답 중
<a name="lambda-hook-initial-response"></a>

의도가 인식된 후 초기 응답에서 Lambda 함수를 호출하려면 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 또는 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 작업의 `initialResponse` 필드에 `codeHook` 구조를 사용합니다. `initialResponse` 필드는 다음 [InitialResponseSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_InitialResponseSetting.html) 객체에 매핑됩니다.

```
"initialResponse": {
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "initialResponse": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "nextStep": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "conditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html)
}
```

## 슬롯 유도 후 또는 슬롯 재유도 중
<a name="lambda-hook-elicit-slot"></a>

슬롯 값을 유도한 후 Lambda 함수를 호출하려면 [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) 또는 [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) 작업의 `valueElicitation` 필드 내에 있는 `slotCaptureSetting` 필드를 사용합니다. `slotCaptureSetting` 필드는 다음 [SlotCaptureSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SlotCaptureSetting.html) 객체에 매핑됩니다.

```
"slotCaptureSetting": {
    "captureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "captureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "captureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "codeHook": {
        "active": true,
        "enableCodeHookInvocation": true,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html)
}
```
+ 슬롯 추출이 성공한 후 Lambda 함수를 호출하려면 `codeHook` 필드를 사용하세요.
+ 슬롯 추출이 실패하고 Amazon Lex V2가 슬롯 제거를 재시도한 후 Lambda 함수를 호출하려면 `elicitationCodeHook` 필드를 사용하세요.

## 의도 확인 또는 거부 이후
<a name="lambda-hook-confirm-intent"></a>

의도를 확인할 때 람다 함수를 호출하려면 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 또는 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 작업의 `intentConfirmationSetting` 필드를 사용합니다. `intentConfirmation` 필드는 다음 [IntentConfirmationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_IntentConfirmationSetting.html) 객체에 매핑됩니다.

```
"intentConfirmationSetting": {
    "active": boolean,
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "confirmationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "confirmationNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "confirmationResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialResponseSpecificationogState.html),
    "declinationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "declinationNextStep": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "declinationResponse": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "promptSpecification": [PromptSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PromptSpecification.html)
}
```
+ 사용자가 의도와 해당 슬롯을 확인한 후 Lambda 함수를 호출하려면 `codeHook` 필드를 사용하세요.
+ 사용자가 의도 확인을 거부하고 Amazon Lex V2가 슬롯 추출을 재시도한 후 Lambda 함수를 호출하려면 `elicitationCodeHook` 필드를 사용하세요.

## 의도 이행 중
<a name="lambda-hook-fulfill-intent"></a>

의도를 이행하기 위해 Lambda 함수를 호출하려면 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 또는 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 작업에서 `fulfillmentCodeHook` 필드를 사용합니다. `fulfillmentCodeHook` 필드는 다음 [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html) 객체에 매핑됩니다.

```
{
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```

3. Lambda 함수를 호출할 대화 단계를 설정한 후에는 `BuildBotLocale` 작업을 사용하여 봇을 다시 빌드하고 함수를 테스트합니다.