【发布时间】:2018-05-28 10:05:10
【问题描述】:
我有一个intent-A,它是由一些用户输入触发的。当向用户提供响应时,我使用了ConfirmIntent 而不是Close,以便我可以切换/链接另一个意图(比如说intent-B)。
理想情况下,如果用户输入"yes",则应触发意图,如果用户输入"no",则不应触发。问题是intent-B 无论我输入什么都会被触发。
我从here、here 和here 中读到了关于ConfirmIntent 的信息。
调用代码:
session_attributes = {"confirmationContext": "AutoPopulate"}
return confirm_intent(session_attributes , 'intent-B', slots, 'Do you want to invoke intent-B')
确认意向代码:
def confirm_intent(session_attributes, intent_name, slots, message):
return {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'ConfirmIntent',
'intentName': intent_name,
'slots': slots,
'message': {
'contentType': 'PlainText',
'content': message
}
}
}
在日志中,当我输入 "no" 时,我可以看到 confirmationStatus': 'Denied',但即便如此,intent-B 也会被调用。
是我遗漏了什么还是它是这样设计的?
注意:对于解决方法,我在 intent-B 的 DialogCodeHook 中添加以下代码
if 'confirmationStatus' in intent_request['currentIntent'] and intent_request['currentIntent']['confirmationStatus'] == 'Denied':
return close("Ok, let me know if you need anything else.", session_attributes)
【问题讨论】:
标签: aws-lambda amazon-lex