【问题标题】:Amazon Lex accepting ConfirmIntent on any responseAmazon Lex 接受任何响应的 ConfirmIntent
【发布时间】: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


    【解决方案1】:

    您正在正确处理此问题。

    当您将intent-B 传递到您的confirm_intent 请求时。您是在告诉 Lex 将用户响应传递给 intent-B。当用户以"no" 响应时,Denied 值被正确传递。

    或者,您可以在 confirm_intent 请求中包含 intent-A。然后,当响应达到intent-A 时,您可以在拒绝时使用Close,在confirmation 上使用Delegate 将流传递给intent-B。这是“更正确的”,但会导致额外的计算,所以这是一个权衡。

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

    【讨论】:

    • 所以意图 B 将始终被调用,但我们可以通过验证“confirmationStatus”来停止它在 DialogCodeHook 中的执行。对吗?
    • @sid8491 我添加了另一种方法,您可以使用Delegate 仅在需要时调用intent-B。这在计算上更昂贵,所以如果您认为这是一种更好的方法,那就由您来决定
    • 嗨@Milk,confirmationStatus 被设置为Confirmed,即使我输入了诸如 outlook、printer 之类的单个单词离是更近了。如何解决这个...有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    相关资源
    最近更新 更多