MissingRequiredParameter:参数中缺少必需的键 'Message'

MissingRequiredParameter: Missing required key 'Message' in params

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

我可以在我的控制台中看到此消息:MissingRequiredParameter:缺少必需的密钥 'Message' in params

这是我的代码:

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

谁能帮我调试这个错误?

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