Amazon Lex V2 봇 세션 이해 - Amazon Lex

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

Amazon Lex V2 봇 세션 이해

사용자가 봇과 대화를 시작하면 Amazon Lex V2는 세션을 생성합니다. 애플리케이션과 Amazon Lex V2 간에 교환된 정보는 대화의 세션 상태를 구성합니다. 요청하면 지정한 식별자 조합으로 세션이 식별됩니다. 세션 식별자에 대한 자세한 내용은 RecognizeText 또는 RecognizeUtterance 작업의 sessionId 필드를 참조하세요.

애플리케이션과 봇 간에 전송된 세션 상태를 수정할 수 있습니다. 예를 들어 세션에 대한 사용자 정의 정보가 포함된 세션 속성을 생성 및 수정할 수 있으며, 다음 표현을 해석하도록 대화 컨텍스트를 설정하여 대화의 흐름을 변경할 수 있습니다.

세션 상태를 업데이트할 수 있는 방법에는 세 가지가 있습니다.

  • RecognizeText 또는 RecognizeUtterance 작업에 대한 호출의 일부로 세션 정보를 인라인으로 전달합니다.

  • 첫 번째 방법은 대화가 바뀔 때마다 호출되는 RecognizeText 또는 RecognizeUtterance 작업을 통해 Lambda 함수를 사용하는 것입니다. 자세한 내용은 통합 및 AWS Lambda 기능을 봇에 단원을 참조하십시오. 다른 하나는 애플리케이션의 Amazon Lex V2 런타임을 사용하여 세션 상태를 변경하는 API 것입니다.

  • 봇과의 대화에 대한 세션 정보를 관리할 수 있도록 하는 작업을 사용합니다. 작업은 PutSession 작업, GetSession 작업 및 DeleteSession 작업입니다. 이러한 작업을 사용하여 봇과의 사용자 세션 상태에 대한 정보를 얻고 상태를 세부적으로 제어할 수 있습니다.

현재 세션 상태를 확인하려는 경우 GetSession 작업을 사용합니다. 이 작업은 사용자와의 대화 상태, 설정된 모든 세션 속성, 현재 의도에 대한 슬롯 값, Amazon Lex V2가 사용자의 발화와 일치하는 가능한 의도로 식별한 기타 의도를 포함하여 세션의 현재 상태를 반환합니다.

PutSession 작업을 사용하면 현재 세션 상태를 직접 조작할 수 있습니다. 봇이 다음에 수행할 대화 작업의 유형과 Amazon Lex V2가 사용자에게 보내는 메시지를 포함하여 세션을 설정할 수 있습니다. 이를 통해 봇과의 대화 흐름을 제어할 수 있습니다. Amazon Lex V2가 봇의 다음 작업을 결정하도록 하려면 대화 작업 type 필드를 Delegate로 설정합니다.

PutSession 작업을 사용하여 봇과의 새로운 세션을 만들고 봇이 시작해야 하는 의도를 설정할 수 있습니다. PutSession 작업을 사용하여 한 의도에서 다른 의도로 변경할 수도 있습니다. 세션을 만들거나 의도를 변경할 때 슬롯 값 및 세션 속성 등의 세션 상태를 설정할 수도 있습니다. 새 의도를 마치면 이전 의도를 다시 시작할 수 있습니다.

PutSession 작업의 응답에는 RecognizeUtterance 작업과 동일한 정보가 포함되어 있습니다. RecognizeUtterance 작업의 응답과 마찬가지로 이 정보를 사용하여 사용자에게 다음 정보를 입력하라는 메시지를 표시할 수 있습니다.

DeleteSession 작업을 사용하여 기존 세션을 제거하고 새 세션을 시작합니다. 예를 들어 봇을 테스트하려는 경우 DeleteSession 작업을 사용하여 봇에서 테스트 세션을 제거할 수 있습니다.

이 세션 작업은 이행 Lambda 함수와 함께 작동합니다. 예를 들어 Lambda 함수가 이행 상태로 Failed를 반환하는 경우, PutSession 작업을 사용하여 대화 작업 유형을 close로 설정하고 fulfillmentStateReadyForFulfillment로 설정하여 이행 단계를 재시도할 수 있습니다.

다음은 세션 작업으로 수행할 수 있는 작업입니다.

  • 봇이 사용자를 기다리지 않고 대화를 시작하도록 합니다.

  • 대화 중에 의도를 전환합니다.

  • 이전 의도로 돌아갑니다.

  • 상호 작용 중에 대화를 시작하거나 다시 시작합니다.

  • 슬롯 값의 유효성을 검사하고 봇이 유효하지 않은 값을 다시 묻도록 합니다.

이러한 각 내용은 아래에 자세히 설명되어 있습니다.

새 세션 시작

봇이 사용자와 대화를 시작하도록 하려면 PutSession 작업을 사용하면 됩니다.

  • 슬롯이 없는 환영 의도와 사용자에게 의도를 명시하라는 결론 메시지를 만듭니다. 예를 들어 "무엇을 주문하시겠어요? '음료 주문' 또는 '피자 주문.'이라고 말할 수 있습니다.

  • PutSession 작업을 호출합니다. 의도 이름을 환영 의도의 이름으로 설정하고 대화 작업을 Delegate로 설정합니다.

  • Amazon Lex는 환영 의도의 프롬프트에 응답하여 사용자와의 대화를 시작합니다.

의도 전환

PutSession 작업을 사용하여 한 의도에서 다른 의도로 전환할 수 있습니다. 이 작업을 사용하여 이전 의도로 다시 전환할 수도 있습니다. PutSession 작업을 사용하여 새 의도의 슬롯 값 또는 세션 속성을 설정할 수 있습니다.

  • PutSession 작업을 호출합니다. 의도 이름을 새 의도의 이름으로 설정하고 대화 작업을 Delegate로 설정합니다. 새 의도에 필요한 슬롯 값 또는 세션 속성을 설정할 수도 있습니다.

  • Amazon Lex는 새 의도를 사용하여 사용자와의 대화를 시작합니다.

이전 의도 다시 시작

이전 의도를 다시 시작하려면 GetSession 작업을 사용하여 의도의 상태를 가져오고 필요한 상호 작용을 수행한 다음 PutSession 작업을 사용하여 의도를 이전 대화 상태로 설정합니다.

  • GetSession 작업을 호출합니다. 의도의 상태를 저장합니다.

  • 다른 의도 이행과 같은 다른 상호 작용을 수행합니다.

  • 이전 의도에 대해 저장된 정보를 사용하여 PutSession 작업을 호출합니다. 그러면 사용자가 대화의 같은 위치에 있는 이전 의도로 돌아갑니다.

경우에 따라 봇과 사용자의 대화를 다시 시작해야 할 수 있습니다. 예를 들어 고객 서비스 봇을 만들었다고 가정하겠습니다. 애플리케이션은 사용자가 고객 서비스 담당자와 대화해야 한다고 결정합니다. 사용자와 대화한 후 이 담당자는 수집한 정보와 함께 대화를 다시 봇에 전달할 수 있습니다.

세션을 다시 시작하려면 다음과 비슷한 단계를 사용합니다.

  • 애플리케이션은 사용자가 고객 서비스 담당자와 대화해야 한다고 결정합니다.

  • GetSession 작업을 사용하여 의도의 현재 대화 상태를 가져옵니다.

  • 고객 서비스 담당자는 사용자와 대화하고 문제를 해결합니다.

  • PutSession 작업을 사용하여 의도의 대화 상태를 설정합니다. 여기에는 슬롯 값 설정, 세션 속성 설정 또는 의도 변경이 포함될 수 있습니다.

  • 봇이 사용자와의 대화를 다시 시작합니다.

슬롯 값의 유효성 검사

클라이언트 애플리케이션을 사용하여 봇에 대한 응답의 유효성을 검사할 수 있습니다. 응답이 유효하지 않은 경우 PutSession 작업을 사용하여 사용자로부터 새 응답을 얻을 수 있습니다. 예를 들어 꽃 주문 봇이 튤립, 장미, 백합만 팔 수 있다고 가정하겠습니다. 사용자가 카네이션을 주문하면 애플리케이션이 다음을 수행할 수 있습니다.

  • PostText 또는 PostContent 응답에서 반환된 슬롯 값을 검사합니다.

  • 슬롯 값이 유효하지 않으면 PutSession 작업을 호출합니다. 애플리케이션이 슬롯 값을 지우고, slotToElicit 필드를 설정하고, dialogAction.type 값을 elicitSlot으로 설정합니다. 선택적으로, Amazon Lex가 슬롯 값을 유도하기 위해 사용하는 메시지를 변경하려는 경우 messagemessageFormat 필드를 설정할 수 있습니다.