Category5.TV Community Forum
Telegram Push notifications - Printable Version

+- Category5.TV Community Forum (https://forum.category5.tv)
+-- Forum: NEMS - Nagios Enterprise Monitoring Server (https://forum.category5.tv/forum-8.html)
+--- Forum: User Contributions (https://forum.category5.tv/forum-44.html)
+--- Thread: Telegram Push notifications (/thread-96.html)



Telegram Push notifications - baggins - 10-21-2017

Hi,

In another project I use Telegram to receive push notifications on my phone so I thought it would be nice to have the same in NEMS.
It is actually quite simple to set this up.

For those interested, here are the steps:

1) Get a Telegram account (it is free!): https://telegram.org/
After setting up your account you will have a bot and a chat id.

2) install lua-sec (this will also install lua-socket):


Code:
sudo apt-get install lua-sec


3) Install the following script in /usr/local/bin:
Name the script 'telegram_nems.lua'
This is a simple lua script I wrote just to get this working, so it is really minimal without error checking etc...


Code:
#!/usr/bin/lua
https = require('ssl.https')
local telegram_url = 'https://api.telegram.org/<your bot>/sendMessage?'
local chat_id = '<your chat id>'

     Notification = "Notification Type: " .. arg[1] ..'\n'    --$NOTIFICATIONTYPE$
     Host = "Host: " .. arg[2] ..'\n'                         --$HOSTNAME$
     State = "State: " .. arg[3] ..'\n'                       --$HOSTSTATE$/$SERVICESTATE$
     Address = "Address: " .. arg[4] ..'\n'                   --$HOSTADDRESS$
     Info = "Info: "  .. arg[5] ..'\n'                        --$HOSTOUTPUT$/"$SERVICEOUTPUT$"
     Date_Time = "Date/Time: " .. arg[6] ..'\n'               --$LONGDATETIME$
   if (#arg == 6) then
     message = '***** Nagios ***** ' ..'\n' ..'\n' .. Notification .. Host ..State .. Address .. Info .. Date_Time
   else
     Service = "Service: " .. arg[7] .. '\n'                  --$SERVICEDESC$
     message = '***** Nagios ***** ' ..'\n' ..'\n' .. Notification .. Host  .. Service ..State .. Address .. Info .. Date_Time
   end

local data_str = 'chat_id=' .. chat_id .. '&text=' .. message..''  
local res, code, headers, status = https.request(telegram_url, data_str)

4) In NConf, add the following to Misccommands:

Code:
command_name                          notify-host-by-telegram
command_line                          /usr/local/bin/telegram_nems.lua "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$HOSTSTATE$" "$HOSTADDRESS$" "$HOSTOUTPUT$" "$LONGDATETIME$"


Code:
command_name                          notify-service-by-telegram
command_line                          /usr/local/bin/telegram_nems.lua "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$SERVICESTATE$" "$HOSTADDRESS$" "$SERVICEOUTPUT$" "$LONGDATETIME$" "$SERVICEDESC$"

As usual: use at your own risk!


RE: Telegram Push notifications - Robbie Ferguson - 10-21-2017

Wow baggins - am I reading this right? You can use this to get push notifications from NEMS to your phone?

I love it! And I appreciate your sharing the code.

Cool to include this in NEMS 1.3?


RE: Telegram Push notifications - baggins - 10-21-2017

I have the messages on both my iPhone and iPad [Image: smile.gif]

The script needs some polishing, but feel free to include it in 1.3.

I'm glad being able to contribute to the fine work that you have done with NEMS!


RE: Telegram Push notifications - Robbie Ferguson - 10-23-2017

Awesome-- thanks!

If you make any "polishing" changes to it, please post here. I'll probably be feature locked within the next week or so... so if you want to fix anything up, this'd be the best time to get that in before 1.3.

Cheers,
Robbie


RE: Telegram Push notifications - Robbie Ferguson - 10-24-2017

Your commands made it into NEMS 1.3! https://docs.nemslinux.com/changelog_1.3

Congratulations, and thanks again for your contribution.


RE: Telegram Push notifications - Robbie Ferguson - 10-25-2017

Added to NEMS Docs - https://docs.nemslinux.com/usage/notify-host-by-telegram


RE: Telegram Push notifications - Robbie Ferguson - 10-26-2017

baggins, I'm in the process of setting up my test system and writing the documentation for this, but can't figure out where the Chat ID and Bot ID are located within the app. Can you please clarify the steps from a freshly-activated Telegram account to obtain these two credentials?

Thanks!