我刚刚开始使用Amazon Lex创建聊天机器人。我想使用一些会话属性来保持会话状态。基本上,我的机器人首先从数据库中选择一个文件,例如文件“ abc123”,然后保持该文件的状态,以便用户在尝试从该文件中检索内容时无需保持指定文件的状态。如何在文件中保持流状态?
我创建了一个名为“ FileQuery”的Intent,并将sessionAttribute修改为“ file”:fileNo
fileNo通过聊天机器人中的用户输入传递并存储在变量中。这是我下面的lambda函数。
exports.handler = (event, context, callback) => {
//storing users input for file into "file"
var fileNo = event.currentIntent.slots.FileNumber;
callback(null, {
"sessionAttributes": {
"file": fileNo,
"key": "value"
},
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "File " + fileNo + " selected"
}
}
});
}; //end
用户输入时: “选择文件abc123”
Lex: “文件abc123已选择”
用户: “给我名字和联系方式”
我希望Lex / Lambda在上下文中理解文件并检索有关该文件的信息。我该怎么办?
答案 0 :(得分:0)
将会话属性存储在lex会话属性中后,可以使用-
从请求中在lambda函数中检索相同的内容。input.sessionAttributes.attributeName
答案 1 :(得分:0)
这对我有用。将值保存到 sessionAttributes。
{
"sessionAttributes": {
"fileName": "budgetreport.doc"
},
"dialogAction": {
...
然后我可以从事件/输入访问它们。 名称具有会话属性的值。
exports.handler = async (event) => {
let message = firstMsg;
var attributes = event['sessionAttributes'];
console.log('attrs; ',attributes);
let name;
let type="Close";
if( attributes != null)
name= attributes['fileName'];