Amazon Lex V2를 사용하는 경우 Amazon Lex V2 가이드를 대신 참조하십시오.
Amazon Lex V1을 사용하는 경우 봇을 Amazon Lex V2로 업그레이드하는하는 것이 좋습니다. 더 이상 V1에 새로운 기능을 추가하지 않으므로 모든 새 봇에 V2를 사용할 것을 강력히 권장합니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Lex API로 세션 관리
사용자가 봇과 대화를 시작하면 Amazon Lex는 세션을 생성합니다. 애플리케이션과 Amazon Lex 간에 교환된 정보는 대화의 세션 상태를 구성합니다. 요청하면 지정한 봇 이름과 사용자 식별자 조합으로 세션이 식별됩니다. 사용자 식별자에 대한 자세한 내용은 PostContent 또는 PostText 작업의 userId
필드를 참조하십시오.
세션 작업의 응답에는 사용자로 특정 세션을 식별하는 고유한 세션 식별자가 포함됩니다. 테스트 중에 또는 봇의 문제 해결을 위해 이 식별자를 사용할 수 있습니다.
애플리케이션과 봇 간에 전송된 세션 상태를 수정할 수 있습니다. 예를 들어 세션에 대한 사용자 정의 정보가 포함된 세션 속성을 생성 및 수정할 수 있으며, 다음 표현을 해석하도록 대화 컨텍스트를 설정하여 대화의 흐름을 변경할 수 있습니다.
세션 상태를 업데이트할 수 있는 방법에는 두 가지가 있습니다. 첫 번째 방법은 대화가 바뀔 때마다 호출되는 PostContent
또는 PostText
작업과 함께 Lambda 함수를 사용하는 것입니다. 자세한 내용은 Lambda 함수 사용을 참조하세요. 다른 방법은 애플리케이션에서 Amazon Lex 런타임 API를 사용하여 세션 상태를 변경하는 것입니다.
Amazon Lex 런타임 API는 봇과의 대화에 대한 세션 정보를 관리할 수 있도록 하는 작업을 제공합니다. 이 작업은 PutSession 작업, GetSession 작업, DeleteSession 작업입니다. 이러한 작업을 사용하여 봇과의 사용자 세션 상태에 대한 정보를 얻고 상태를 세부적으로 제어할 수 있습니다.
현재 세션 상태를 확인하려는 경우 GetSession
작업을 사용합니다. 이 작업은 사용자와의 대화 상태, 설정된 모든 세션 속성, 사용자가 상호 작용한 마지막 세 의도에 대한 슬롯 값을 포함하여 현재 세션 상태를 반환합니다.
PutSession
작업을 사용하면 현재 세션 상태를 직접 조작할 수 있습니다. 봇이 다음으로 수행할 대화 작업의 유형을 설정할 수 있습니다. 이를 통해 봇과의 대화 흐름을 제어할 수 있습니다. Amazon Lex가 봇의 다음 작업을 결정하도록 하려면 대화 작업 type
필드를 Delegate
로 설정합니다.
PutSession
작업을 사용하여 봇과의 새로운 세션을 만들고 봇이 시작해야 하는 의도를 설정할 수 있습니다. PutSession
작업을 사용하여 한 의도에서 다른 의도로 변경할 수도 있습니다. 세션을 만들거나 의도를 변경할 때 슬롯 값 및 세션 속성 등의 세션 상태를 설정할 수도 있습니다. 새 의도를 마치면 이전 의도를 다시 시작할 수 있습니다. GetSession
작업을 사용하여 Amazon Lex에서 이전 의도의 대화 상태를 가져오고 이 정보를 사용하여 의도의 대화 상태를 설정할 수 있습니다.
PutSession
작업의 응답에는 PostContent
작업과 동일한 정보가 포함되어 있습니다. PostContent
작업의 응답과 마찬가지로 이 정보를 사용하여 사용자에게 다음 정보를 입력하라는 메시지를 표시할 수 있습니다.
DeleteSession
작업을 사용하여 기존 세션을 제거하고 새 세션을 시작합니다. 예를 들어 봇을 테스트하려는 경우 DeleteSession
작업을 사용하여 봇에서 테스트 세션을 제거할 수 있습니다.
이 세션 작업은 이행 Lambda 함수와 함께 작동합니다. 예를 들어 Lambda 함수가 이행 상태로 Failed
를 반환하는 경우, PutSession
작업을 사용하여 대화 작업 유형을 close
로 설정하고 fulfillmentState
를 ReadyForFulfillment
로 설정하여 이행 단계를 재시도할 수 있습니다.
다음은 세션 작업으로 수행할 수 있는 작업입니다.
-
봇이 사용자를 기다리지 않고 대화를 시작하도록 합니다.
-
대화 중에 의도를 전환합니다.
-
이전 의도로 돌아갑니다.
-
상호 작용 중에 대화를 시작하거나 다시 시작합니다.
-
슬롯 값의 유효성을 검사하고 봇이 유효하지 않은 값을 다시 묻도록 합니다.
이러한 각 내용은 아래에 자세히 설명되어 있습니다.
의도 전환
PutSession
작업을 사용하여 한 의도에서 다른 의도로 전환할 수 있습니다. 이 작업을 사용하여 이전 의도로 다시 전환할 수도 있습니다. PutSession
작업을 사용하여 새 의도의 슬롯 값 또는 세션 속성을 설정할 수 있습니다.
-
PutSession
작업을 호출합니다. 의도 이름을 새 의도의 이름으로 설정하고 대화 작업을Delegate
로 설정합니다. 새 의도에 필요한 슬롯 값 또는 세션 속성을 설정할 수도 있습니다. -
Amazon Lex는 새 의도를 사용하여 사용자와의 대화를 시작합니다.
이전 의도 다시 시작
이전 의도를 다시 시작하려면 GetSession
작업을 사용하여 의도의 요약을 가져온 후, PutSession
작업을 사용하여 의도를 이전 대화 상태로 설정합니다.
-
GetSession
작업을 호출합니다. 작업의 응답에는 사용자가 상호 작용한 마지막 세 의도의 대화 상태에 대한 요약이 포함되어 있습니다. -
의도 요약의 정보를 사용하여
PutSession
작업을 호출합니다. 그러면 사용자가 대화의 같은 위치에 있는 이전 의도로 돌아갑니다.
경우에 따라 봇과 사용자의 대화를 다시 시작해야 할 수 있습니다. 예를 들어 고객 서비스 봇을 만들었다고 가정하겠습니다. 애플리케이션은 사용자가 고객 서비스 담당자와 대화해야 한다고 결정합니다. 사용자와 대화한 후 이 담당자는 수집한 정보와 함께 대화를 다시 봇에 전달할 수 있습니다.
세션을 다시 시작하려면 다음과 비슷한 단계를 사용합니다.
-
애플리케이션은 사용자가 고객 서비스 담당자와 대화해야 한다고 결정합니다.
-
GetSession
작업을 사용하여 의도의 현재 대화 상태를 가져옵니다. -
고객 서비스 담당자는 사용자와 대화하고 문제를 해결합니다.
-
PutSession
작업을 사용하여 의도의 대화 상태를 설정합니다. 여기에는 슬롯 값 설정, 세션 속성 설정 또는 의도 변경이 포함될 수 있습니다. -
봇이 사용자와의 대화를 다시 시작합니다.
나중에 찾을 수 있도록 PutSession
작업 checkpointLabel
파라미터를 사용하여 의도에 레이블을 지정할 수 있습니다. 예를 들어, 고객에게 정보를 요청하는 봇은 고객이 정보를 수집하는 동안 Waiting
의도로 들어갈 수 있습니다. 이 봇은 현재 의도에 대한 체크포인트 레이블을 만든 다음 Waiting
의도를 시작합니다. 고객이 돌아오면 봇은 체크포인트 레이블을 사용하여 이전 의도를 찾아 다시 전환할 수 있습니다.
의도는 GetSession
작업에 의해 반환된 recentIntentSummaryView
구조에 있어야 합니다. GetSession
작업 요청에 체크포인트 레이블을 지정하는 경우 해당 체크포인트 레이블이 있는 의도를 최대 3개까지 반환합니다.
-
GetSession
작업을 사용하여 현재 세션 상태를 가져옵니다. -
PutSession
작업을 사용하여 마지막 의도에 체크포인트 레이블을 추가합니다. 필요한 경우 이PutSession
호출을 사용하여 다른 의도로 전환할 수 있습니다. -
레이블이 지정된 의도로 다시 전환해야 하는 경우
GetSession
작업을 호출하여 최근 의도 목록을 반환합니다. Amazon Lex에서 지정된 체크포인트 레이블이 있는 의도만 반환하도록checkpointLabelFilter
파라미터를 사용할 수 있습니다.
새 세션 시작
봇이 사용자와 대화를 시작하도록 하려면 PutSession
작업을 사용하면 됩니다.
-
슬롯이 없는 환영 의도와 사용자에게 의도를 명시하라는 결론 메시지를 만듭니다. 예를 들어 "무엇을 주문하시겠어요? '음료 주문' 또는 '피자 주문.'이라고 말할 수 있습니다.
-
PutSession
작업을 호출합니다. 의도 이름을 환영 의도의 이름으로 설정하고 대화 작업을Delegate
로 설정합니다. -
Amazon Lex는 환영 의도의 프롬프트에 응답하여 사용자와의 대화를 시작합니다.
슬롯 값 유효성 검사
클라이언트 애플리케이션을 사용하여 봇에 대한 응답의 유효성을 검사할 수 있습니다. 응답이 유효하지 않은 경우 PutSession
작업을 사용하여 사용자로부터 새 응답을 얻을 수 있습니다. 예를 들어 꽃 주문 봇이 튤립, 장미, 백합만 팔 수 있다고 가정하겠습니다. 사용자가 카네이션을 주문하면 애플리케이션이 다음을 수행할 수 있습니다.
-
PostText
또는PostContent
응답에서 반환된 슬롯 값을 검사합니다. -
슬롯 값이 유효하지 않으면
PutSession
작업을 호출합니다. 애플리케이션이 슬롯 값을 지우고,slotToElicit
필드를 설정하고,dialogAction.type
값을elicitSlot
으로 설정합니다. 선택적으로, Amazon Lex가 슬롯 값을 유도하기 위해 사용하는 메시지를 변경하려는 경우message
및messageFormat
필드를 설정할 수 있습니다.