입력 이벤트 형식 해석 - Amazon Lex

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

입력 이벤트 형식 해석

Lambda 함수를 Amazon Lex V2 봇에 통합하는 첫 번째 단계는 Amazon Lex V2 이벤트의 필드를 이해하고 이러한 필드에서 스크립트를 작성할 때 사용할 정보를 결정하는 것입니다. 다음 JSON 객체는 Lambda 함수에 전달되는 Amazon Lex V2 이벤트의 일반적인 형식을 보여줍니다.

참고

messageVersion에 대한 해당하는 내용을 변경하지 않아도 입력 형식을 변경할 수 있습니다. 새 필드가 있는 경우 코드에서 오류가 발생하면 안 됩니다.

{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook | FulfillmentCodeHook", "inputMode": "DTMF | Speech | Text", "responseContentType": "audio/mpeg | audio/ogg | audio/pcm | text/plain; charset=utf-8", "sessionId": string, "inputTranscript": string, "invocationLabel": string, "bot": { "id": string, "name": string, "localeId": string, "version": string, "aliasId": string, "aliasName": string }, "interpretations": [ { "interpretationSource": "Bedrock | Lex", "intent": { // see 의도 for details about the structure }, "nluConfidence": number, "sentimentResponse": { "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE", "sentimentScore": { "mixed": number, "negative": number, "neutral": number, "positive": number } } }, ... ], "proposedNextState": { "dialogAction": { "slotToElicit": string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see 의도 for details about the structure }, "prompt": { "attempt": string } }, "requestAttributes": { string: string, ... }, "sessionState": { // see 세션 상태 for details about the structure }, "transcriptions": [ { "transcription": string, "transcriptionConfidence": number, "resolvedContext": { "intent": string }, "resolvedSlots": { slot name: { // see 슬롯 for details about the structure }, ... } }, ... ] }

다음은 입력 이벤트의 각 필드에 대한 설명입니다.

Lambda 함수로 이동하는 이벤트 데이터의 형식과 Lambda 함수에서 나올 것으로 예상되는 응답 형식을 식별하는 메시지 버전입니다.

참고

의도를 정의할 때 이 값을 구성합니다. 현재 구현에서 Amazon Lex V2는 메시지 버전 1.0만 지원합니다. 따라서 콘솔은 기본값을 1.0으로 가정하며 이는 메시지 버전에 표시되지 않습니다.

Lambda 함수를 호출한 코드 후크입니다. 다음과 같은 값이 가능합니다.

DialogCodeHook– Amazon Lex V2는 사용자 입력 후 Lambda 함수를 호출했습니다.

FulfillmentCodeHook– Amazon Lex V2는 필요한 슬롯을 모두 채운 후 Lambda 함수를 호출하고 의도를 이행할 준비가 된 후 Lambda 함수를 호출했습니다.

사용자 발화의 모드입니다. 가능한 값은 다음과 같습니다.

DTMF– 사용자가 터치톤 키패드(듀얼 톤 다중 주파수)를 사용하여 발화를 입력합니다.

Speech– 사용자가 말을 했습니다.

Text– 사용자가 발화를 입력했습니다.

사용자에 대한 봇의 응답 모드입니다. text/plain; charset=utf-8은 마지막 발화를 기록했음을 나타내며, audio로 시작하는 값은 마지막 발화를 말했음을 나타냅니다.

대화에 사용된 영숫자 세션 식별자입니다.

사용자의 입력 내용에 대한 트랜스크립션입니다.

  • 텍스트 입력의 경우 사용자가 입력한 텍스트입니다. DTMF 입력의 경우 사용자가 입력하는 키입니다.

  • 음성 입력의 경우, 이 텍스트는 의도를 호출하거나 슬롯을 채우기 위해 Amazon Lex V2가 사용자 표현을 변환하는 텍스트입니다.

Lambda 함수를 호출한 응답을 나타내는 값입니다. 초기 응답, 슬롯 및 확인 응답에 대한 호출 레이블을 설정할 수 있습니다.

요청을 처리한 봇에 대한 정보로, 다음 필드로 구성됩니다.

  • ID – 봇을 만들 때 봇에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 설정 페이지에서 봇 ID를 확인할 수 있습니다.

  • 이름 - 봇을 만들 때 지정한 이름입니다.

  • localeId – 봇에 사용한 로캘의 식별자입니다. 로캘 목록은 Amazon Lex V2에서 지원하는 언어 및 로캘 섹션을 참조하십시오.

  • 버전 – 요청을 처리한 봇의 버전입니다.

  • aliasId – 봇 별칭을 만들 때 봇 별칭에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 별칭 페이지에서 봇 별칭 ID를 확인할 수 있습니다. 목록에서 별칭 ID가 보이지 않는 경우 오른쪽 상단의 톱니바퀴 아이콘을 선택하고 별칭 ID를 켜십시오.

  • aliasName – 봇 별칭을 부여한 이름입니다.

Amazon Lex V2에서 사용자의 발화와 일치할 가능성이 있다고 간주하는 의도에 대한 정보 목록입니다. 각 항목은 다음과 같은 형식으로 발화가 의도와 일치하는지에 대한 정보를 제공하는 구조입니다.

{ "intent": { // see 의도 for details about the structure }, "interpretationSource": "Bedrock | Lex", "nluConfidence": number, "sentimentResponse": { "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE", "sentimentScore": { "mixed": number, "negative": number, "neutral": number, "positive": number } } }

구조 내의 필드는 다음과 같습니다.

  • 의도 – 의도에 대한 정보가 들어 있는 구조입니다. 구조에 대한 자세한 내용은 의도를 참조하십시오.

  • nluConfidence – Amazon Lex V2가 의도가 사용자의 의도와 일치한다고 얼마나 확신하는지 나타내는 점수입니다.

  • sentimentResponse – 응답의 감정에 대한 분석으로, 다음 필드를 포함합니다.

    • sentiment – 발화의 감정이 POSITIVE, NEGATIVE, NEUTRAL, 또는 MIXED인지를 나타냅니다.

    • sentimentScore – 각 감정을 숫자로 매핑하는 구조로서 Amazon Lex V2가 해당 발언이 해당 감정을 전달한다고 얼마나 확신하는지 나타냅니다.

  • interpretationSource - 슬롯이 Amazon Lex 또는 Amazon Bedrock에 의해 확인되는지 여부를 나타냅니다.

Lambda 함수가 sessionStatedialogActionDelegate로 설정하면 이 필드가 나타나고 대화의 다음 단계에 대한 Amazon Lex V2의 제안을 표시합니다. 그렇지 않으면 Lambda 함수의 응답에서 반환하는 설정에 따라 다음 상태가 달라집니다. 이 구조에는 다음 두 가지 조건이 모두 충족될 때만 나타납니다.

  1. invocationSource 값은 DialogCodeHook입니다.

  2. dialogAction의 예측 typeElicitSlot입니다.

이 정보를 사용하여 대화의 적절한 시점에 runtimeHints를 추가할 수 있습니다. 자세한 내용은 런타임 힌트를 통한 슬롯 값 인식 개선를 참조하십시오. proposedNextState는 다음 필드가 포함된 구조입니다.

proposedNextState의 구조는 다음과 같습니다.

"proposedNextState": { "dialogAction": { "slotToElicit": string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see 의도 for details about the structure }, "prompt": { "attempt": string } }
  • dialogAction – Amazon Lex V2에서 제안하는 다음 단계에 대한 정보가 들어 있습니다. 구조의 필드는 다음과 같습니다.

    • slotToElicit – Amazon Lex V2에서 제안한 다음 슬롯을 이끌어낼 수 있는 슬롯입니다. 이 필드는 typeElicitSlot인 경우에만 표시됩니다.

    • type – Amazon Lex V2에서 제안한 대화의 다음 단계입니다. 다음과 같은 값이 가능합니다.

      Delegate– Amazon Lex V2가 다음 작업을 결정합니다.

      ElicitIntent– 다음 작업은 사용자로부터 의도를 이끌어내는 것입니다.

      ElicitSlot– 다음 작업은 사용자로부터 슬롯 값을 추출하는 것입니다.

      Close– 의도 이행 프로세스를 종료하고 사용자로부터 응답이 없을 것임을 나타냅니다.

      ConfirmIntent– 다음 작업은 슬롯이 올바른지, 의도를 충족할 준비가 되었는지 사용자에게 묻는 것입니다.

  • intent – 봇이 사용자가 이행하려고 한다고 판단한 의도입니다. 구조에 대한 자세한 내용은 의도를 참조하십시오.

  • prompt – Amazon Lex V2가 사용자에게 다음 슬롯을 묻는 메시지를 표시한 횟수를 지정하는 값에 매핑되는 attempt 필드가 포함된 구조입니다. 사용 가능한 값은 첫 번째 시도의 경우 Initial, 후속 시도의 경우 Retry1, Retry2, Retry3, Retry4Retry5입니다.

클라이언트가 요청에서 전송하는 요청별 속성을 포함하는 구조입니다. 전체 세션에서 유지할 필요가 없는 정보를 전달하려면 요청 속성을 사용합니다. 요청 속성이 존재하지 않는 경우, 값은 null이 됩니다. 자세한 내용은 요청 속성 설정 섹션을 참조하세요.

사용자와 Amazon Lex V2 봇 간의 현재 대화 상태입니다. 구조에 대한 자세한 내용은 세션 상태를 참조하십시오.

Amazon Lex V2에서 사용자의 발화와 일치할 가능성이 있다고 간주하는 트랜스크립션 목록입니다. 자세한 내용은 음성 트랜스크립션 신뢰도 점수 사용 섹션을 참조하세요. 각 항목은 가능한 한 가지 트랜스크립션에 대한 정보를 포함하는 다음 형식의 객체입니다.

{ "transcription": string, "transcriptionConfidence": number, "resolvedContext": { "intent": string }, "resolvedSlots": { slot name: { // see 슬롯 for details about the structure }, ... } }

필드는 아래에 설명되어 있습니다.

  • transcription – Amazon Lex V2가 사용자의 오디오 발화와 일치할 가능성이 있는 것으로 간주하는 트랜스크립션입니다.

  • transcriptionConfidence – Amazon Lex V2가 의도가 사용자의 의도와 일치한다고 얼마나 확신하는지 나타내는 점수입니다.

  • resolvedContext – 발화가 관련된 의도에 매핑되는 intent 필드를 포함하는 구조입니다.

  • resolvedSlots – 발화에 따라 확인되는 각 슬롯의 이름을 키로 하는 구조입니다. 각 슬롯 이름은 해당 슬롯에 대한 정보가 포함된 구조에 매핑됩니다. 구조에 대한 자세한 내용은 슬롯를 참조하십시오.