我有一個用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碼。