私は、AWS Lambdaで動作し、イベントを発行したときにコールバックを実行するのに問題があるNodeのAlexaスキルで作業しています。 Node.jsのREADMEのためのアレクサ・スキル・キットには、イベントハンドラにコールバック関数を渡し実証、およびコンテキストを維持するために、矢印の機能を使用することをお勧めします:コールバックをイベントハンドラに渡す
this.emit('JustRight',() => {
this.emit(':ask', guessNum.toString() + 'is correct! Would you like to play a new game?',
'Say yes to start a new game, or no to end the game.');
});
私は同じことをやろうとしているが、それを見つけますよ私のコールバックは決して実行されないようです。私は、AWSラムダは4.3.2をノードに限られており、矢印の機能が利用できないので、これはと思ったので、私はコールバックに戻って昔ながらの方法、このコンテキストを渡してみました:新規セッションハンドラで
:
をイベントハンドラでif(!account_id) {
console.log('Access token:' + accessToken);
this.emit('getAccount', accessToken, function (retrieved_id) {
console.log('account id in callback: ' + retrieved_id);
this.emit('welcome');
});
}
:
accountHandler = {
'getAccount': function (accessToken, cb) {
console.log('fetching account id');
var client = thirdparty.getClient(accessToken);
var r = client.getAccountForToken(client);
r.then(function (data) {
console.log('got it:' + data);
this.attributes['account_id'] = data;
cb.call(this, data);
}).catch(function (err) {
this.emit('handleApiError', err);
});
},
}
私は成功したログに、アカウントIDを取得するんだけど、ラムダは、エラーなしで、私のコールバック関数を呼び出すことなく、実行されていることがわかります。私は、Promise 'then'関数内でコールバックを呼び出す際に問題があるか、何か他のことが起こっているかどうかを調べようとしています。