我有一个用Node.js写成的Lambda函数,可以成功发布到SNS。 当我在Alexa Lambda函数的Alexa意图中放入相同的函数时,只有在注释掉代码的Alexa部分时才会执行该函数。从AWS Lambda内部发布到SNS Alexa意图,Node.js
这是独立的lambda表达式的作品:
var AWS = require("aws-sdk");
exports.handler = function() {
var sns = new AWS.SNS();
var params = {
Message: "Cheese",
Subject: "Test SNS From Lambda",
TopicArn: "arn:aws:sns:us-east-1:xxxxxxx:MyTopic"
};
sns.publish(params, function(){});
};
如果我再尝试把我的Alexa的lambda函数的函数内的SNS代码,它不执行。其余的Alexa代码工作正常,但没有发布到SNS。但是,如果我将它的Alexa部分注释掉,它确实有效。
这是不工作(AWS-SDK包含在文件的顶部,从这个例子省略)代码:
exports.handler = function(event, context) {
var sns = new AWS.SNS();
var params = {
Message: "Cheese",
Subject: "Test SNS From Lambda",
TopicArn: "arn:aws:sns:us-east-1:xxxxxxx:MyTopic"
};
sns.publish(params, function(){});
const alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.resources = languageStrings;
alexa.registerHandlers(newSessionHandlers, memberModeHandlers);
alexa.execute();
};
如果我注释掉所有的Alexa的东西在exports.handler函数,SNS发布工作,但显然应用程序的其余部分失败。
这样,这将工作:
exports.handler = function(event, context) {
var sns = new AWS.SNS();
var params = {
Message: "Cheese",
Subject: "Test SNS From Lambda",
TopicArn: "arn:aws:sns:us-east-1:xxxxxxx:MyTopic"
};
sns.publish(params, function(){});
/*
const alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
// To enable string internationalization (i18n) features, set a resources object.
alexa.resources = languageStrings;
alexa.registerHandlers(newSessionHandlers, memberModeHandlers);
alexa.execute();
*/
};
有什么想法,什么是怎么回事? 理想情况下,我想要做的就是将sns发布代码放在一个单独的函数中,然后我在Alexa技能期间的某个点调用一个意图调用,但目前为止我无法使这个函数与Alexa码。