Send notifications with Signal

In some cases it is nice to have notifications from OpenNMS in a separate channel on a smartphone and you don’t want to pay for SMS. Here is a tutorial where I use Signal using the signal-cli.

This Howto will describe how to download the latest signal-cli tool, link it to your existing Signal account and how to configure OpenNMS to use it as a notification target. You should have already an OpenNMS Horizon or Meridian running and you need a Signal account with the Signal app installed and configured on your smartphone.


Step 1: Download and extract the signal-cli tool

We get a copy of the released files and extract the signal-cli to /opt/signal-cli on your OpenNMS server.

cd /opt
curl -L | tar xz
mv signal-cli-0.6.0 signal-cli

Step 2: Link your existing Signal account with signal-cli

cd /opt/signal-cli/bin
./signal-cli link -n my-opennms

Generate a QR Code from the link, I’ve used an online QR code generator

Use “Plain Text” and use “Static – Embed text into code as-is”. Paste the tsdevice URL and download the generated QR code image. You can now scan it with your Signal app which links your signal-cli to your account which is identified by your phone number.

Test if you can send yourself a message with (-u is your phone number with country code):

./signal-cli -u +4912345789 send -m "This is my first message" +4912345789

Important for our integration:

  • -u +4912345789: This is the user which sends the notification
  • `-m “the message”: The message content which will be sent
  • +4912345789: The phone number of the recipient, in this case I send it to myself but can also be a collegue

The encryption and keys for Signal are stored in the home directory of your logged-in user which is /root/.config.

Step 3: Create a wrapper script which can be used as a custom notification in OpenNMS

To make the integration a little bit easier, I wrapped it up in a small script /opt/signal/bin/

#!/bin/bash -e



Ensure the script is executable with chmod +x You can use it now like this:

./ <target-phone-number> "<text message>"

Step 4: Integration in OpenNMS

Add a new notification command in ${OPENNMS_HOME}/etc/notificationCommands.xml:

<command binary="true">
    <comment>Signal CLI</comment>
    <argument streamed="false">
    <argument streamed="false">

As first argument for the script is the Mobile Phone number used from a configured OpenNMS user. The second argument we pass with -nm is a short message text to our script which is configured in the the notification itself. Restart OpenNMS so the changes will be applied.

Step 5: Create a new Destination Path which uses Signal

Create a notification destination path which uses your newly created signal-cli notification command.

Step 6: Add a mobile phone number in your user account

Step 7: Configure a notification to use our new destination path

Step 8: Enable Notifications

Step 9: Test Notification

Check if you get a notification for a node outage and a resolved message.



If you have issues getting the integration running, Notifd is the main component which drives the bits and pieces and writes log files to ${OPENNMS_HOME/logs/notfid.log. In case you need a more verbose output you can increase the log level value in ${OPENNMS_HOME/etc/log4j2.xml by changing the value from WARN to DEBUG in the line below. The changes will be picked up automatically and you don’t need a restart.

<KeyValuePair key="notifd" value="DEBUG" />

If you have devices on very unreliable internet connections, you can set an initial delay which ensures you only get notifications when the outage exists for a certain amount of time.

[UPDATE – 2018-11-05]

We have added a editable version of this article in our wiki:

gl & hf

By |2019-04-04T23:01:26+00:00November 2nd, 2018|Categories: Blog|Tags: , |0 Comments

About the Author: