【问题标题】:How to make AWS Lex bot prompt for followup after intent fulfillment (using Lambda)?如何使 AWS Lex 机器人在意图实现后提示跟进(使用 Lambda)?
【发布时间】:2019-01-23 05:20:45
【问题描述】:

即使在 Intent 的“响应”部分中设置了后续提示,机器人也不会显示后续提示。如果选择“ReturnParametersToClient”作为“履行”选项,这将起作用。当实现更改为 AWS Lambda 函数时,它不再出现后续问题。

例如: 如果我的用户输入

3x10

我有一个 Lambda 函数来执行此计算并以 Lex 期望的 JSON 格式返回结果。因此它显示

30

然后,它应该提出后续问题

Would you like me to do another calculation?

用户可以回复的

No

据我了解,意图编辑器页面中的“响应”部分正是我应该能够配置问题“您希望我再做一次计算吗?”的地方。和另一条消息(如果用户回答是否定的,则在“等待用户回复”部分中。

【问题讨论】:

    标签: amazon-web-services aws-lex


    【解决方案1】:

    是的,一切正常。

    你可以做一个或另一个。
    (1) 在实现意图时在 Lex 控制台中设置响应。
    或者 (2) 在实现意图时在 Lambda 中构建您自己的响应。

    使用 Lambda 函数可以让您更好地控制您的机器人,并让您以更动态和定制的消息进行响应。

    因此,如果您改用 Lambda,则必须在实现意图时自己创建响应。对于那种是/否问题,您可能想使用confirmIntent

    查看Lambda-Lex Response Format(在页面的一半左右确认Intent)

    ConfirmIntent — 通知 Amazon Lex,用户应该给出是或否的答案来确认或拒绝当前的意图。

    将该响应作为 confirmIntent 发送将是这样的:

    "dialogAction": {
        "type": "ConfirmIntent",
        "message": {
          "contentType": "PlainText",
          "content": "Would you like me to do another calculation?"
        },
        "intentName": "intent-name",
        "slots": {
           "slot-name": "value",
           "slot-name": "value",
           "slot-name": "value"  
       },
    }
    

    然后,您的 Lambda 将需要处理该问题的答案。
    用户的答案将返回到相同的意图,confirmationStatus 将是:
    None - 未使用 confirmIntent
    Confirmed - 用户对 confirmIntent 问题说“是”
    Denied -用户对confirmIntent 问题说“不”

    查看页面顶部附近的相同链接,了解 Lex 到 Lambda 输入事件的格式。


    提示:

    您可以改为使用close 消息来实现意图,并询问用户“我还能如何帮助您?”

    然后用户可以立即询问另一个计算,而不必在每个计算问题之前说是或否。

    【讨论】:

    • 我向 AWS 支持部门确认,Lex 不支持在 Lambda 完成后在单独的聊天气泡中提交后续消息。所以这不能在 Lex Test Bot 部分完成。但是这个特性可以被一个 UI 合并。例如,aws-samples 发布的Lex web UI 支持多个消息气泡。
    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 2019-04-29
    • 2018-06-09
    • 2021-10-16
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多