【问题标题】:How can I pass a required input from application to Amazon Lex Bot?如何将所需的输入从应用程序传递到 Amazon Lex Bot?
【发布时间】:2020-05-26 07:30:53
【问题描述】:

我使用 Amazon lex 创建了一个机器人,它使用 Python 和 MongoDb 进行验证和实现。 机器人按预期工作。

现在我正在努力将我的 Bot 与 ipad 应用程序集成。

目前,我的机器人询问用户他的帐户 ID,然后机器人在 DB 中验证该 ID 并根据响应。

现在集成后,而不是询问用户的帐户 ID,该 ID 应该从 ipad 应用程序传递给机器人,然后机器人应该做出相应的响应。

我的问题是关于这个的。我们如何将帐户 ID 从 ipad 应用程序传递给 bot,然后我的 bot 或 lambda 函数如何获取?

请建议是否有人做过类似的功能。

【问题讨论】:

    标签: aws-lambda amazon-lex


    【解决方案1】:

    您需要使用 requestAttributessessionAttributes 将帐户 ID 等信息通过初始输入传递给您的机器人。

    然后,您的机器人可以从 event.requestAttributesevent.sessionAttributes 检索这些信息

    参考:Lex-Lambda Input Event and Response Format

    sessionAttributes – 客户端在请求中发送的特定于应用程序的会话属性。如果您希望 Amazon Lex 将它们包含在对客户端的响应中,您的 Lambda 函数应在响应中将它们发送回 Amazon Lex。欲了解更多信息,请参阅Setting Session Attributes

    requestAttributes – 客户端在请求中发送的特定于请求的属性。使用请求属性传递不需要在整个会话中保留的信息。如果没有请求属性,则该值为空。欲了解更多信息,请参阅Setting Request Attributes


    附加信息

    您需要自己处理将 userInput 传递给您的 Lex 机器人,以便包含 requestAttributes 数据。为此,您需要使用PostContent(文本或音频输入)或PostText(仅限文本输入)将数据发送到您的 Lex 机器人。

    您的 Lex 机器人将解释输入并将 requestAttributes 传递给您的 Lambda 函数,您可以在其中根据账户 ID 处理逻辑。

    通过 PostText 将用户输入数据作为 JSON 对象发送:

    POST /bot/botName/alias/botAlias/user/userId/text HTTP/1.1
    Content-type: application/json
    
    {
       "inputText": "Hello Bot",
       "requestAttributes": { 
          "accountID" : "xxxxxxxx" 
       },
       "sessionAttributes": { 
          "name" : "John Smith" 
       }
    }
    

    要查看 Lex 将传递给您的 Lambda 函数的内容以及如何在那里检索 requestAttributes,请参阅这个问题,其中我已经更深入地回答了这个问题: AWS Lex Python Codehook references

    【讨论】:

    • 你有这方面的例子吗?你到底试过什么?我将 Python 用于我的 lambda 函数。
    • 我添加了更多信息。我个人使用 PHP 和 NodeJS,所以很抱歉我没有更大的代码示例给你。但我使用了所有我链接到的文档来解决这个问题。
    • 谢谢!对我来说会有所帮助。我将尝试实施,并让您知道它对我的情况是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多