Imports System Imports SendSMS.AQLSoapGateway Imports System.Web.Services.Protocols Module Module1 Public Sub Main() ' AutoIncrement done with http://autobuildversion.codeplex.com 'Display Info Console.WriteLine(vbCrLf & _ "SendSMS.exe - SMS Sending Utility, using the AQL SMS Gateway. Version " & My.Application.Info.Version.ToString & vbCrLf & _ "David Wallis, 2011" & vbCrLf) 'Define Usage Message Dim strUsageMsg As String = vbCrLf & _ "Usage: SendSMS.exe" & vbCrLf & vbCrLf & _ "Available Options: " & vbCrLf & vbCrLf & _ "/Username:AQLUserName" & vbCrLf & _ "/Password:AQLPassword" & vbCrLf & _ "/DestinationNumber:PhoneNumber" & vbCrLf & _ "/Originator:Originator" & vbCrLf & _ "/Message:Message" & vbCrLf Dim strDestinationNumber As String = "", strUserName As String = "", strPassword As String = "", strOriginator As String = "", strMessage As String = "" ' Match Command Line Arguments with variables For Each arg As String In My.Application.CommandLineArgs If arg.ToLower.StartsWith("/destinationnumber:") Then strDestinationNumber = arg.Remove(0, 19) If arg.ToLower.StartsWith("/username:") Then strUserName = arg.Remove(0, 10) If arg.ToLower.StartsWith("/password:") Then strPassword = arg.Remove(0, 10) If arg.ToLower.StartsWith("/originator:") Then strOriginator = arg.Remove(0, 12) If arg.ToLower.StartsWith("/message:") Then strMessage = arg.Remove(0, 9) Next ' Exit out if options arent passed, otherwise proceed and initalise API connection. If Len(strDestinationNumber) = 0 Or Len(strUserName) = 0 Or Len(strPassword) = 0 Or Len(strOriginator) = 0 Or Len(strMessage) = 0 Then Console.WriteLine(strUsageMsg & vbCrLf & vbCrLf & "Error:" & vbCrLf & "All parameters are mandatory.") Environment.ExitCode = 1 Exit Sub End If Dim cpLatestBrief = New SendSmsService() ' Define destination number(s) from ' Create an array to pass for the destination number(s) - this code supports one number for simplicity Dim destarr As String() = New String(0) {} If strDestinationNumber.Substring(0, 1) = 0 Then ' Number begins 0 - strip 0 and add country code (UK Specific) - Not sure if this is required, but the ' example code specified the number in the 447733333333 format, ie drop the leading 0 and shove in 44. destarr(0) = "44" & strDestinationNumber.Substring(1, strDestinationNumber.Length - 1) End If ' create authentication object with AQL Username and Password cpLatestBrief.authValue = New auth() cpLatestBrief.authValue.username = strUserName cpLatestBrief.authValue.password = strPassword Dim creditsused As String Dim outdesr As String Dim dt As System.DateTime = DateTime.Now Dim cbe As SendSMS.AQLSoapGateway.callbackelement = New callbackelement() cbe.callbackurl = "http://url.com" cbe.callbacktype = SendSMS.AQLSoapGateway.callbacktypeoptions.HTTPGET If cpLatestBrief IsNot Nothing Then Try cpLatestBrief.SoapSendSms(destarr, strOriginator, strMessage, SendSMS.AQLSoapGateway.mtype.text, "2", dt, _ False, cbe, creditsused, outdesr) Console.WriteLine("Message Sent, " & creditsused & " credits used.") Catch e As SoapHeaderException Console.WriteLine("Name Entry Error" & vbCrLf & e.Message) Catch e As SoapException Dim node As System.Xml.XmlNode = e.Detail Dim errorcode As String = e.Detail.FirstChild.InnerText Dim errortext As String = e.Detail.FirstChild.NextSibling.InnerText If errorcode = "DESTERROR-INVALIDNUMBERS" Then Console.WriteLine("Name Entry Error" & vbCrLf & e.Message) ElseIf errorcode = "MESSAGE-NOTSUPPLIED" Then Console.WriteLine("Name Entry Error" & vbCrLf & e.Message) Else Console.WriteLine("Error:" & vbCrLf & "Error Code " & errorcode & vbCrLf & e.Message & " " & errortext) End If End Try Return Else Return End If End Sub End Module
I try to specialise in doing the out of the ordinary stuff (A Challenge!) - And generally making life as easy as possible using any of the technologies within reach without having to re-invent the wheel where possible! Technologies and products can include -> .NET, VBS, Powershell, DSC, Systems Center, NetApp, VMWare, Windows Server, Linux, Python, Microcontrollers and others!
Monday, 19 December 2011
Sending SMS via AQL's SOAP gateway using vb.net
I'm working on a project currently and a requirement I have is for Systems Center Operations Manager to send certain alerts as an SMS message, SCOM has this functionality built in but requires a GSM modem connected to the RMS in order to do this.
We currently use AQL to provide an SMS gateway service for another project so this looked like a good starting point as we were already paying for it.
A quick email to AQL resulted in an apology from AQL saying they didn't have any SDK samples and would add it to their list, but they did send some sample code in C# which I was able to knock into some vb.net code (C# isn't my strong point - I could argue the same about vb.net!)
Anyway the following should do the trick if you need it (You need to add a web service reference to the aql gateway http://gw.aql.com/soap/sendservice.php?WSDL - Web Service, Not a service Reference, Click Advanced under service reference and name it AQLSoapGateway.
At the moment this will just build you a command line utility that can be used for sending SMS, I'll cover getting SCOM to utilise this later.
Subscribe to:
Posts (Atom)