Amazon Lex V2를 사용하는 경우 Amazon Lex V2 가이드를 대신 참조하십시오.
Amazon Lex V1을 사용하는 경우 봇을 Amazon Lex V2로 업그레이드하는하는 것이 좋습니다. 더 이상 V1에 새로운 기능을 추가하지 않으므로 모든 새 봇에 V2를 사용할 것을 강력히 권장합니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
정보 흐름의 세부 정보
이 연습에서는 Amazon Lex 콘솔에서 제공되는 테스트 창 클라이언트를 사용하여 Amazon Lex BookTrip 봇과의 대화에 참여했습니다. 이 섹션에서는 다음에 대해 설명합니다.
-
클라이언트와 Amazon Lex 간의 데이터 흐름.
이 섹션에서는 클라이언트가
PostText
런타임 API를 사용하여 Amazon Lex에 요청을 보내고 그에 따라 요청 및 응답의 세부 정보를 보여 준다고 가정합니다.PostText
런타임 API에 대한 자세한 내용은 PostText을 참조하십시오.참고
클라이언트가
PostContent
API를 사용할 때의 클라이언트와 Amazon Lex 간의 정보 흐름의 예는 2a단계(선택 사항): 음성 정보 흐름의 세부 정보 검토(콘솔) 을 참조하십시오. -
Amazon Lex와 Lamba 함수 간의 데이터 흐름. 자세한 내용은 Lambda 함수 입력 이벤트 및 응답 형식을 참조하세요.
데이터 흐름: 호텔 예약 의도
이 섹션에서는 각 사용자가 입력한 후에 일어나는 일을 설명합니다.
-
사용자: "호텔 예약해줘"
-
클라이언트(콘솔)는 Amazon Lex에 다음 PostText 요청을 보냅니다.
POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"book a hotel", "sessionAttributes":{} }요청 URI 및 본문 모두 Amazon Lex에 다음 정보를 제공합니다.
-
요청 URI – 봇 이름(BookTrip), 봇 별칭($LATEST) 및 사용자 이름을 제공합니다. 후행
text
는 이것이PostText
API 요청(PostContent
가 아님)임을 나타냅니다. -
요청 본문 – 사용자 입력(
inputText
)과 빈sessionAttributes
를 포함합니다. 처음에는 빈 객체이며, Lambda 함수가 먼저 세션 속성을 설정합니다.
-
-
inputText
에서 Amazon Lex는 의도(BookHotel)를 감지합니다. 이 의도는 사용자 데이터 초기화/검증을 위한 코드 후크인 Lambda 함수로 구성됩니다. 따라서 Amazon Lex는 다음 정보를 이벤트 파라미터로 전달하여 Lambda 함수를 호출합니다(입력 이벤트 형식 참조).{ "messageVersion":"1.0", "invocationSource":"DialogCodeHook", "userId":"wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes":{ }, "bot":{ "name":"BookTrip", "alias":null, "version":"$LATEST" }, "outputDialogMode":"Text", "currentIntent":{ "name":"BookHotel", "slots":{ "RoomType":null, "CheckInDate":null, "Nights":null, "Location":null }, "confirmationStatus":"None" } }
클라이언트가 보낸 정보 외에도 Amazon Lex에는 다음과 같은 데이터가 추가로 포함되어 있습니다.
-
messageVersion
- Amazon Lex는 현재 1.0 버전만 지원합니다. -
invocationSource
- Lambda 함수 호출의 목적을 나타냅니다. 이 경우에 목적은 사용자 데이터 초기화 및 검증을 수행하는 것입니다(이때 Amazon Lex는 사용자가 의도를 이행하기 위한 모든 슬롯 데이터를 제공하지 않았음을 인식함). -
currentIntent
– 모든 슬롯 값은 null로 설정됩니다.
-
-
이때 모든 슬롯 값은 null입니다. Lambda 함수가 검증할 것이 없습니다. Lambda 함수는 Amazon Lex에 다음 응답을 반환합니다. 응답 형식에 대한 자세한 내용은 응답 형식섹션을 참조하십시오.
{ "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\",\"Location\":null,\"RoomType\":null,\"CheckInDate\":null,\"Nights\":null}" }, "dialogAction":{ "type":"Delegate", "slots":{ "RoomType":null, "CheckInDate":null, "Nights":null, "Location":null } } }
참고
-
currentReservation
– Lambda 함수에는 이 세션 속성이 포함되어 있습니다. 해당 값은 현재 슬롯 정보 및 예약 유형의 사본입니다.Lambda 함수 및 클라이언트만 이러한 세션 속성을 업데이트할 수 있습니다. Amazon Lex는 단순히 이 값을 전달합니다.
-
dialogAction.type
– Lambda 함수는 이 값을Delegate
로 설정하여 일련의 다음 조치에 대한 책임을 Amazon Lex에 위임합니다.Lambda 함수가 사용자 데이터 검증에서 무언가 감지한 경우 다음에 해야 할 조치를 Amazon Lex에게 지시합니다.
-
-
Amazon Lex는
dialogAction.type
에 따라 일련의 다음 조치를 결정하고,Location
슬롯에 대한 사용자의 데이터를 유도합니다. 의도 구성에 따라 이 슬롯에 대한 프롬프트 메시지 중 하나("어떤 도시에서 묵고 싶으세요?")를 선택한 다음, 사용자에게 다음과 같은 응답을 보냅니다.세션 속성이 클라이언트에 전달됩니다.
클라이언트는 응답을 읽은 다음 "어떤 도시에서 묵고 싶으세요?"이라는 메시지를 표시합니다.
-
-
사용자: "모스크바"
-
클라이언트는 Amazon Lex에 다음
PostText
요청을 보냅니다(가독성을 위해 줄 바꿈이 추가됨).POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"Moscow", "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\", \"Location\":null, \"RoomType\":null, \"CheckInDate\":null, \"Nights\":null}" } }클라이언트에는
inputText
외에도 클라이언트가 받은 동일한currentReservation
세션 속성이 포함됩니다. -
Amazon Lex는 먼저 현재 의도의 맥락에서
inputText
를 해석합니다(이 서비스는 특정 사용자에게 슬롯에 대한 정보를 요청했음을 기억). 현재 의도에 대한 슬롯 값을 업데이트하고, 다음 이벤트를 사용하여 Lambda 함수를 호출합니다.{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook", "userId": "wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Hotel\",\"Location\":null,\"RoomType\":null,\"CheckInDate\":null,\"Nights\":null}" }, "bot": { "name": "BookTrip", "alias": null, "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "BookHotel", "slots": { "RoomType": null, "CheckInDate": null, "Nights": null, "Location": "Moscow" }, "confirmationStatus": "None" } }
참고
-
invocationSource
는 계속DialogCodeHook
입니다. 이 단계에서는 사용자 데이터만 검증합니다. -
Amazon Lex는 단지 Lambda 함수에 세션 속성을 전달합니다.
-
currentIntent.slots
의 경우Amazon Lex는Location
슬롯을Moscow
로 업데이트했습니다.
-
-
Lambda 함수는 사용자 데이터 검증을 수행하고
Moscow
가 잘못된 위치라고 판단합니다.참고
이 연습의 Lambda 함수에는 유효한 도시가 나열된 간단한 목록이 있으며,
Moscow
는 이 목록에 없습니다. 프로덕션 애플리케이션에서는 백엔드 데이터베이스를 사용하여 이 정보를 확인할 수 있습니다.슬롯 값을 null로 다시 재설정하고, 다음 응답을 보내 사용자에게 다른 값을 입력하라는 메시지를 표시하도록 Amazon Lex에 지시합니다.
{ "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Moscow\",\"RoomType\":null,\"CheckInDate\":null,\"Nights\":null}" }, "dialogAction": { "type": "ElicitSlot", "intentName": "BookHotel", "slots": { "RoomType": null, "CheckInDate": null, "Nights": null, "Location": null }, "slotToElicit": "Location", "message": { "contentType": "PlainText", "content": "We currently do not support Moscow as a valid destination. Can you try a different city?" } } }
참고
-
currentIntent.slots.Location
은 null로 재설정됩니다. -
dialogAction.type
은ElicitSlot
으로 설정됩니다. 이는 다음을 제공하여 사용자에게 메시지를 다시 표시하도록 Amazon Lex에 지시합니다.-
dialogAction.slotToElicit
– 사용자의 데이터를 유도하는 슬롯입니다. -
dialogAction.message
– 사용자에게 전달할message
입니다.
-
-
-
Amazon Lex는
dialogAction.type
을 확인하고 다음 응답에서 클라이언트에 정보를 전달합니다.클라이언트는 단순히 "현재 유효한 목적지로 모스크바는 지원되지 않습니다. 다른 도시를 선택하시겠어요?"라는 메시지를 표시합니다.
-
-
사용자: "시카고"
-
클라이언트(콘솔)는 Amazon Lex에 다음
PostText
요청을 보냅니다.POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"Chicago", "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\", \"Location\":\"Moscow\", \"RoomType\":null, \"CheckInDate\":null, \"Nights\":null}" } } -
Amazon Lex는 컨텍스트를 파악하고 이를 통해
Location
슬롯에 대한 데이터를 유도했습니다. 이 컨텍스트에서inputText
값이Location
슬롯에 대한 것임을 압니다. 그런 다음, 다음 이벤트를 보내 Lambda 함수를 호출합니다.{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook", "userId": "wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Hotel\",\"Location\":Moscow,\"RoomType\":null,\"CheckInDate\":null,\"Nights\":null}" }, "bot": { "name": "BookTrip", "alias": null, "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "BookHotel", "slots": { "RoomType": null, "CheckInDate": null, "Nights": null, "Location": "Chicago" }, "confirmationStatus": "None" } }
Amazon Lex는
currentIntent.slots
슬롯을Location
로 설정하여Chicago
를 업데이트했습니다. -
DialogCodeHook
의invocationSource
값에 따라 Lambda 함수는 사용자 데이터 검증을 수행합니다.Chicago
를 유효한 슬롯 값으로 인식하고, 세션 속성을 이에 따라 업데이트한 다음, Amazon Lex에 다음 응답을 반환합니다.{ "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":null,\"CheckInDate\":null,\"Nights\":null}" }, "dialogAction": { "type": "Delegate", "slots": { "RoomType": null, "CheckInDate": null, "Nights": null, "Location": "Chicago" } } }
참고
-
currentReservation
– Lambda 함수는Location
을Chicago
로 설정하여 이 세션 속성을 업데이트합니다. -
dialogAction.type
–Delegate
로 설정됩니다. 사용자 데이터가 유효했으므로 Lambda 함수는 일련의 다음 조치를 선택하도록 Amazon Lex에 지시합니다.
-
-
dialogAction.type
에 따라 Amazon Lex는 일련의 다음 조치를 선택합니다. Amazon Lex는 더 많은 슬롯 데이터가 필요함을 알고, 의도 구성에 따라 우선 순위가 가장 높은 채워지지 않은 다음 슬롯(CheckInDate
)을 선택합니다. 의도 구성에 따라 이 슬롯에 대한 프롬프트 메시지 중 하나("어떤 도시에서 묵고 싶으세요?")를 선택하고, 클라이언트에 다음 응답을 다시 보냅니다.클라이언트는 "어떤 도시에서 묵고 싶으세요?"라는 메시지를 표시합니다.
-
-
사용자의 상호 작용은 사용자가 데이터를 제공하며 계속됩니다. Lambda 함수는 데이터를 검증한 다음, 일련의 다음 조치를Amazon Lex에 위임합니다. 결과적으로 사용자가 모든 슬롯 데이터를 제공하고 Lambda 함수가 모든 사용자 입력을 검증하면 Amazon Lex는 모든 슬롯 데이터를 보유했음을 인식합니다.
참고
이 연습에서는 사용자가 모든 슬롯 데이터를 제공하면 Lambda 함수가 호텔 예약 가격을 계산하고 다른 세션 속성(
currentReservationPrice
)으로 이를 반환합니다.이 시점에서 의도를 이행할 준비가 되었으나, Amazon Lex가 의도를 이행하기 전에 BookHotel 의도가 사용자 확인을 요구하는 확인 프롬프트로 구성됩니다. 따라서 Amazon Lex는 호텔을 예약하기 전에 확인을 요청하는 다음 메시지를 클라이언트에 보냅니다.
클라이언트는 "네, 시작 날짜 2016-12-18, 시카고에서 5박 확인했습니다. 예약을 진행할까요?"
-
사용자: "예"
-
클라이언트(콘솔)는 Amazon Lex에 다음
PostText
요청을 보냅니다.POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"Yes", "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\", \"Location\":\"Chicago\", \"RoomType\":\"queen\", \"CheckInDate\":\"2016-12-18\", \"Nights\":\"5\"}", "currentReservationPrice":"1195" } } -
Amazon Lex는 현재 의도를 확인하는 컨텍스트에서
inputText
를 해석합니다. Amazon Lex는 사용자가 예약을 진행하기를 원한다고 이해합니다. 이때 Amazon Lex는 다음 이벤트를 보내 의도를 이행하도록 Lambda 함수를 호출합니다. 이벤트에서invocationSource
를FulfillmentCodeHook
로 설정하여 Lambda 함수에 보냅니다. Amazon Lex는 또한 다음과 같이confirmationStatus
을Confirmed
로 설정합니다.{ "messageVersion": "1.0", "invocationSource": "FulfillmentCodeHook", "userId": "wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}", "currentReservationPrice": "956" }, "bot": { "name": "BookTrip", "alias": null, "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "BookHotel", "slots": { "RoomType": "queen", "CheckInDate": "2016-12-18", "Nights": "5", "Location": "Chicago" }, "confirmationStatus": "Confirmed" } }
참고
-
invocationSource
– 이때 Amazon Lex는 이 값을FulfillmentCodeHook
로 설정하여, 의도를 이행하도록 Lambda 함수에 지시합니다. -
confirmationStatus
–Confirmed
로 설정됩니다.
-
-
이때 Lambda 함수는 BookHotel 의도를 이행하며, Amazon Lex는 예약을 완료한 후 다음 응답을 반환합니다.
{ "sessionAttributes": { "lastConfirmedReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}" }, "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled", "message": { "contentType": "PlainText", "content": "Thanks, I have placed your reservation. Please let me know if you would like to book a car rental, or another hotel." } } }
참고
-
lastConfirmedReservation
– Lambda 함수가 추가한 새로운 세션 속성(currentReservation
,currentReservationPrice
대신)입니다. -
dialogAction.type
– Lambda 함수는 이 값을Close
로 설정하여 Amazon Lex가 사용자 응답을 기대하지 않도록 합니다. -
dialogAction.fulfillmentState
–Fulfilled
로 설정되고, 사용자에게 전달할 적절한message
를 포함합니다.
-
-
Amazon Lex는
fulfillmentState
를 검토하고 클라이언트에 다음 응답을 보냅니다.참고
-
dialogState
– Amazon Lex는 이 값을Fulfilled
로 설정합니다. -
message
– Lambda 함수가 제공한 동일한 메시지입니다.
클라이언트가 이 메시지를 표시합니다.
-
-
데이터 흐름: 차량 예약 의도
이 연습에서 BookTrip 봇은 두 가지 의도(BookHotel 및 BookCar)를 지원합니다. 사용자는 호텔을 예약한 후 대화를 계속하여 차량을 예약할 수 있습니다. 세션이 시간 초과되지 않는 한 각 후속 요청에서 클라이언트는 계속해서 세션 속성(여기서는 lastConfirmedReservation
)을 보냅니다. Lambda 함수는 이 정보를 사용하여 BookCar 의도에 대한 슬롯 데이터를 초기화할 수 있습니다. 이는 의도 전반에 걸친 데이터 공유에서 세션 속성을 사용하는 방법을 보여 줍니다.
특히, 사용자가 BookCar 의도를 선택하면 Lambda 함수는 세션 속성의 관련 정보를 사용하여 BookCar 의도에 대한 슬롯(PickUpDate, ReturnDate, PickUpCity)을 미리 채웁니다.
참고
Amazon Lex 콘솔은 지우기 링크를 제공하며, 사용자는 이 링크를 사용하여 이전 세션 속성을 지울 수 있습니다.
대화를 계속하려면 이 절차의 단계를 따릅니다.
-
사용자: "차량도 예약해줘"
-
클라이언트(콘솔)는 Amazon Lex에 다음
PostText
요청을 보냅니다.POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"also book a car", "sessionAttributes":{ "lastConfirmedReservation":""{\"ReservationType\":\"Hotel\", \"Location\":\"Chicago\", \"RoomType\":\"queen\", \"CheckInDate\":\"2016-12-18\", \"Nights\":\"5\"}" } }클라이언트에는
lastConfirmedReservation
세션 속성이 포함되어 있습니다. -
Amazon Lex는
inputText
에서 의도(BookCar)를 감지합니다. 이 의도는 사용자 데이터의 초기화 및 검증을 수행하기 위해 Lambda 함수를 호출하도록 구성되어 있습니다. Amazon Lex는 다음 이벤트를 사용하여 Lambda 함수를 호출합니다.{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook", "userId": "wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes": { "lastConfirmedReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}" }, "bot": { "name": "BookTrip", "alias": null, "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "BookCar", "slots": { "PickUpDate": null, "ReturnDate": null, "DriverAge": null, "CarType": null, "PickUpCity": null }, "confirmationStatus": "None" } }
참고
-
messageVersion
– Amazon Lex는 현재 1.0 버전만 지원합니다. -
invocationSource
– 호출의 목적이 초기화 및 사용자 데이터 검증을 수행하는 것임을 나타냅니다. -
currentIntent
– 의도 이름과 슬롯을 포함합니다. 이때 모든 슬롯 값은 null입니다.
-
-
Lambda 함수는 검증할 필요가 없는 모든 null 슬롯 값을 확인합니다. 그러나 세션 속성을 사용하여 일부 슬롯 값(
PickUpDate
,ReturnDate
,PickUpCity
)을 초기화한 후, 다음 응답을 반환합니다.{ "sessionAttributes": { "lastConfirmedReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}", "currentReservation": "{\"ReservationType\":\"Car\",\"PickUpCity\":null,\"PickUpDate\":null,\"ReturnDate\":null,\"CarType\":null}", "confirmationContext": "AutoPopulate" }, "dialogAction": { "type": "ConfirmIntent", "intentName": "BookCar", "slots": { "PickUpCity": "Chicago", "PickUpDate": "2016-12-18", "ReturnDate": "2016-12-22", "CarType": null, "DriverAge": null }, "message": { "contentType": "PlainText", "content": "Is this car rental for your 5 night stay in Chicago on 2016-12-18?" } } }
참고
-
lastConfirmedReservation
외에도, Lambda 함수는 더 많은 세션 속성(currentReservation
및confirmationContext
)을 포함합니다. -
dialogAction.type
은ConfirmIntent
로 설정되어, 사용자의 예/아니요 응답이 필요함을 Amazon Lex에 알립니다(confirmationContext는 AutoPopulate로 설정됨). 이때 Lambda 함수는 이것이 Lambda 함수가 수행한 초기화(슬롯 데이터 자동 입력)에 대해 사용자가 예/아니요로 확인하는 응답임을 알고 있습니다.또한 Lambda 함수는
dialogAction.message
의 정보 메시지를 응답에 포함시켜 Amazon Lex가 클라이언트에 반환하도록 합니다.참고
용어
ConfirmIntent
(dialogAction.type
의 값)는 봇 의도와 관련이 없습니다. 이 예에서 Lambda 함수는 이 용어를 사용하여 사용자로부터 예 또는 아니요 응답을 얻도록 Amazon Lex에 지시합니다.
-
-
dialogAction.type
에 따라 Amazon Lex는 클라이언트에 다음 응답을 반환합니다.클라이언트는 "2016-12-18에 시작하는 시카고에서의 5박 동안 사용할 차량의 렌트인가요?"라는 메시지를 표시합니다.
-
-
사용자: "예"
-
클라이언트(콘솔)는 Amazon Lex에 다음
PostText
요청을 보냅니다.POST /bot/
BookTrip
/alias/$LATEST
/user/wch89kjqcpkds8seny7dly5x3otq68j3
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"yes", "sessionAttributes":{ "confirmationContext":"AutoPopulate", "currentReservation":"{\"ReservationType\":\"Car\", \"PickUpCity\":null, \"PickUpDate\":null, \"ReturnDate\":null, \"CarType\":null}", "lastConfirmedReservation":"{\"ReservationType\":\"Hotel\", \"Location\":\"Chicago\", \"RoomType\":\"queen\", \"CheckInDate\":\"2016-12-18\", \"Nights\":\"5\"}" } } -
Amazon Lex는
inputText
를 읽고 컨텍스트를 알고 있습니다(사용자에게 자동 채우기를 확인하도록 요청). Amazon Lex는 다음 이벤트를 보내 Lambda 함수를 호출합니다.{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook", "userId": "wch89kjqcpkds8seny7dly5x3otq68j3", "sessionAttributes": { "confirmationContext": "AutoPopulate", "currentReservation": "{\"ReservationType\":\"Car\",\"PickUpCity\":null,\"PickUpDate\":null,\"ReturnDate\":null,\"CarType\":null}", "lastConfirmedReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}" }, "bot": { "name": "BookTrip", "alias": null, "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "BookCar", "slots": { "PickUpDate": "2016-12-18", "ReturnDate": "2016-12-22", "DriverAge": null, "CarType": null, "PickUpCity": "Chicago" }, "confirmationStatus": "Confirmed" } }
사용자가 예라고 답했으므로 Amazon Lex는
confirmationStatus
를Confirmed
로 설정합니다. -
Lambda 함수는
confirmationStatus
로부터 미리 채워진 값이 옳다는 것을 알고 있습니다. Lambda 함수는 다음 작업을 수행합니다.-
currentReservation
세션 속성을 미리 채워진 슬롯 값으로 업데이트 -
dialogAction.type
을ElicitSlot
으로 설정 -
slotToElicit
값을DriverAge
로 설정
다음 응답이 전송됩니다.
{ "sessionAttributes": { "currentReservation": "{\"ReservationType\":\"Car\",\"PickUpCity\":\"Chicago\",\"PickUpDate\":\"2016-12-18\",\"ReturnDate\":\"2016-12-22\",\"CarType\":null}", "lastConfirmedReservation": "{\"ReservationType\":\"Hotel\",\"Location\":\"Chicago\",\"RoomType\":\"queen\",\"CheckInDate\":\"2016-12-18\",\"Nights\":\"5\"}" }, "dialogAction": { "type": "ElicitSlot", "intentName": "BookCar", "slots": { "PickUpDate": "2016-12-18", "ReturnDate": "2016-12-22", "DriverAge": null, "CarType": null, "PickUpCity": "Chicago" }, "slotToElicit": "DriverAge", "message": { "contentType": "PlainText", "content": "How old is the driver of this car rental?" } } }
-
-
Amazon Lex는 다음 응답을 반환합니다.
클라이언트가 "운전자의 나이는 몇살인가요?"라는 메시지를 표시하고 대화를 계속합니다.
-