Setting Session Attributes - Amazon Lex V1

Amazon Lex V2를 사용하는 경우 Amazon Lex V2 가이드를 대신 참조하십시오.

 

Amazon Lex V1을 사용하는 경우 봇을 Amazon Lex V2로 업그레이드하는하는 것이 좋습니다. 더 이상 V1에 새로운 기능을 추가하지 않으므로 모든 새 봇에 V2를 사용할 것을 강력히 권장합니다.

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

Setting Session Attributes

세션 속성에는 세션 중에 봇과 클라이언트 애플리케이션 간에 전달되는 애플리케이션별 정보가 포함됩니다. Amazon Lex는 봇에 대해 구성된 모든 Lambda 함수에 세션 속성을 전달합니다. Lambda 함수가 세션 속성을 추가 또는 업데이트하는 경우 Amazon Lex는 새로운 정보를 클라이언트 애플리케이션에 다시 전달합니다. 예:

Lambda 함수의 세션 속성을 사용하여 봇을 초기화하고 프롬프트 및 응답 카드를 사용자 지정합니다. 예:

  • 초기화 — 피자 주문 봇에서 클라이언트 애플리케이션은 PostContent 또는 PostText 작업에 대한 첫 번째 호출 시 사용자의 위치를 세션 속성으로 전달합니다. 예: "Location": "111 Maple Street". Lambda 함수는 이 정보를 사용하여 주문할 수 있는 가장 가까운 피자 가게를 찾습니다.

  • 프롬프트 개인화 - 세션 속성을 참조하도록 프롬프트와 응답 카드를 구성합니다. 예를 들어, "[FirstName]님, 어떤 토핑을 드시겠어요?" 사용자의 이름을 세션 속성({"FirstName": "Jo"})으로 전달하면 Amazon Lex가 자리 표시자를 이름으로 대체합니다. 그런 다음 사용자에게 "Jo님, 어떤 토핑을 원하세요?"라는 맞춤형 프롬프트를 보냅니다.

세션 속성은 세션 기간 동안 암호화된 저장소에서 지속됩니다. Amazon Lex는 세션이 종료될 때까지 이를 암호화된 데이터 스토어에 저장합니다. 클라이언트는 sessionAttributes 필드가 값으로 설정된 상태에서 PostContent 또는 PostText 작업을 호출하여 요청에 세션 속성을 생성할 수 있습니다. Lambda 함수는 응답에 세션 속성을 생성할 수 있습니다. 클라이언트 또는 Lambda 함수가 세션 속성을 생성한 후, 저장된 속성 값은 클라이언트 애플리케이션이 Amazon Lex에 대한 요청에 sessionAttribute 필드를 포함하지 않을 때마다 사용됩니다.

예를 들어, 다음과 같은 두 개의 세션 속성 {"x": "1", "y": "2"}이 있다고 가정하겠습니다. 클라이언트가 sessionAttributes 필드를 지정하지 않고 PostContent or PostText 작업을 호출하면 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" }

PostText 작업의 경우 다음과 같이 sessionAttributes 필드를 사용하여 요청 본문에 맵을 삽입합니다.

"sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }

PostContent 작업의 경우, 맵을 base64로 인코딩한 다음 x-amz-lex-session-attributes 헤더로 전송합니다.

세션 속성으로 이진수 또는 구조화된 데이터를 보내는 경우 먼저 데이터를 단순 문자열로 변환해야 합니다. 자세한 내용은 복합 속성 설정을 참조하세요.