qbit / node-pushover

Pushover notifications for node.js (JavaScript,NodeJS)
ISC License
163 stars 24 forks source link

Pushover

Send pushover.net notifications from Node.JS

Build Status Coverity Scan Build Status

NPM

Usage

Install

npm install pushover-notifications

Pushover API values

Any API parameters, as found on https://pushover.net/api, can be passed in the object. For example, retry and expire can be added to the object being passed to .send! Here's an example with many different parameters.

var msg = {
  message: "This is a message",
  title: "Well - this is fantastic",
  sound: 'magic',
  device: 'test_device',
  priority: 2,
  url: "http://pushover.net",
  url_title: "Pushover Website"
}

Examples

Sending a message


var Push = require( 'pushover-notifications' )

var p = new Push( {
  user: process.env['PUSHOVER_USER'],
  token: process.env['PUSHOVER_TOKEN'],
  // httpOptions: {
  //   proxy: process.env['http_proxy'],
  //},
  // onerror: function(error) {},
  // update_sounds: true // update the list of sounds every day - will
  // prevent app from exiting.
})

var msg = {
  // These values correspond to the parameters detailed on https://pushover.net/api
  // 'message' is required. All other values are optional.
  message: 'omg node test', // required
  title: "Well - this is fantastic",
  sound: 'magic',
  device: 'devicename',
  priority: 1
}

p.send( msg, function( err, result ) {
  if ( err ) {
    throw err
  }

  console.log( result )
})

Sending a message with an attachment (blocking)


var Push = require( 'pushover-notifications' )

var p = new Push( {
  user: process.env['PUSHOVER_USER'],
  token: process.env['PUSHOVER_TOKEN'],
  // httpOptions: {
  //   proxy: process.env['http_proxy'],
  //},
  // onerror: function(error) {},
  // update_sounds: true // update the list of sounds every day - will
  // prevent app from exiting.
})

var msg = {
  // These values correspond to the parameters detailed on https://pushover.net/api
  // 'message' is required. All other values are optional.
  message: 'omg node test', // required
  title: "Well - this is fantastic",
  sound: 'magic',
  device: 'devicename',
  priority: 1,
  file: '/tmp/fantastic.png' // this will read using fs.readFileSync()!
}

p.send( msg, function( err, result ) {
  if ( err ) {
    throw err
  }

  console.log( result )
})

Sending a message with an attachment (non-blocking)


var Push = require( 'pushover-notifications' )
var fs = require( 'fs' )

fs.readFile('/tmp/fantastic.png', function(err, data) {
  var p = new Push( {
    user: process.env['PUSHOVER_USER'],
    token: process.env['PUSHOVER_TOKEN'],
    // httpOptions: {
    //   proxy: process.env['http_proxy'],
    //},
    // onerror: function(error) {},
    // update_sounds: true // update the list of sounds every day - will
    // prevent app from exiting.
  })

  var msg = {
    // These values correspond to the parameters detailed on https://pushover.net/api
    // 'message' is required. All other values are optional.
    message: 'omg node test',   // required
    title: "Well - this is fantastic",
    sound: 'magic',
    device: 'devicename',
    priority: 1,
    file: { name: 'fantastic.png', data: data }
  }

  p.send( msg, function( err, result ) {
    if ( err ) {
      throw err
    }

    console.log( result )
  })
})

Sending a message to multiple users


var users = [
  'token1',
  'token2',
  'token3'
]

var msg = {
  message: 'omg node test',
  title: "Well - this is fantastic",
  sound: 'magic' // optional
  priority: 1 // optional,
  file: '/tmp/fancy_image.png' // optional
  // see test/test_img.js for more examples of attaching images
}

for ( var i = 0, l = users.length; i < l; i++ ) {
  msg.user = users[i]
  // token can be overwritten as well.

  p.send( msg, function( err, result ) {
    if ( err ) {
      throw err
    }

    console.log( result )
  })
}