응답 형식 준비 - Amazon Lex

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

응답 형식 준비

Lambda 함수를 Amazon Lex V2 봇에 통합하는 두 번째 단계는 Lambda 함수 응답의 필드를 이해하고 조작하려는 파라미터를 결정하는 것입니다. 다음 JSON 객체는 Amazon Lex V2로 반환되는 Lambda 응답의 일반적인 형식을 보여줍니다.

{ "sessionState": { // see 세션 상태 for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content": string, "imageResponseCard": { "title": string, "subtitle": string, "imageUrl": string, "buttons": [ { "text": string, "value": string }, ... ] } }, ... ], "requestAttributes": { string: string, ... } }

응답의 각 필드는 아래에 설명되어 있습니다.

사용자와 반환하려는 Amazon Lex V2 봇 간의 대화 상태입니다. 구조에 대한 자세한 내용은 세션 상태를 참조하십시오. 이 필드는 항상 필수 항목입니다.

Amazon Lex V2가 다음 대화를 위해 고객에게 반환하는 메시지 목록입니다. 제공하는 contentTypePlainText, CustomPayload 또는 SSML인 경우 content 필드에 고객에게 반환할 메시지를 작성합니다. 제공하는 contentTypeImageResponseCard인 경우 imageResponseCard 필드에 카드의 세부 정보를 입력합니다. 메시지를 제공하지 않는 경우 Amazon Lex V2는 봇이 생성될 때 정의된 적절한 메시지를 사용합니다.

dialogAction.typeElicitIntent 또는 ConfirmIntent인 경우 messages 필드는 필수입니다.

목록의 각 항목은 사용자에게 반환할 메시지에 대한 정보를 포함하는 다음 형식의 구조입니다. 예:

{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content": string, "imageResponseCard": { "title": string, "subtitle": string, "imageUrl": string, "buttons": [ { "text": string, "value": string }, ... ] } }

각 필드에 대한 설명은 다음과 같습니다.

  • contentType – 사용할 메시지 유형입니다.

    CustomPayload– 애플리케이션에 대한 데이터 또는 메타데이터를 포함하도록 사용자 지정할 수 있는 응답 문자열입니다.

    ImageResponseCard– 고객이 선택할 수 있는 버튼이 있는 이미지입니다. 자세한 내용은 ImageResponseCard를 참조하십시오.

    PlainText– 일반 텍스트 문자열입니다.

    SSML– 오디오 응답을 사용자 지정하기 위한 Speech Synthesis Markup Language가 포함된 문자열입니다.

  • content – 사용자에게 전송할 메시지입니다. 메시지 유형이 PlainText, CustomPayload 또는 SSML인 경우 이 필드를 사용하세요.

  • imageResponseCard – 사용자에게 표시할 응답 카드의 정의를 포함합니다. 메시지 유형이 ImageResponseCard인 경우 이 필드를 사용하세요. 다음 필드가 포함된 구조에 매핑합니다

    • 제목 – 응답 카드의 제목입니다.

    • 자막 – 사용자가 버튼을 선택하라는 메시지입니다.

    • imageUrl – 카드의 이미지로 연결되는 링크입니다.

    • 버튼 – 버튼에 대한 정보가 포함되어 있는 구조 목록입니다. 각 구조에는 표시할 텍스트가 있는 text 필드와 Amazon Lex V2에 고객이 해당 버튼을 선택할 경우 Amazon Lex V2로 전송할 값이 포함된 value 필드가 포함되어 있습니다. 최대 세 개의 버튼을 포함할 수 있습니다.

고객에 대한 응답에 대한 요청별 속성을 포함하는 구조입니다. 자세한 정보는 요청 속성 설정 섹션을 참조하십시오. 이 필드는 선택 사항입니다.

응답의 필수 필드

최소한 Lambda 응답에는 sessionState 객체가 포함되어야 합니다. 그 안에 dialogAction 객체를 제공하고 type 필드를 지정하십시오. 제공하는 dialogActiontype에 따라 Lambda 응답에 다른 필수 필드가 있을 수 있습니다. 이러한 요구 사항은 최소한의 작업 예시와 함께 다음과 같이 설명됩니다.

Delegate를 통해 Amazon Lex V2에서 다음 단계를 결정할 수 있습니다. 다른 필드는 필요하지 않습니다.

{ "sessionState": { "dialogAction": { "type": "Delegate" } }

ElicitIntent는 고객에게 의도를 표현하라는 메시지를 표시합니다. 의도를 유도하려면 messages 필드에 메시지를 하나 이상 포함해야 합니다.

{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }

ElicitSlot은 고객에게 슬롯 값을 제공하라는 메시지를 표시합니다. dialogAction 객체의 slotToElicit 필드에 슬롯 이름을 포함해야 합니다. 또한 sessionState 객체에 intentname을 포함해야 합니다.

{` "sessionState": { "dialogAction": { "slotToElicit": "OriginCity", "type": "ElicitSlot" }, "intent": { "name": "BookFlight" } } }

ConfirmIntent는 고객의 슬롯 값과 의도를 이행할 준비가 되었는지 여부를 확인합니다. sessionState 객체에 intentname과 확인할 slots을 포함해야 합니다. 또한 사용자에게 슬롯 값 확인을 요청하는 메시지를 하나 이상 messages 필드에 포함해야 합니다. 메시지에 “예” 또는 “아니요” 응답이 표시되어야 합니다. 사용자가 "예"라고 응답하면 Amazon Lex V2는 의도의 confirmationStateConfirmed로 설정합니다. 사용자가 “아니요”라고 응답하면 Amazon Lex V2는 의도의 confirmationStateDenied로 설정합니다.

{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name": "BookFlight", "slots": { "DepartureDate": { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } }, "DestinationCity": { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } }, "OriginCity": { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }

Close는 의도의 이행 프로세스를 종료하고 사용자로부터 추가 응답이 예상되지 않음을 나타냅니다. sessionState 객체에 intentnamestate를 포함해야 합니다. 호환되는 의도 상태는Failed, Fulfilled, InProgress입니다.

"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name": "BookFlight", "state": "Failed | Fulfilled | InProgress" } }