【发布时间】:2017-11-27 20:48:49
【问题描述】:
我正在使用 AWS Lambda、Node.js 和 Alexa Skills Kit 开发 Alexa 技能。我正在使用来自 Skill-sample-nodejs-fact 项目的分支并成功部署并测试了示例事实项目。现在我正在尝试修改该代码以阅读某些 Facebook 提要上的帖子。首先我尝试开发一些可以阅读帖子的节点应用程序并且它是成功的。请找到以下代码供您参考。我使用了 fb 模块 - https://www.npmjs.com/package/fb
const FB = require('fb');
FB.setAccessToken('abc');
const query='cnninternational/posts';
FB.api(query, function (res) {
if(!res || res.error) {
console.log(!res ? 'error occurred' : res.error);
return;
}
console.log(res);
});
接下来,我尝试将上面的代码块集成到 lambda 函数中。不幸的是,我无法使用这些代码阅读 Facebook 帖子。请在下面的面板中找到这些代码块。另外,我还检查了 cloudwatch 日志。我可以看到“GetNewsIntent”,但在日志中没有看到“fb-init”、“fb-error”或“fb-exit”条目。令人惊讶的是,日志中也没有错误。如果有人可以帮助解决这个问题。
'use strict';
const Alexa = require('alexa-sdk');
const FB = require('fb');
const APP_ID = 'abc';
const SKILL_NAME = 'test';
const GET_FACT_MESSAGE = "Here's your news: ";
const STOP_MESSAGE = 'Goodbye!';
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};
const handlers = {
'LaunchRequest': function () {
this.emit('GetNewsIntent');
},
'GetNewsIntent': function () {
console.log('GetNewsIntent');
const speechOutput = GET_FACT_MESSAGE;
const query='cnninternational/posts';
FB.setAccessToken('abc');
FB.api(query, function (res) {
console.log('fb-init');
if(!res || res.error) {
console.log(!res ? 'error occurred' : res.error);
console.log('fb-error');
return;
}
console.log(res);
speechOutput = speechOutput + res;
console.log('fb-exit');
});
this.response.cardRenderer(SKILL_NAME, speechOutput);
this.response.speak(speechOutput);
this.emit(':responseReady');
},
'AMAZON.StopIntent': function () {
this.response.speak(STOP_MESSAGE);
this.emit(':responseReady');
},
};
【问题讨论】:
标签: node.js facebook-graph-api aws-lambda amazon-cloudwatch alexa