我正在尝试从 Lambda 函数发布到 IoT 主题,该函数由 Alexa 技能触发。在 Lambda 函数中,我正在执行此 IoT 发布:
var params = {
topic: 'testTopic',
payload: new Buffer('test message'),
qos: 1
};
iotData.publish(params, function(err, data) {
if (err) console.log('ERR: ', err); // an error occurred
else if (data) console.log('DATA: ', data); // successful response
});
如果我在 Lambda 函数中运行此代码(并且仅此代码),它工作正常。但是如果我将 params 和 publish 函数放在 Alexa Skill 模板的 onIntent 函数中,并将其放在一个新的 Lambda 函数中,它就不起作用了。(两个 Lambda 函数具有相同的配置和策略。)
如果我注释掉 intentHandler.call(),那么 iotData.publish() 确实会运行,所以看起来 intentHandler 调用出于某种我不明白的原因正在取消它。
onIntent: function (intentRequest, session, response) {
var intent = intentRequest.intent,
intentName = intentRequest.intent.name,
intentHandler = this.intentHandlers[intentName];
if (intentHandler) {
console.log('dispatch intent = ' + intentName);
var params = {
topic: 'testTopic',
payload: new Buffer('test message'),
qos: 1
};
iotData.publish(params, function(err, data) {
if (err) console.log('ERR: ', err); // an error occurred
else if (data) console.log('DATA: ', data); // successful response
});
intentHandler.call(this, intent, session, response);
} else {
throw 'Unsupported intent = ' + intentName;
}
}