2017-08-02 2631 views
0

我正试图调用AWS Lambda中的代码。此Lambda代码已使用我的IOT按钮进行配置。在运行此代码时,我没有看到任何错误。另外,我并没有在移动设备上看到所需的推送通知。MissingRequiredParameter:在参数中缺少必需的键'消息'

我可以看到我的控制台此消息:MissingRequiredParameter:

'use strict'; 

console.log('Loading function'); 

var AWS = require('aws-sdk'); 

var sns = new AWS.SNS(); 

AWS.config.region = 'xxxxx'; 

const TopicArn = 'xxxxxxxxxxxxxxxxxxxxxxxxxx' 

exports.handler = function(event, context) { 

    console.log("\n\nLoading handler\n\n"); 
    console.log('Received event:', event); 


    const sin = 
     { 
"default": "Start", 
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"Start\"}}", 
"GCM": "{ \"notification\": { \"text\": \"Start\" } }" 
} // for single click 
    const doub = { 
"default": "Stop", 
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"Stop\"}}", 
"GCM": "{ \"notification\": { \"text\": \"Stop\" } }" 
} // for double click 
    const lon = { 
"default": "SOS", 
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"SOS\"}}", 
"GCM": "{ \"notification\": { \"text\": \"SOS\" } }" 
} // for long click 

    var singleClick = sin[Math.floor(Math.random()*sin.length)]; 
    var doubleClick = doub[Math.floor(Math.random()*doub.length)]; 
    var longClick = lon[Math.floor(Math.random()*lon.length)]; 

    var randomMessage = singleClick; 

    if(event.clickType == "DOUBLE") 
    { 
    randomMessage = doubleClick; 
    } 

    if(event.clickType == "LONG") 
    { 
    randomMessage = longClick; 
    } 


    sns.publish ({    
    Message: randomMessage, 
    TopicArn: TopicArn 
    }, 

    function(err, data) { 
     if (err) { 
      console.log(err.stack); 
      return; 

     } 
     console.log('push sent'); 
     console.log(data); 
     context.done(null, 'Function Finished!'); 
     }); 
     } 

有人可以帮我调试这个错误:在PARAMS

这是我的代码缺少必需的关键“消息”?

+0

'console.log(randomMessage);'。它看起来像变量将是未定义的,仅基于此处显示的代码。 –

+0

是的。我知道。我需要触发我的IOT按钮功能,才能在Android和iOS中向我的应用发送消息。有什么,我需要修改我的代码? – Ashish

+0

是的,如果是这样的话,修正未定义的变量。 –

回答

0

我找到了答案。我不得不使用stringify()命令将我的变量定义为字符串,否则无法发送JSON格式的消息。

相关问题