AWS Lambda未从DynamoDB提取数据并返回到AWS Lex



我正试图通过使用AWS Lambda函数从DynamoDb中提取和显示数据,并将其显示在AWS Lex上。它返回带有单词"if"的if部分;未定义的";在数据应该在的地方。信息在DynamoDB数据库中。我主要使用AWS服务器并构建这个无服务器Lex机器人应用程序。

AWS代码段

const AWS = require('aws-sdk');
const db = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
function getExamSchedule(exam2, table){
return new Promise(function(resolve){
var info = 0;
var params = {
TableName: table,
FilterExpression: "#key = :data",
ExpressionAttributeNames: {
"#key": "Resource",
},
ExpressionAttributeValues:{
":data": exam2
}
};
db.scan(params, function(err, data){
if(err){
console.log("Error: " + err);
info = 0;
} else {
console.log("Success", data);

info = {"ClassID" :data.Items[0].ClassID, "ExamDate " :data.Items[0].ExamDate, 
"ExamEndTime:" :data.Items[0].ExamEndTime, "ExamLocation" :data.Items[0].ExamLocation, 
"ExamStartTime" :data.Items[0].ExamStartTime};
}
resolve(info);
});
});
}

这是问题可能发生的部分。

exports.handler = async (event, context, callback) => {
var exam2 = event.currentIntent.slots.ClassID;
var info = await getExamSchedule(exam2, "Final_Exams");
var res;
// if (info !== 0)
if(info != null){
res =`The exam information for ${exam2} is ${info.ClassID} Date: ${info.ExamDate} 
End time:  ${info.ExamEndTime} Location: ${info.ExamLocation} Start time: ${info.ExamStartTime}`;
} else {
res = `The exam is not entered into our database, please look for another exam.`;
}

callback(null, {
"dialogAction": {
"type":"Close",
"fulfillmentState": "Fulfilled",
"message":{
"contentType": "PlainText",
"content": res
}
}
});
};

您是否可以共享运行代码时遇到的一些日志和/或堆栈跟踪?

相关内容

最新更新