我在我的 Nodejs Alexa Skill Service 中使用Dynasty ,在 AWS Lambda 上运行,来查询 DynamoDB。由于 API 的结构,我无法在我的 Alexa 响应中使用查询结果。在下面的代码中,传递给“then”的回调在处理程序返回后运行,因此永远不会分配“name”。如何在响应中使用在查询回调中获得的信息?
const dynasty = require('dynasty')(credentials);
const myIntentHandler = {
canHandle(input) {
return input.requestEnvelope.request.intent.name === 'MyIntent';
},
handle(input) {
const userId = input.requestEnvelope.session.user.userId;
const users = dynasty.table('user');
var name;
users.find(userId).then(function(user) {
if(user) {
name = user.name;
} else {
...
}
});
return input.responseBuilder.speak('Hello ' + name).getResponse();
}
};