지원 종료 공지:는 2025년 9월 15 AWS 일에 Amazon Lex V1에 대한 지원을 중단할 예정입니다. 2025년 9월 15일 이후에는 Amazon Lex V1 콘솔 또는 Amazon Lex V1 리소스에 더 이상 액세스할 수 없습니다. Amazon Lex V2를 사용하는 경우 대신 Amazon Lex V2 가이드를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Lex V2는 봇의 각 언어에 대해 하나의 Lambda 함수 만 허용합니다. Lambda 함수 및 해당 설정은 런타임 시 사용하는 봇 별칭에 맞게 구성됩니다.
Lambda 함수는 해당 의도에 대해 대화상자 및 이행 코드 후크가 활성화된 경우 해당 언어의 모든 의도에 대해 호출됩니다.
Amazon Lex V2 Lambda 함수는 Amazon Lex V1과 다른 입력 및 출력 메시지 형식을 사용합니다. Lambda 함수 입력 형식의 차이는 다음과 같습니다.
-
Amazon Lex V2는
currentIntent
및alternativeIntents
구조를interpretations
구조로 대체합니다. 각 해석에는 의도, 해당 의도에 대한 NLU 신뢰도 점수 및 선택적 센티멘트 분석이 포함됩니다. -
Amazon Lex V2는 아마존 Lex V1의
activeContexts
,sessionAttributes
의 기능을 통합sessionState
구조로 이전합니다. 이 구조는 시작 요청 ID를 포함하여 대화의 현재 상태에 대한 정보를 제공합니다. -
Amazon Lex V2는
recentIntentSummaryView
을 반환하지 않습니다. 대신sessionState
구조체의 정보를 사용합니다. -
Amazon Lex V2 입력은
bot
속성 내의botId
및localeId
를 제공합니다. -
입력 구조에는 입력 유형(텍스트, 음성 또는 DTMF)에 대한 정보를 제공하는
inputMode
속성이 포함되어 있습니다.
Lambda 함수 입력 형식의 차이는 다음과 같습니다.
-
Amazon Lex V1의
activeContexts
및sessionAttributes
구조는 아마존 Lex V2의sessionState
구조로 대체되었습니다. -
recentIntentSummaryView
은 출력에 포함되지 않습니다. -
Amazon Lex V1
dialogAction
구조는 두 개의 구조로 나뉘는데,dialogAction
구조는sessionState
구조의 일부이며,messages
는dialogAction.type
가ElicitIntent
일 때 필요합니다. Amazon Lex는 이 구조에서 사용자에게 표시할 메시지를 선택합니다.
Amazon Lex V2 API로 봇을 구축하는 경우, 각 의도에 대한 Lambda 함수 대신 언어별로 봇 별칭당 하나의 Lambda 함수 만 있습니다. 별도의 함수를 계속 사용하려는 경우 각 의도에 대해 별도의 함수를 활성화하는 라우터 함수를 생성할 수 있습니다. 다음은 애플리케이션에 사용하거나 수정할 수 있는 라우터 함수입니다.
import os
import json
import boto3
# reuse client connection as global
client = boto3.client('lambda')
def router(event):
intent_name = event['sessionState']['intent']['name']
fn_name = os.environ.get(intent_name)
print(f"Intent: {intent_name} -> Lambda: {fn_name}")
if (fn_name):
# invoke lambda and return result
invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event))
print(invoke_response)
payload = json.load(invoke_response['Payload'])
return payload
raise Exception('No environment variable for intent: ' + intent_name)
def lambda_handler(event, context):
print(event)
response = router(event)
return response
업데이트된 필드 목록
다음 표에는 Amazon Lex V2 Lambda 요청 및 응답의 업데이트된 필드에 대한 자세한 정보가 나와 있습니다. 이 테이블을 사용하여 버전 간에 필드를 매핑할 수 있습니다.
요청
Lambda 함수 요청 형식으로 다음 필드가 업데이트되었습니다.
활성 컨텍스트
이제 activeContexts
구조가 sessionState
구조의 일부입니다.
V1 구조 | V2 구조 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
대체 의도
인덱스 1부터 N까지의 해석 목록에는 Amazon Lex V2에서 예측한 대체 의도 목록과 해당 신뢰도 점수가 포함되어 있습니다. Amazon Lex V2의 요청 구조에서 recentIntentSummaryView
가 제거되었습니다. recentIntentSummaryView
에서 세부 정보를 보려면 GetSession 작업을 사용하십시오.
V1 구조 | V2 구조 |
---|---|
alternativeIntents |
interpretations[1:*] |
recentIntentSummaryView |
N/A |
봇
Amazon Lex V2에서는 봇과 별칭에 식별자가 있습니다. 봇 ID는 코드후크 입력의 일부입니다. 앨리어스 ID는 포함되지만 앨리어스 이름은 포함되지 않습니다. Amazon Lex V2는 동일한 봇에 대해 여러 로케일을 지원하므로 로케일 ID가 포함됩니다.
V1 구조 | V2 구조 |
---|---|
bot |
bot |
bot.name |
bot.name |
N/A |
bot.id |
bot.alias |
N/A |
N/A |
bot.aliasId |
bot.version |
bot.version |
N/A |
bot.localeId |
현재 의도
sessionState.intent
구조에는 활성 의도의 세부 정보가 포함됩니다. 또한 Amazon Lex V2는 대체 의도를 포함하여 interpretations
구조에 있는 모든 의도의 목록을 반환합니다. 해석 목록의 첫 번째 요소는 항상 sessionState.intent
와 동일합니다.
V1 구조 | V2 구조 |
---|---|
currentIntent |
sessionState.intent OR interpretations[0].intent |
currentIntent.name |
sessionState.intent.name OR interpretations[0].intent.name |
currentIntent.nluConfidenceScore |
interpretations[0].nluConfidence.score |
다이얼로그 액션
confirmationStatus
필드는 이제 sessionState
구조의 일부가 되었습니다.
V1 구조 | V2 구조 |
---|---|
currentIntent.confirmationStatus |
sessionState.intent.confirmationState OR interpretations[0].intent.confirmationState |
N/A |
sessionState.intent.state OR interpretations[*].intent.state |
Amazon Kendra
kendraResponse
필드는 이제 sessionState
및 interpretations
구조의 일부가 되었습니다.
V1 구조 | V2 구조 |
---|---|
kendraResponse |
sessionState.intent.kendraResponse OR interpretations[0].intent.kendraResponse |
Sentiment
sentimentResponse
구조가 새로운 interpretations
구조로 이동되었습니다.
V1 구조 | V2 구조 |
---|---|
sentimentResponse |
interpretations[0].sentimentResponse |
sentimentResponse.sentimentLabel |
interpretations[0].sentimentResponse.sentiment |
sentimentResponse.sentimentScore |
interpretations[0].sentimentResponse.sentimentScore |
슬롯
Amazon Lex V2는 해석된 값, 해석된 값 및 사용자가 말한 원래 값을 포함하는 sessionState.intent
구조 내에 단일 slots
객체를 제공합니다. Amazon Lex V2는 slotShape
를 List
로 설정하고 values
목록을 설정하여 다중 값 슬롯도 지원합니다. value
필드는 단일 값 슬롯을 지원하며 그 모양은 Scalar
와 같이 가정합니다.
V1 구조 | V2 구조 |
---|---|
currentIntent.slots |
sessionState.intent.slots OR interpretations[0].intent.slots |
currentIntent.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue OR interpretations[0].intent.slots[*].value.interpretedValue |
N/A |
sessionState.intent.slots[*].value.shape OR interpretations[0].intent.slots[*].shape |
N/A |
sessionState.intent.slots[*].values OR interpretations[0].intent.slots[*].values |
currentIntent.slotDetails |
sessionState.intent.slots OR interpretations[0].intent.slots |
currentIntent.slotDetails[*].resolutions |
sessionState.intent.slots[*].resolvedValues OR interpretations[0].intent.slots[*].resolvedValues |
currentIntent.slotDetails[*].originalValue |
sessionState.intent.slots[*].originalValue OR interpretations[0].intent.slots[*].originalValue |
기타
아마존 Lex V2 sessionId
필드는 아마존 Lex V1의 userId
필드와 동일합니다. 또한 Amazon Lex V2는 발신자의 inputMode
에게 문자, DTMF 또는 음성과 같은 메시지를 보냅니다.
V1 구조 | V2 구조 |
---|---|
userId |
sessionId |
inputTranscript |
inputTranscript |
invocationSource |
invocationSource |
outputDialogMode |
responseContentType |
messageVersion |
messageVersion |
sessionAttributes |
sessionState.sessionAttributes |
requestAttributes |
requestAttributes |
N/A |
inputMode |
N/A |
originatingRequestId |
응답
Lambda 함수 응답 메시지 형식에서 다음 필드가 변경되었습니다.
활성 컨텍스트
activeContexts
구조가 sessionState
구조로 이동되었습니다.
V1 구조 | V2 구조 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
다이얼로그 액션
dialogAction
구조가 sessionState
구조로 이동되었습니다. 이제 대화 액션에서 여러 메시지를 지정할 수 있으며, 이제 genericAttachments
구조가 imageResponseCard
구조입니다.
V1 구조 | V2 구조 |
---|---|
dialogAction |
sessionState.dialogAction |
dialogAction.type |
sessionState.dialogAction.type |
dialogAction.slotToElicit |
sessionState.intent.dialogAction.slotToElicit |
dialogAction.type.fulfillmentState |
sessionState.intent.state |
dialogAction.message |
messages |
dialogAction.message.contentType |
messages[*].contentType |
dialogAction.message.content |
messages[*].content |
dialogAction.responseCard |
messages[*].imageResponseCard |
dialogAction.responseCard.version |
N/A |
dialogAction.responseCard.contentType |
messages[*].contentType |
dialogAction.responseCard.genericAttachments |
N/A |
dialogAction.responseCard.genericAttachments[*].title |
messages[*].imageResponseCard.title |
dialogAction.responseCard.genericAttachments[*].subTitle |
messages[*].imageResponseCard.subtitle |
dialogAction.responseCard.genericAttachments[*].imageUrl |
messages[*].imageResponseCard.imageUrl |
dialogAction.responseCard.genericAttachments[*].buttons |
messages[*].imageResponseCard.buttons |
dialogAction.responseCard.genericAttachments[*].buttons[*].value |
messages[*].imageResponseCard.buttons[*].value |
dialogAction.responseCard.genericAttachments[*].buttons[*].text |
messages[*].imageResponseCard.buttons[*].text |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryFilterString |
dialogAction.kendraQueryFilterString |
의도 및 슬롯
dialogAction
구조의 일부였던 의도 및 슬롯 필드는 이제 sessionState
구조의 일부가 되었습니다.
V1 구조 | V2 구조 |
---|---|
dialogAction.intentName |
sessionState.intent.name |
dialogAction.slots |
sessionState.intent.slots |
dialogAction.slots[*].key |
sessionState.intent.slots[*].key |
dialogAction.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue |
N/A |
sessionState.intent.slots[*].value.shape |
N/A |
sessionState.intent.slots[*].values |
기타
이제 sessionAttributes
구조가 sessionState
구조의 일부입니다. recentIntentSummaryReview
구조가 제거되었습니다.
V1 구조 | V2 구조 |
---|---|
sessionAttributes |
sessionState.sessionAttributes |
recentIntentSummaryView |
N/A |