Lex V2 봇의 세션 특성 설정
세션 속성에는 세션 중에 봇과 클라이언트 애플리케이션 간에 전달되는 애플리케이션별 정보가 포함됩니다. 세션 속성은 봇에 대해 구성된 모든 Lambda 함수로 전달됩니다. Lambda 함수가 세션 속성을 추가 또는 업데이트하는 경우에는 새로운 정보를 클라이언트 애플리케이션에 다시 전달합니다.
Lambda 함수의 세션 속성을 사용하여 봇을 초기화하고 프롬프트 및 응답 카드를 사용자 지정합니다. 예:
-
초기화 – 피자 주문 봇에서 클라이언트 애플리케이션은 RecognizeText 또는 RecognizeUtterance 작업에 대한 첫 번째 직접 호출 시 사용자의 위치를 세션 속성으로 전달합니다. 예를 들어
"Location": "111 Maple Street"입니다. Lambda 함수는 이 정보를 사용하여 주문할 수 있는 가장 가까운 피자 가게를 찾습니다. -
프롬프트 개인화 - 세션 속성을 참조하도록 프롬프트와 응답 카드를 구성합니다. 예를 들어, "[FirstName]님, 어떤 토핑을 드시겠어요?" 사용자의 이름을 세션 속성(
{"FirstName": "Vivian"})으로 전달하면 Amazon Lex 가 자리 표시자를 이름으로 대체합니다. 그런 다음 사용자에게 “Hey Vivian, 어떤 토핑을 원하세요?”라는 맞춤형 프롬프트를 보냅니다.
세션 속성은 세션이 지속되는 동안 유지됩니다. 세션이 종료될 때까지 암호화된 데이터 스토어에 저장됩니다. 클라이언트는 sessionAttributes 필드가 값으로 설정된 상태에서 RecognizeText 또는 RecognizeUtterance 작업을 직접적으로 호출하여 요청에 세션 속성을 생성할 수 있습니다. Lambda 함수 는 응답에 세션 속성을 생성할 수 있습니다. 클라이언트 또는 Lambda 함수가 세션 속성을 생성한 후, 저장된 속성 값은 클라이언트 애플리케이션이 요청에 sessionAttribute 필드를 포함하지 않을 때마다 사용됩니다.
예를 들어, 다음과 같은 두 개의 세션 속성 {"x":
"1", "y": "2"}이 있다고 가정하겠습니다. 클라이언트가 sessionAttributes 필드를 지정하지 않고 RecognizeText 또는 RecognizeUtterance 작업을 직접 호출하면 Amazon Lex는 저장된 세션 속성({"x": 1, "y": 2})과 함께 Lambda 함수를 직접 호출합니다. Lambda 함수가 세션 속성을 반환하지 않는 경우 Amazon Lex는 저장된 세션 속성을 클라이언트 애플리케이션에 반환합니다.
클라이언트 애플리케이션 또는 Lambda 함수가 세션 속성을 전달한 경우, Amazon Lex는 저장된 세션 속성 업데이트합니다. {"x": 2}과 같은 기존 값을 전달하면 저장된 값이 업데이트됩니다. 새 세션 속성 세트(예를 들어, {"z": 3}) 를 전달하면 기존 값은 제거되고 새 값만 유지됩니다. 빈 맵 {}가 전달되면 저장된 값이 지워집니다.
세션 속성을 Amazon Lex로 전송하려면 속성의 string-to-string 맵을 생성합니다. 다음은 세션 속성을 매핑하는 방법을 보여줍니다.
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
RecognizeText 작업의 경우 다음과 같이 sessionState 구조의 sessionAttributes 필드를 사용하여 요청 본문에 맵을 삽입합니다.
"sessionState": { "sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" } }
RecognizeUtterance 작업의 경우, 맵을 base64로 인코딩한 다음 x-amz-lex-session-state 헤더의 일부로 전송합니다.
세션 속성으로 이진수 또는 구조화된 데이터를 보내는 경우 먼저 데이터를 단순 문자열로 변환해야 합니다. 자세한 내용은 Lex V2 봇에서 복잡한 특성 설정 단원을 참조하세요.