초기화/검증 또는 주문 처리 AWS Lambda 함수를 사용하여 Amazon Lex 봇의 대화 흐름을 변경하고 싶습니다.
해결 방법
참고: 이 문서의 예에서는 Amazon Lex 콘솔 버전 2를 사용합니다. 버전 1을 사용하는 경우 탐색 창에서 새 Lex v2 콘솔로 전환을 선택합니다.
Lambda 응답 구문은 Amazon Lex에서 예상하는 Lambda 함수 응답의 형식을 지정합니다. 응답에 필수 필드를 포함해야 합니다.
ElicitSlot 유형을 사용하여 대화 상자 흐름 변경
ElicitSlot 유형을 사용하여 대화 상자 흐름을 변경하려면 Lambda 코드 후크의 응답을 다음 형식으로 전달합니다.
{
"sessionState": {
"dialogAction": {
"slotToElicit": "<slot-name-to-elicit>",
"type": "ElicitSlot"
},
"intent": {
"name": "<intent-name-to-elicit>",
"state": "InProgress"
}
}
}
응답을 반환한 후 Amazon Lex는 intent-name-to-elicit 인텐트에 속하는 slot-name-to-elicit라는 슬롯을 추출합니다.
예를 들어 사용자 이름을 묻는 슬롯이 있는 CreateUser 인텐트가 있다고 가정해 보겠습니다. Lambda 함수를 사용하여 사용자 이름이 이미 존재하는지 확인합니다. 사용자 아이디가 존재하면 동일한 인텐트로 username 슬롯을 다시 추출합니다.
ElicitIntent 유형을 사용하여 대화 상자 흐름 변경
ElicitIntent 유형을 사용하여 대화 상자 흐름을 변경하려면 다음 형식의 Lambda 코드 후크에서 응답을 전달합니다.
{
"sessionState": {
"dialogAction": {
"type": "ElicitIntent"
}
},
"messages": [{
"contentType": "<content-type>",
"content": "<message>"
}]
}
Amazon Lex가 응답을 반환하면 사용자는 placeholder 메시지에 지정된 메시지를 볼 수 있습니다. 다음 사용자 입력은 인텐트 발화로 간주되어 가장 높은 nluConfidence 점수를 가진 인텐트를 호출합니다.
예를 들어 봇이 사용자의 인텐트를 수행하면 봇을 Listen 상태로 설정합니다. 그런 다음 사용자가 다른 발화를 제공하여 다른 인텐트를 호출할 수 있습니다.
위임 유형을 사용하여 대화 상자 흐름 변경
새 인텐트를 지정할 때 위임 유형을 사용하여 인텐트의 시작을 변경할 수 있습니다. 위임 유형을 사용하려면 Lambda 코드 후크의 응답을 다음 형식으로 전달합니다.
{
'sessionState': {
'dialogAction': {
'type': 'Delegate'
},
'intent': {
'name': '<intent-name-to-elicit>',
'state': 'InProgress'
}
}
}
예를 들어 봇에는 A, B, C 인텐트가 있습니다. 사용자가 인텐트 A의 슬롯에 응답을 제공하면 Lambda함수는 사용자 입력을 확인합니다. 그런 다음 함수는 인텐트 B 또는 C 중 하나를 호출합니다.
관련 정보
GitHub 웹사이트의 amazon-lex-v2-dialogation