Ashish
Ashish

Reputation: 197

MissingRequiredParameter: Missing required key 'Message' in params

I'm trying to invoke a code in AWS Lambda. This Lambda code has been configured with my IOT button. On running this code, I don't see any errors. Also,I don't really see the required push notification on my mobile device.

I can see this message in my console : MissingRequiredParameter: Missing required key 'Message' in params

This is my code:

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

Can someone help me debug this error?

Upvotes: 5

Views: 28403

Answers (1)

Ashish
Ashish

Reputation: 197

I found the answer. I had to define my variable too as a string using stringify() command or else JSON formatted message cannot be sent.

Upvotes: 9

Related Questions