첨부: AWS Lambda API오퍼레이션을 사용하여 봇에 함수 - Amazon Lex

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

첨부: AWS Lambda API오퍼레이션을 사용하여 봇에 함수

Lambda 함수를 호출하려면 먼저 Lambda 함수를 봇 별칭에 연결해야 합니다. 하나의 Lambda 함수만 각 봇 별칭과 연결할 수 있습니다. 작업을 사용하여 Lambda 함수를 연결하려면 다음 단계를 수행하십시오. API

새 봇 별칭을 생성하는 경우 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 찾으려면 다음을 여십시오. AWS Lambda https://console.aws.amazon.com/lambda/홈 콘솔에서 왼쪽 사이드바에서 함수를 선택하고 봇 별칭과 연결할 함수를 선택합니다. 함수 개요의 오른쪽에서 함수 lambdaARN 아래를 찾을 수 있습니다. ARN 여기에는 리전, 계정 ID, 함수 이름이 포함되어야 합니다.

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

작업을 사용하여 Lambda 함수를 호출하도록 인텐트 설정 API

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

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

  1. 대화가 끝날 때마다 Lambda 대화 코드 후크가 실행되도록 설정하려면 필드에 dialogCodeHook 있는 DialogCodeHookSettings다음 객체의 필드를 다음과 같이 설정하십시오enabled. true

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

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

"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 함수를 호출하려면 or 작업 codeHook initialResponse 필드의 구조체를 사용하십시오. CreateIntentUpdateIntent initialResponse필드는 다음 객체에 매핑됩니다. InitialResponseSetting

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

슬롯 값을 추출한 후 Lambda 함수를 호출하려면 또는 작업의 필드 내에 valueElicitation 있는 필드를 사용하십시오slotCaptureSetting. CreateSlotUpdateSlot 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 필드를 사용하세요.

인텐트를 확인할 때 Lambda 함수를 호출하려면 or intentConfirmationSetting 작업의 필드를 사용하십시오. CreateIntentUpdateIntent 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 함수를 호출하여 인텐트를 수행하려면 or fulfillmentCodeHook 작업에서 필드를 사용하십시오. CreateIntentUpdateIntent fulfillmentCodeHook필드는 다음 객체에 매핑됩니다. FulfillmentCodeHookSettings

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

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