gpt4 book ai didi

aws-lambda - Amazon Lex 接受任何响应的 ConfirmIntent

转载 作者:行者123 更新时间:2023-12-04 01:22:34 24 4
gpt4 key购买 nike

我有一个 intent-A这是由一些用户输入触发的。当回复给用户时,我使用了 ConfirmIntent而不是 Close这样我就可以切换/链接另一个意图(可以说 intent-B )。

理想情况下,如果用户键入 "yes"那么意图应该被触发,如果用户输入 "no"那么它不应该。问题是intent-B无论我输入什么,都会被触发。

我读过 ConfirmIntent来自 here , herehere .

调用代码:

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
}
}
}

在日志中我可以看到 confirmationStatus': 'Denied'当我输入 "no "但即便如此, 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)

最佳答案

您正在正确处理此问题。

当您路过时intent-B进入您的 confirm_intent要求。您告诉 Lex 将用户响应传递给 intent-B .当用户回复 "no" 时, Denied值正确传递。

或者,您可以拥有 intent-A在您的 confirm_intent要求。然后当响应命中 intent-A您可以使用 Close拒绝和 Delegateconfirmation将流量传递给 intent-B .这是“更正确的”,但会导致额外的计算,因此这是一种权衡。

如果您有多个跟进请求,您可以考虑使用 ElicitIntent改为询问用户 "What can I help you with?" .具有诸如 "nothing" 之类的话语的意图, "goodbye"将捕捉负面 react 。这是一个略有不同的用例,可能不适合您。

关于aws-lambda - Amazon Lex 接受任何响应的 ConfirmIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47811275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com