Node.jsで書かれたLambda関数は、SNSに正常に公開されています。 Alexa Lambda関数のAlexaインテント内に同じ関数を置くと、コードのAlexa部分をコメントアウトした場合にのみ実行されます。AWS内からのSNSへの公開Lambda Alexa Intent、Node.js
この作品スタンドアロンラムダ関数です:
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のラムダ関数に関数内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コード。