Skip to content
Guido Vilariño edited this page Aug 5, 2015 · 6 revisions

DemocracyOS manages user notifications through a separate node application, the Notifier server.

The purpose of this is to unload DemocracyOS itself from the hurdle of costly I/O operations and scheduling that are only relevant for notifications, while having a fault-tolerant approach as well (if the notifier fails it may resume notifications in the future, while the main app is still running). You can learn more about the Notifier and what notifications it provides in its own repo.

Setup

First of all, know where your instance of notifier-server is going to be running. And update your config files accordingly:

"notifications": {
  "url": "http://notifier-server.somehost.com:9001/api/events",
  "token": 123456
}

WARNING: specifying the notifier port is ALWAYS needed, even if it's running on port 80. We will fix this in future releases but for the time being please take it into account.

And that's all you need to do.

NOTE: the contents of config/defaults.json are the notifier's defaults for a local dev environment, so you needn't change those for a local build.

Usage

DemocracyOS communicates with the notifier through a small API client, the notifier-client. You can always hit the notifier directly through an HTTP call, but we recommend you leverage the existing client as shown.

In order to send notifications from anywhere in the app (server-side), you should first require the notifier-client and call it in the following fashion:

var notifier = require('notifier-client')(config.notifications);

notifier.notify('some-event-name')
  .to('john@example.com')
  .withData( someDataObject )
  .send(function (err, data) {
    if (err) return fn(err);
    return fn(null, doc);
  })

Some events are already supported by notifier (you can check which ones here). If you want to support custom events for your deployment then please fork notifier and customise as needed.

That's all there is to know about notifier for using it. If you want to know more or improve the existing feature set, please read more on the notifier repo