Node push notification

From DreamFactory
Jump to: navigation, search
DreamFactoryTutorialsNode push notification
Line 15: Line 15:
  
 
var lodash = require("lodash");
 
var lodash = require("lodash");
var request = require("request");
 
 
   
 
   
 
if (event.request.payload.resource) {
 
if (event.request.payload.resource) {
Line 25: Line 24:
 
                 "default": "A new Todo named '" + record.name + "' was just created!"
 
                 "default": "A new Todo named '" + record.name + "' was just created!"
 
             },
 
             },
             "Subject": "New Todo Created"
+
             "Subject": "New Todo Created - " + record.name
 
         };
 
         };
 
   
 
   
         var options = {
+
         platform.api.post('/push/topic/arn:aws:sns:us-east-1:662443008147:new_todo', msg, '', function(body, response){
            // full url for push service topic on your DreamFactory instance
+
             event.setResponse(JSON.parse(body), response.statusCode, 'application/json');
            url: 'http://localhost:8888/api/v2/push/topic/arn:aws:sns:us-east-1:805598006201:test123',
+
            method: 'POST',
+
            json: msg,
+
            // Use same auth as user calling this script.
+
            headers: {
+
                'x-dreamfactory-api-key': platform.session.api_key,
+
                'x-dreamfactory-session-token': platform.session.session_token
+
            }
+
        };
+
+
        request(options, function (error, response, body) {
+
             if(error) {
+
                console.log(error);
+
            } else {
+
                console.log(response.statusCode, body);
+
            }
+
 
         });
 
         });
 
     });
 
     });
 
}
 
}
 
</source>
 
</source>

Revision as of 05:02, 30 May 2016

This script uses a pre-configured push notification service to send notifications when new records are created.

// To enable Node.js scripting, set the path to node in your DreamFactory .env file.
// This setting is commented out by default.
//
// DF_NODEJS_PATH=/usr/local/bin/node
//
// Use npm to install any dependencies. This script requires 'lodash' and 'request'.
// Your scripts can call console.log to dump info to the log file in storage/logs.
 
// POST /api/v2/db/_table/todo triggers script db._table.todo.post.post_process
// This script runs AFTER records are written to the db.
// records are in array event.request.payload.resource.
 
var lodash = require("lodash");
 
if (event.request.payload.resource) {
 
    lodash._.each(event.request.payload.resource, function( record ) {
 
        var msg = {
            "Message": {
                "default": "A new Todo named '" + record.name + "' was just created!"
            },
            "Subject": "New Todo Created - " + record.name
        };
 
        platform.api.post('/push/topic/arn:aws:sns:us-east-1:662443008147:new_todo', msg, '', function(body, response){
            event.setResponse(JSON.parse(body), response.statusCode, 'application/json');
        });
    });
}