MissingRequiredParameter:在params中缺少必需的键'Message'

时间:2017-08-02 06:25:22

标签: amazon-web-services aws-lambda aws-iot

我正在尝试在AWS Lambda中调用代码。此Lambda代码已使用我的IOT按钮进行配置。运行此代码时,我没有看到任何错误。另外,我在移动设备上看不到所需的推送通知。

我可以在我的控制台中看到此消息:MissingRequiredParameter:在params中缺少所需的键'Message'

这是我的代码:

'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!');
        });
        }

有人可以帮我调试这个错误吗?

1 个答案:

答案 0 :(得分:2)

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