

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

# Amazon Lex V2 봇에 대한 AWS Lambda함수 생성
<a name="lambda-attach"></a>

Amazon Lex V2 봇에 대한 Lambda 함수를 생성하려면 AWS Management ConsoleAWS Lambda에서에 액세스하고 새 함수를 생성합니다. 자세한 내용은 [AWS Lambda개발자 안내서](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)를 참조하세요AWS Lambda.

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) AWS Lambda콘솔을 엽니다.

1. 왼쪽 사이드바에서 **함수**를 선택합니다.

1. **함수 생성**을 선택합니다.

1. **처음부터 작성**을 선택하여 최소한의 코드로 시작하거나, **청사진 사용**을 선택하여 목록에서 일반적인 사용 사례에 대한 샘플 코드를 선택하거나, **컨테이너 이미지**를 선택하여 함수에 배포할 컨테이너 이미지를 선택할 수 있습니다. **처음부터 작성**을 선택한 경우 다음 단계를 계속 진행하세요.

   1. 함수에 의미 있는 **함수 이름**을 지정하여 함수가 수행하는 작업을 설명하세요.

   1. **런타임** 아래의 드롭다운 메뉴에서 함수를 작성할 언어를 선택합니다.

   1. 함수에 맞는 명령어 세트 **아키텍처**를 선택합니다.

   1. 기본적으로 Lambda는 기본 권한이 있는 역할을 만듭니다. 기존 역할을 사용하거나 AWS 정책 템플릿을 사용하여 역할을 생성하려면 **기본 실행 역할 변경** 메뉴를 확장하고 옵션을 선택합니다.

   1. **고급 설정** 메뉴를 확장하여 추가 옵션을 구성합니다.

1. **함수 생성**을 선택합니다.

다음 이미지는 새 함수를 처음부터 생성할 때 표시되는 내용을 보여줍니다.

![\[새 Lambda 함수.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/lambda/lambda-new-function.png)


Lambda 핸들러 함수는 사용하는 언어에 따라 다릅니다. 최소한 `event` JSON 객체를 인수로 사용합니다. [AWS LambdaLex V2의 입력 이벤트 형식](lambda-input-format.md)에서 Amazon Lex V2가 제공하는 `event`의 필드를 확인할 수 있습니다. 핸들러 함수를 수정하여 최종적으로 [AWS LambdaLex V2의 응답 형식](lambda-response-format.md)에서 설명한 형식과 일치하는 `response` JSON 객체를 반환하도록 합니다.
+ 함수 작성이 끝나면 **배포**를 선택하여 함수를 사용할 수 있게 합니다.

각 봇 별칭을 최대 하나의 Lambda 함수와 연결할 수 있다는 점을 기억하세요. 하지만 Lambda 코드 내에서 봇에 필요한 만큼 함수를 정의하고 Lambda 핸들러 함수에서 이러한 함수를 호출할 수 있습니다. 예를 들어 동일한 봇 별칭의 모든 의도가 동일한 Lambda 함수를 호출해야 하지만 각 의도에 대해 별도의 함수를 활성화하는 라우터 함수를 생성할 수 있습니다. 다음은 애플리케이션에 사용하거나 수정할 수 있는 샘플 라우터 함수입니다.

```
import os
import json
import boto3

# reuse client connection as global
client = boto3.client('lambda')

def router(event):
    intent_name = event['sessionState']['intent']['name']
    fn_name = os.environ.get(intent_name)
    print(f"Intent: {intent_name} -> Lambda: {fn_name}")
    if (fn_name):
        # invoke lambda and return result
        invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event))
        print(invoke_response)
        payload = json.load(invoke_response['Payload'])
        return payload
    raise Exception('No environment variable for intent: ' + intent_name)

def lambda_handler(event, context):
    print(event)
    response = router(event)
    return response
```

**Amazon Lex V2 봇 대화에서 AWS Lambda함수를 사용해야 하는 경우**

사용자와의 대화에서 Lambda 함수를 사용할 수 있습니다.
+ 의도가 인식된 후 초기 응답에서. 예를 들어, 사용자가 피자를 주문하고 싶다고 말한 후입니다.
+ 사용자로부터 슬롯 값을 유도한 후. 예를 들어, 사용자가 봇에게 주문하고 싶은 피자의 크기를 알려준 후입니다.
+ 슬롯을 유도 위한 각 재시도 사이. 고객이 인식된 크기의 피자를 사용하지 않는 경우를 예로 들 수 있습니다.
+ 의도를 확인할 때 피자 주문을 확인할 때를 예로 들 수 있습니다.
+ 의도를 이행하기 위해. 피자를 주문하는 경우를 예로 들 수 있습니다.
+ 의도가 충족된 후 및 봇이 대화를 종료하기 전. 음료를 주문하기 위한 의도로 전환하는 경우를 예로 들 수 있습니다.

**Topics**
+ [콘솔을 사용하여 Amazon Lex V2 봇에 AWS Lambda함수 연결](lambda-attach-console.md)
+ [API 작업을 사용하여 Amazon Lex V2 봇에 AWS Lambda함수 연결](lambda-attach-api.md)

# 콘솔을 사용하여 Amazon Lex V2 봇에 AWS Lambda함수 연결
<a name="lambda-attach-console"></a>

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

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/)에서 Amazon Lex 콘솔을 엽니다.

1. 왼쪽 패널에서 **봇**을 선택하고 봇 목록에서 Lambda 함수를 연결할 봇의 이름을 선택합니다.

1. 왼쪽 패널에서**배포** 메뉴 아래의 **별칭**을 선택합니다.

1. 별칭 목록에서 Lambda 함수를 연결할 별칭의 이름을 선택합니다.

1. **언어** 패널에서 Lambda 함수에 사용할 언어를 선택합니다. 패널에 해당 언어가 없는 경우 **별칭의 언어 관리**를 선택하여 언어를 추가합니다.

1. **소스** 드롭다운 메뉴에서 연결할 Lambda 함수의 이름을 선택합니다.

1. **Lambda 함수 버전 또는 별칭** 드롭다운 메뉴에서 사용할 Lambda 함수의 버전 또는 별칭을 선택합니다. 그런 다음 **저장**을 선택합니다. 봇이 지원하는 언어의 모든 의도에 동일한 Lambda 함수가 사용됩니다.

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

1. 봇을 선택한 후 Lambda 함수를 호출하려는 봇의 언어 아래에 있는 왼쪽 메뉴에서 **의도**를 선택합니다.

1. Lambda 함수를 호출하여 의도 편집기를 열려는 의도를 선택합니다.

1. Lambda 코드 후크를 설정하는 데는 두 가지 옵션이 있습니다.

   1. 대화의 모든 단계 후에 Lambda 함수를 호출하려면 다음 이미지와 같이 의도 에디터 하단의 **코드 후크** 섹션으로 스크롤하여 **초기화 및 검증에 Lambda 함수 사용** 확인란을 선택합니다.  
![\[Amazon Lex V2 의도 편집기의 코드 후크 섹션.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/lambda/lambda-code-hooks-all.png)

   1. 또는 Lambda 함수를 호출할 대화 단계에서 **대화 코드 후크** 섹션을 사용하세요. **대화 코드 후크** 섹션은 다음과 같이 표시됩니다.  
![\[Amazon Lex V2 의도 편집기의 코드 후크 섹션.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/lambda/lambda-code-hook-step.png)

      Amazon Lex V2가 응답을 위해 코드 후크를 호출하는 방식을 제어하는 두 가지 방법이 있습니다.
      + **활성** 버튼을 전환하여 *활성* 또는 *비활성*으로 표시합니다. 코드 후크가 *활성화*되면 Amazon Lex V2에서 코드 후크를 호출합니다. 코드 후크가 *비활성*되면 Amazon Lex V2는 코드 후크를 실행하지 않습니다.
      + **Lambda 대화 코드 후크** 섹션을 확장하고 **Lambda 함수 호출** 확인란을 선택하여 *활성화됨* 또는 *비활성화됨*으로 표시합니다. 코드 후크가 활성으로 표시된 경우에만 활성화하거나 비활성화할 수 있습니다. *활성화됨*으로 표시되면 코드 후크가 정상적으로 실행됩니다. *비활성화*되면 코드 후크가 호출되지 않고 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다. 대화 코드 후크가 성공하거나 실패하거나 제한 시간이 초과된 후 응답을 구성하려면 **고급 옵션**을 선택합니다.

      Lambda 코드 후크는 다음 대화 단계에서 호출할 수 있습니다.
      + 함수를 **초기 응답**으로 호출하려면 **초기 응답** 섹션으로 스크롤하고 **사용자의 요청을 승인하는 응답** 옆의 화살표를 확장한 다음 **고급 옵션**을 선택합니다. 팝업 메뉴 하단에서 **대화 코드 후크** 섹션을 찾으세요.
      + **슬롯 유도** 후 함수를 호출하려면 **슬롯** 섹션으로 스크롤하여 관련 **슬롯 프롬프트** 옆에 있는 화살표를 확장한 다음 **고급 옵션**을 선택합니다. 팝업되는 메뉴 하단의 **기본값** 바로 위에 있는 **대화 코드 후크** 섹션을 찾으세요.

        각 유도 후에 함수를 호출할 수도 있습니다. 이렇게 하려면 **슬롯 프롬프트** 섹션에서 **봇 유도 정보**를 확장하고 **추가 프롬프트 옵션**을 선택한 다음 **각 유도 후 Lambda 코드 후크 호출** 옆의 확인란을 선택합니다.
      + **의도 확인**을 위해 함수를 호출하려면 **확인** 섹션으로 스크롤한 다음 **의도를 확인하는 프롬프트** 옆의 화살표를 확장한 다음 **고급 옵션**을 선택합니다. 팝업 메뉴 하단에서 **대화 코드 후크** 섹션을 찾으세요.
      + **의도 이행** 함수를 호출하려면 **이행** 섹션으로 스크롤하세요. **활성** 버튼을 토글하여 코드 후크를 *활성*으로 설정합니다. **이행 성공 시** 옆의 화살표를 확장하고 **고급 옵션**을 선택합니다. **이행 Lambda 코드 후크** 섹션에서 **이행을 위한 Lambda 함수 사용** 옆의 확인란을 선택하여 코드 후크를 *활성화됨*으로 설정합니다.

1. Lambda 함수를 호출할 대화 단계를 설정한 후에는 봇을 다시 **빌드**하여 함수를 테스트합니다.

# 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` 작업을 사용하여 봇을 다시 빌드하고 함수를 테스트합니다.