【发布时间】:2017-10-11 04:17:28
【问题描述】:
我有一个用 Node.js 编写的 Lambda 函数,可以成功发布到 SNS。 当我将相同的函数放入 Alexa Lambda 函数中的 Alexa 意图时,只有在我注释掉代码的 Alexa 部分时它才会执行。
这是独立的 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(){});
};
如果我尝试将 SNS 代码放在我的 Alexa lambda 函数中的函数中,它不会执行。 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();
};
如果我在 export.handler 函数中注释掉所有 Alexa 的东西,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 代码一起工作.
【问题讨论】:
标签: node.js aws-lambda amazon-sns alexa alexa-skills-kit