API 작업 사용 - Amazon Lex

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

API 작업 사용

Lambda 함수를 봇 별칭에 연결

새 봇 별칭을 생성하는 경우 CreateBotAlias 작업을 사용하여 Lambda 함수를 연결하십시오. Lambda 함수를 기존 봇 별칭에 연결하려면 UpdateBotAlias 작업을 사용하세요. 올바른 설정을 포함하도록 botAliasLocaleSettings 필드를 수정하십시오.

{ "botAliasLocaleSettings" : { locale: { "codeHookSpecification": { "lambdaCodeHook": { "codeHookInterfaceVersion": "1.0", "lambdaARN": "arn:aws:lambda:region:account-id:function:function-name" } }, "enabled": true }, ... } }
  1. botAliasLocaleSettings 필드는 Lambda 함수를 연결하려는 로캘이 키인 객체에 매핑됩니다. 지원되는 로캘 및 유효한 키인 코드 목록은 지원되는 언어 및 로캘 섹션을 참조하십시오.

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

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

Lambda 함수를 호출하는 의도를 설정합니다.

의도 중에 Lambda 함수 호출을 설정하려면 새 의도를 생성하는 경우 CreateIntent 작업을 사용하고, 기존 의도에서 함수를 호출하는 경우에는 UpdateIntent 작업을 사용하세요. 의도 작업에서 Lambda 함수 호출을 제어하는 필드는 dialogCodeHook, initialResponseSetting, intentConfirmationSettingfulfillmentCodeHook입니다.

슬롯을 추출하는 동안 함수를 호출하는 경우 새 슬롯을 생성하는 경우 CreateSlot 작업을 사용하고 기존 슬롯에서 함수를 호출하려면 UpdateSlot 작업을 사용하세요. 슬롯 작업에서 Lambda 함수 간접 호출을 제어하는 필드는 valueElicitationSetting 객체의 slotCaptureSetting입니다.

  1. 대화가 끝날 때마다 람다 대화 상자 코드 후크가 실행되도록 설정하려면 dialogCodeHook 필드에 있는 다음 DialogCodeHookSettings 객체의 enabled 필드를 true로 설정합니다.

    "dialogCodeHook": { "enabled": boolean }
  2. 또는 함수를 호출하려는 대화 단계에 해당하는 구조 내에서 codeHook 및/또는 elicitationCodeHook 필드를 수정하여 대화의 특정 지점에서만 실행되도록 Lambda 대화 코드 후크를 설정할 수도 있습니다. 의도 이행을 위해 Lambda 대화 코드 후크를 사용하려면 CreateIntent 또는 UpdateIntent 작업에서 fulfillmentCodeHook 필드를 사용합니다. 이러한 세 가지 유형의 코드 후크의 구조와 용도는 다음과 같습니다.

codeHook 필드는 대화의 지정된 단계에서 실행할 코드 후크의 설정을 정의합니다. 이 객체는 다음과 같은 구조를 가진 DialogCodeHookInvocationSeting 객체입니다.

"codeHook": { "active": boolean, "enableCodeHookInvocation": boolean, "invocationLabel": string, "postCodeHookSpecification": PostDialogCodeHookInvocationSpecification object, }
  • Amazon Lex V2가 대화의 해당 지점에서 코드 후크를 호출하도록 active 필드를 true로 변경합니다.

  • 코드 후크가 정상적으로 실행되도록 Amazon Lex V2에 대해 enableCodeHookInvocation 필드를 true로 변경합니다. false로 표시하면 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다.

  • invocationLabel은 코드 후크가 호출되는 대화 단계를 나타냅니다.

  • postCodeHookSpecification 필드를 사용하여 코드 후크가 성공하거나 실패하거나 제한 시간이 초과된 후에 발생하는 동작과 메시지를 지정합니다.

elicitationCodeHook 필드는 슬롯을 다시 불러와야 하는 경우 실행할 코드 후크의 설정을 정의합니다. 이 시나리오는 슬롯 추출이 실패하거나 의도 확인이 거부된 경우 발생할 수 있습니다. elicitationCodeHook 필드는 다음과 같은 구조의 ElicitationCodeHookInvocationSetting 객체입니다.

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

  • invocationLabel은 코드 후크가 호출되는 대화 단계를 나타냅니다.

fulfillmentCodeHook 필드는 의도를 이행하기 위해 실행할 코드 후크의 설정을 정의합니다. 이는 다음과 같은 FulfillmentCodeHookSettings 객체에 매핑됩니다.

"fulfillmentCodeHook": { "active": boolean, "enabled": boolean, "fulfillmentUpdatesSpecification": FulfillmentUpdatesSpecification object, "postFulfillmentStatusSpecification": PostFulfillmentStatusSpecification object }
  • Amazon Lex V2가 대화의 해당 지점에서 코드 후크를 호출하도록 active 필드를 true로 변경합니다.

  • 코드 후크가 정상적으로 실행되도록 Amazon Lex V2에 대해 enabled 필드를 true로 변경합니다. false로 표시하면 Amazon Lex V2는 코드 후크가 성공적으로 반환된 것처럼 작동합니다.

  • fulfillmentUpdatesSpecification 필드를 사용하여 의도를 이행하는 동안 사용자에게 업데이트하도록 표시되는 메시지와 이와 관련된 타이밍을 지정합니다.

  • postFulfillmentStatusSpecification 필드를 사용하여 코드 후크가 성공, 실패 또는 시간 초과된 후에 발생하는 메시지 및 작업을 지정합니다.

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

의도가 인식된 후 초기 응답에서 Lambda 함수를 호출하려면 CreateIntent 또는 UpdateIntent 작업의 initialResponse 필드에 codeHook 구조를 사용합니다. initialResponse 필드는 다음 InitialResponseSetting 객체에 매핑됩니다.

"initialResponse": { "codeHook": { "active": boolean, "enableCodeHookInvocation": boolean, "invocationLabel": string, "postCodeHookSpecification": PostDialogCodeHookInvocationSpecification object, }, "initialResponse": FulfillmentUpdatesSpecification object, "nextStep": PostFulfillmentStatusSpecification object, "conditional": ConditionalSpecification object }

슬롯 값을 유도한 후 Lambda 함수를 호출하려면 CreateSlot 또는 UpdateSlot 작업의 valueElicitation 필드 내에 있는 slotCaptureSetting 필드를 사용합니다. slotCaptureSetting 필드는 다음 SlotCaptureSetting 객체에 매핑됩니다.

"slotCaptureSetting": { "captureConditional": ConditionalSpecification object, "captureNextStep": DialogState object, "captureResponse": ResponseSpecification object, "codeHook": { "active": true, "enableCodeHookInvocation": true, "invocationLabel": string, "postCodeHookSpecification": PostDialogCodeHookInvocationSpecification object, }, "elicitationCodeHook": { "enableCodeHookInvocation": boolean, "invocationLabel": string }, "failureConditional": ConditionalSpecification object, "failureNextStep": DialogState object, "failureResponse": ResponseSpecification object }
  • 슬롯 추출이 성공한 후 Lambda 함수를 호출하려면 codeHook 필드를 사용하세요.

  • 슬롯 추출이 실패하고 Amazon Lex V2가 슬롯 제거를 재시도한 후 Lambda 함수를 호출하려면 elicitationCodeHook 필드를 사용하세요.

의도를 확인할 때 람다 함수를 호출하려면 CreateIntent 또는 UpdateIntent 작업의 intentConfirmationSetting 필드를 사용합니다. intentConfirmation 필드는 다음 IntentConfirmationSetting 객체에 매핑됩니다.

"intentConfirmationSetting": { "active": boolean, "codeHook": { "active": boolean, "enableCodeHookInvocation": boolean, "invocationLabel": string, "postCodeHookSpecification": PostDialogCodeHookInvocationSpecification object, }, "confirmationConditional": ConditionalSpecification object, "confirmationNextStep": DialogState object, "confirmationResponse": ResponseSpecification object, "declinationConditional": ConditionalSpecification object, "declinationNextStep": FulfillmentUpdatesSpecification object, "declinationResponse": PostFulfillmentStatusSpecification object, "elicitationCodeHook": { "enableCodeHookInvocation": boolean, "invocationLabel": string, }, "failureConditional": ConditionalSpecification object, "failureNextStep": DialogState object, "failureResponse": ResponseSpecification object, "promptSpecification": PromptSpecification object }
  • 사용자가 의도와 해당 슬롯을 확인한 후 Lambda 함수를 호출하려면 codeHook 필드를 사용하세요.

  • 사용자가 의도 확인을 거부하고 Amazon Lex V2가 슬롯 추출을 재시도한 후 Lambda 함수를 호출하려면 elicitationCodeHook 필드를 사용하세요.

의도를 이행하기 위해 Lambda 함수를 호출하려면 CreateIntent 또는 UpdateIntent 작업에서 fulfillmentCodeHook 필드를 사용합니다. fulfillmentCodeHook 필드는 다음 FulfillmentCodeHookSettings 객체에 매핑됩니다.

{ "active": boolean, "enabled": boolean, "fulfillmentUpdatesSpecification": FulfillmentUpdatesSpecification object, "postFulfillmentStatusSpecification": PostFulfillmentStatusSpecification object }

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