使用Alexa Lambda函数

时间:2017-04-10 07:58:50

标签: amazon-web-services aws-lambda amazon-dynamodb alexa alexa-skills-kit

我已经坚持使用这段代码大约一天了。我只是想通过使用Alexa的启动请求将信息添加到DynamoDB中。我收到以下错误代码:

“errorMessage”:“RequestId:f96ae2cb-1dbf-11e7-a267-b7cf2f2c95a0在完成请求之前退出流程”

信息实际上已插入到DynamoDB中,但由于错误,我无法向程序添加更多功能。根据我的理解,这可能是回调的问题。我已经尝试了许多不同的方法来“回调”或返回一些东西,但我还没弄清楚如何避免错误。如果我取消注释this.emit(':tell',“Hello,将Apples插入DynamoDB”);错误消失,但没有插入信息。任何帮助真的很赞赏!! (以下代码)

'use strict';
var Alexa = require('alexa-sdk');
const doc = require('dynamodb-doc');
const dynamo = new doc.DynamoDB();

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.registerHandlers(handlers);
    alexa.execute();
};

var handlers = {
    'LaunchRequest': function(event, context, callback) {
       // this.emit(':tell', "Hello, inserting Apples into DynamoDB");
        var params = {
            Item: {
                date: Date.now(),
                message: "Apples"
            },
            TableName: '_yourTableName'
        };
        dynamo.putItem(params, function(err, data){
            if(err){
                callback(err,null);
            }
            else{
                callback(null,data);
            }
        });
        context.done();
    }
};

1 个答案:

答案 0 :(得分:0)

这是因为您要向Dynamodb添加值,这是一个回调但context.done();是在回调之外写的。在dynamoDb完成操作之前,它将调用context.done();因此它将退出流程