Published on InterSystems Developer Community (https://community.intersystems.com)

Home > Sending Alerts to Mobile Phone using Pushover from HTTP.OutboundAdapter

Article
Mark Connelly · Mar 9, 2018 3m read

Sending Alerts to Mobile Phone using Pushover from HTTP.OutboundAdapter

I wanted to see some alerts that occur in my Productions in a Mobile Device, I came across Pushover.net recently that although has an upfront cost  $5 you can send as many messages as you like after that, there is a 7 day free trial to check it out.

To Integrate this with a production I did the following.

Create an account and set up a device on https://pushover.net/

Record the following API Keys from the web site on the main page you will see

Your User Key   example: ueh3t7478foi3ruf2ogb3syu4fs34s

You then need to create an application I set

Name : Cache

Type : Application

And left the oter settings blank.

This will give you a 

API Token/Key  example: auh000es1aaaa7ddeb3i4jfkgwswero

I then created this class to add an operation to the production, replace your Key, token and device name into

 Do httprequest.SetParam("token","auh000es1aaaa7ddeb3i4jfkgwswero")
 Do httprequest.SetParam("user","ueh3t7478foi3ruf2ogb3syu4fs34s")

Do httprequest.SetParam("device","motogplay")
Class TrustDev.TrustMon.Operations.PushOverSender Extends Ens.BusinessOperation
{

Parameter ADAPTER = "EnsLib.HTTP.OutboundAdapter";

Property Adapter As EnsLib.HTTP.OutboundAdapter;

Parameter INVOCATION = "Queue";

Method OnD03Alert(pReq As TrustDev.TrustMon.Messages.Alert, Output pResp As %String) As %Status
{
    
        Set Message = "Server = <b>"_pReq.ServerName_"</b>"
        
        Set Message = Message _ "Alert Code = "_pReq.EventDescription
        
        Set title = pReq.EventCode_" : Priority "_pReq.EventAlertValue
        
        Set httprequest = ##class(%Net.HttpRequest).%New()
        
        Set httprequest.SSLConfiguration = "pushover"
        
        Set httprequest.Https = $$$YES
        
        Set httprequest.Server = "api.pushover.net"
        
        Set httprequest.Location = "/1/messages.json"
        
        Set httprequest.ContentType = "application/x-www-form-urlencoded"
        
        Do httprequest.SetParam("token","auh000es1aaaa7ddeb3i4jfkgwswero")
        
        Do httprequest.SetParam("user","ueh3t7478foi3ruf2ogb3syu4fs34s")
        
        Do httprequest.SetParam("device","motogplay")
        
        Do httprequest.SetParam("title",title)
        
        Do httprequest.SetParam("html",1)
        
        Do httprequest.SetParam("message",Message)
        
        Do httprequest.Post(,0)
        
        set stream = httprequest.HttpResponse.Data
            
        while 'stream.AtEnd {
                Set pResp = stream.Read($$$MaxStringLength)
        }
    
    Quit $$$OK
}

XData MessageMap
{
<MapItems>
    <MapItem MessageType="TrustDev.TrustMon.Messages.Alert"> 
        <Method>OnD03Alert</Method>
    </MapItem>
</MapItems>
}

}

The message I pass into this class is the following, but you could adapt this to your own requirements.

Class TrustDev.TrustMon.Messages.Alert Extends Ens.Request
{

Property SiteName As %String;

Property ServerName As %String;

Property ServerId As %Integer;

Property ProductionName As %String;

Property EventDateTime As %DateTime;

Property EventCode As %String;

Property EventItem As %String;

Property EventCodeId As %String;

Property EventDescription As %String(MAXLEN = 50, TRUNCATE = 1);

Property EventValue As %Double;

Property EventValueUnits As %String;

Property EventSD25 As %Double;

Property EventAlertValue As %Double;

Property EventAlertNow As %Boolean;

Property ErrorCode As %String;

Property EventValue2 As %Double;

Property EventValue3 As %Double;

Property EventValue4 As %Double;

Property EventValue5 As %Double;

}

Your going to need a empty SSL Client Configuration

In Ensemble go to System > Security Management > SSL/TLS Configurations 

Click Create New Configuration

Name it Pushover and leave all the other fields as default and click save

On a Production add a new Operation using the class TrustDev.TrustMon.Operations.PushOverSender

In the basic settings set

HTTP Server = https://api.pushover.net/1/messages.json

In Connection Setting set the SSL Configuration to pushover, as created above

Uncheck SSL Check Server Identity

This should now be working, click Actions -> test and add some values to the Request Details and you should get your first notification through.

Good Luck! :)

#System Administration #Ensemble

Source URL:https://community.intersystems.com/post/sending-alerts-mobile-phone-using-pushover-httpoutboundadapter