초기화/검증 또는 이행 AWS Lambda 함수를 사용하여 Amazon Lex 봇의 흐름을 변경하려면 어떻게 해야 하나요?

3분 분량
0

초기화/검증 또는 이행 AWS Lambda 함수를 사용하여 Amazon Lex 봇의 흐름을 변경하고 싶습니다. Amazon Lex 콘솔을 사용하여 이 작업을 수행하려면 어떻게 해야 하나요?

간략한 설명

초기화/검증 또는 이행 AWS Lambda 코드 후크를 사용하여 Amazon Lex 봇의 대화 흐름을 변경할 수 있습니다. Amazon Lex 콘솔은 DialogAction 필드를 제공합니다. DialogAction 필드는 다음 작업 과정에서 Amazon Lex가 사용자와의 상호 작용을 수행하도록 지시합니다. 이 필드는 Amazon Lex가 클라이언트에 응답을 반환한 후 사용자에게 무엇을 기대하는지 설명합니다.

유형(Type) 필드는 봇의 다음 작업 과정을 나타냅니다. 또한 Lambda 함수가 DialogAction 값의 일부로 제공해야 하는 다른 필드도 결정합니다. 총 5가지 유형이 있습니다.

  1. ElicitIntent: 사용자가 인텐트가 포함된 표현으로 응답해야 한다고 Amazon Lex에 알립니다.
  2. ElicitSlot: 사용자가 응답에서 슬롯 값을 제공해야 한다고 Amazon Lex에 알립니다.
  3. Close: Amazon Lex에 사용자의 응답을 기대하지 말라고 알립니다. 예를 들어 "피자 주문이 완료되었습니다"에는 응답이 필요하지 않습니다.
  4. ConfirmIntent: 사용자가 현재 인텐트를 확인하거나 거부하기 위해 예 또는 아니오로 대답해야 함을 Amazon Lex에 알립니다.
  5. Delegate: Amazon Lex가 봇 구성에 따라 다음 작업 과정을 선택하도록 지시

해결 방법

참고: 이 문서의 단계에서는 Amazon Lex 콘솔의 V2를 사용합니다. 현재 V1을 사용 중인 경우 탐색 창에서 **새 Lex v2 콘솔로 전환(Switch to the new Lex v2 console)**을 선택하세요.

Lambda 응답 구문은 Amazon Lex가 Lambda 함수에서 응답을 기대하는 형식을 지정합니다.

응답 필드에 대한 다음 정보를 검토합니다.

  • SessionState – 이 필드는 필수입니다. 이 필드는 사용자와의 대화의 현재 상태를 설명합니다. 구조의 실제 내용은 대화 작업 유형에 따라 다릅니다.
  • DialogAction – 이 필드는 Amazon Lex가 Lambda 함수에 응답하기 위해 수행해야 하는 작업 유형을 결정합니다. 유형 필드는 항상 필수입니다. SlotTo Elicit 필드는 DialogAction.Type이 ElicitSlot인 경우에만 필요합니다.
  • intent – Amazon Lex가 사용하는 인텐트의 이름입니다. DialogAction.Type이 위임 또는 ElicitIntent인 경우에는 이 필드가 필요하지 않습니다.
  • state – 이 필드는 필수입니다. DialogAction.Type이 Delegate인 경우에만 ReadyForFulfillment일 수 있습니다.
  • messages – dialogAction.type이 ElicitIntent인 경우 이 필드는 필수입니다. 이 필드는 Amazon Lex가 다음 번 대화를 수행하기 위해 고객에게 표시하는 하나 이상의 메시지를 설명합니다. 메시지를 제공하지 않으면 Amazon Lex는 봇이 생성될 때 정의한 적절한 메시지를 사용합니다. 자세한 내용은 Message 데이터 유형을 참조하세요.
  • ContentType – 사용할 메시지 유형을 설명합니다.
  • Content – 메시지 유형이 PlainText, CustomPayload 또는 SSML인 경우 이 필드에는 사용자에게 보낼 메시지가 포함됩니다.
  • ImageResponseCard – 메시지 유형이 ImageResponseCard인 경우 이 필드에는 사용자에게 표시할 응답 카드의 정의가 포함됩니다. 자세한 내용은 ImageResponseCard 데이터 유형을 참조하세요.

ElicitSlot 유형을 사용하여 대화 흐름 변경

ElicitSlot 유형을 사용하여 대화 흐름을 변경하려면 Lambda 코드 후크의 응답을 다음 형식으로 전달합니다.

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "<state>"
        }
    }
}

응답을 반환한 후, Amazon Lex는 Intent-name-to-elicit 인텐트에 속하는 slot-name-to-elicit라는 슬롯을 유도합니다.

ElicitIntent 유형을 사용하여 대화 흐름 변경

ElicitIntent 유형을 사용하여 대화 흐름을 변경하려면 Lambda 코드 후크의 응답을 다음 형식으로 전달합니다.

   {
     "sessionState": {
         "dialogAction": {
             "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

이 응답을 반환하면 메시지 자리 표시자에 지정된 메시지가 사용자에게 표시됩니다. 다음 사용자 입력은 인텐트 표현으로 간주되어 NLuConfidence 점수가 가장 높은 인텐트를 호출합니다.


관련 정보

응답 형식

amazon-lex-v2-dialogation

AWS 공식
AWS 공식업데이트됨 2년 전