我目前正尝试通过订阅主题来获取cloudmqtt的数据。但是当我尝试将其转换为字符串以便我的Alexa可以读取它时,Alexa的测试服务告诉我“远程端点无法被调用,或者它返回的响应无效。”
我的订阅代码如下
var mqtt = require('mqtt');
function DHTSensorInSession(intent, session, callback) {
const cardTitle = intent.name;
let repromptText = '';
let sessionAttributes = {};
const shouldEndSession = true;
let speechOutput = '';
let Tempe = '';
var mqttpromise = new Promise( function(resolve,reject){
var client = mqtt.connect({port:19546,host:'m14.cloudmqtt.com',username:'jkgnbggq',password:'VbG2-RvZTEt-'})
client.on('connect', function() { // When connected
// publish a message to any mqtt topic
client.publish('main/light/esp', 'connected')
client.subscribe('main/sensor/temp')
});
client.on('message',function(topic,message){
if(topic.toString() === 'main/sensor/temp')
{
Tempe += message.toString();
}
client.end();
resolve('Done sending');
})
});
mqttpromise.then(
function(data) {
console.log('Function called succesfully:', data);
sessionAttributes = createSensorAttributes(Tempe);
speechOutput = "That wire less light has been turned " + Tempe;
repromptText = "Ok, turning the light " + Tempe;
callback(sessionAttributes,buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
},
function(err) {
console.log('An error occurred:', err);
}
);
}
答案 0 :(得分:0)
请参阅lambda的日志以查找任何错误消息。这些可以在AWS控制台中找到,或者使用ASK CLI命令"询问lambda log ..."。
这些看起来有点神秘,但是当出现问题时它们会非常有用。查找条目"错误"或"失败"。它们通常会包含index.js(或其他)文件的行号,显示确切地说明哪一行导致了问题。
或者,创建单元测试以在上载之前在本地测试代码。
网上有很多关于这样做的文章和帖子。
答案 1 :(得分:0)
MQTT无法正常工作。
通常,邮件仅传递给已发布邮件的订阅主题的已连接客户端。例外情况是,如果消息被标记为保留,则在这种情况下,发布的LAST消息将在他们订阅主题时传递给新客户端。