【发布时间】:2019-07-28 13:41:09
【问题描述】:
我有一个连接到 Alexa 技能的 lambda 函数。在技能开始时,我想将字符串存储到 dynamoDB。因此,我直接在启动请求中调用了一个函数(该函数称为 nameExport())。 但是,如果我在启动请求中删除“this.emit”命令,该功能只会存储一些东西。如果我离开“this.emit”,则该技能正在工作,但没有任何内容存储到数据库中。您可以在下面找到有关 LaunchRequest 的代码以及存储到 dynamoDB 中的函数。
var config = require("config");
var Alexa = require("alexa-sdk");
var AWS = require("aws-sdk");
var Speech = require("ssml-builder");
var dynamodb = new AWS.DynamoDB();
let handlers = {
'LaunchRequest': function () {
nameExport("testName");
let speech = new Speech ();
speech.say("Welcome by Emotions.")
speech.pause("100ms")
speech.say("Do you want to assess your current emotion?")
let speechOutput = speech.ssml(true);
this.emit(":ask", speechOutput)
},
'Emotion': function () {
let speech = new Speech();
...
应该将字符串写入数据库的 nameExport 函数:
function nameExport(name) {
var tableName = "myinfo";
dynamodb.putItem({
"TableName": tableName,
"Item": {
"name": {
"S": name
}
}
}, function(err, data) {
if (err) {
//context.fail('ERROR: Dynamo failed: ' + err);
} else {
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
//context.succeed('SUCCESS');
}
});
};
【问题讨论】:
标签: node.js aws-lambda amazon-dynamodb alexa