>我用Amazon lex创建了一个机器人,它用Python和MongoDb进行了验证和实现。 机器人按预期工作。
现在我正在努力将我的机器人与 iPad 应用程序集成。
目前,我的机器人会询问用户他的账户 ID,然后机器人在数据库中验证该 ID 并根据响应。
现在,在集成后,应将该ID从ipad应用程序传递到机器人,然后机器人应根据该ID进行响应,而不是询问用户的帐户ID。
我的问题是关于这个的。我们如何将账户 ID 从 iPad 应用程序传递到机器人,然后我的机器人或 lambda 函数如何获得它?
请建议是否有人做过类似的功能。
你将需要使用requestAttributes
或sessionAttributes
将帐户 ID 等信息传递给具有初始输入的机器人。
然后,机器人可以从event.requestAttributes
或event.sessionAttributes
中检索这些内容
参考:lex-lambda 输入事件和响应格式
<小时 />会话属性 – 客户端在请求中发送的应用程序特定会话属性。如果您希望 Amazon Lex 将它们包含在对客户端的响应中,您的 Lambda 函数应在响应中将这些内容发送回 Amazon Lex。有关更多信息,请参阅 设置会话属性
请求属性 – 客户端在请求中发送的请求特定属性。使用请求属性传递不需要在整个会话中保留的信息。如果没有请求属性,则该值将为 null。有关更多信息,请参阅 设置请求属性
附加信息
您需要自己处理将用户输入传递给 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 参考