Amazon Lex V2를 사용하는 경우 Amazon Lex V2 가이드를 대신 참조하십시오.
Amazon Lex V1을 사용하는 경우 봇을 Amazon Lex V2로 업그레이드하는하는 것이 좋습니다. 더 이상 V1에 새로운 기능을 추가하지 않으므로 모든 새 봇에 V2를 사용할 것을 강력히 권장합니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Lex V1에서 Amazon Lex V2로 Lambda 함수 마이그레이션
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 구조 |
---|---|
current의도 |
sessionState.의도 OR interpretations[0].의도 |
current의도.name |
sessionState.의도.name OR interpretations[0].의도.name |
current의도.nluConfidenceScore |
interpretations[0].nluConfidence.score |
다이얼로그 액션
confirmationStatus
필드는 이제 sessionState
구조의 일부가 되었습니다.
V1 구조 | V2 구조 |
---|---|
interpretations[0].nluConfidence.score |
sessionState.의도.confirmationState OR interpretations[0].의도.confirmationState |
N/A |
sessionState.의도.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 |