daluu Posted July 30, 2007 Posted July 30, 2007 I needed an automated SIP client, and preferably one with media (audio) support as well. Couldn't find one that was effective or easy to set up. So I came up with writing a wrapper to X-Lite and eyeBeam SIP clients through GUI automation. You can automate this by executing a sequence of commands with the script below. The script below does require you to install the AutoItX automation library to work. Or re-write in C++ or AutoIt script to make into standalone executable. I'm providing this "as is", with no support. expandcollapse popup'''Main Program here'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim args, ibeambot, retVal Set args = WScript.Arguments If args.Count = 0 Then displayInfo Set args = Nothing WScript.Quit(0) End If Set ibeambot = WScript.CreateObject("AutoItX3.Control") ibeambot.AutoItSetOption "MouseCoordMode", 0 ibeambot.WinActivate "eyeBeam", "" 'ibeambot.WinWaitActive "eyeBeam", "", 15 ibeambot.WinActivate "X-Lite", "" 'ibeambot.WinWaitActive "X-Lite", "", 15 Select Case args(0) Case "-?" displayUsage Case "-bancall" 'softkey in eyeBeam display 'works like "send to voicemail" all the time until un-banned 'how to un-ban? Also not available on X-Lite 'left-click mouse @ Ban softkey once, ~instantaneously ibeambot.MouseClick "left", 425, 111, 1, 0 Case "-call" 'make a call If args.Count = 1 Then ibeambot.Send "{ENTER}" 'enter to call Else ibeambot.Send args(1) 'dial number ibeambot.Send "{ENTER}" 'enter to call End If Case "-close" 'close eyeBeam ibeambot.Send "^q" 'Ctrl+q Case "-conf" 'conference on/off - see eyeBeam v1.1 manual ibeambot.Send "^n" 'Ctrl+n Case "-dial" 'dial/press DTMF digits ibeambot.Send args(1) Case "-detectmwi" 'detect Message Waiting Envelope icon + # of messages in VM 'left-click mouse @ MWI icon, ~instantaneously ibeambot.MouseClick "left", 315, 144, 1, 0 retVal = ibeambot.WinWaitActive("Messages Waiting", "", 5) If retVal = 1 Then ibeambot.Send "{ENTER}" WScript.Echo "MWI detected" Else WScript.Echo "MWI not detected" End If Set args = Nothing Set ibeambot = Nothing WScript.Quit(retVal) Case "-dnd" ibeambot.Send "^d" 'Ctrl+d Case "-exit" 'close eyeBeam ibeambot.Send "^q" 'Ctrl+q Case "-flash" 'left-click mouse @ Flash button once, ~instantaneously If args.Count > 2 Then If args(1) = "-ver" And (args(2) = "xlite" Or args(2) = "1.5") Then ibeambot.MouseClick "left", 318, 236, 1, 0 End If Else ibeambot.MouseClick "left", 300, 236, 1, 0 End If Case "-h" displayUsage Case "-help" displayUsage Case "-hold" ibeambot.Send "^o" 'Ctrl+o Case "-ignorecall" 'softkey in eyeBeam display 'works like "send to voicemail" on Wave (Office mode) ibeambot.Send "^i" 'Ctrl+i Case "-line" 'select line 1-6 ibeambot.Send "^" & args(1) 'Ctrl+number Case "-mute" 'mute on/off ibeambot.Send "^m" 'Ctrl+number Case "-offhook" ibeambot.Send "{ENTER}" 'get dial tone, can start dialing Case "-onhook" ibeambot.Send "^h" 'Ctrl+h Case "-open" 'open eyeBeam Dim shell Set shell = WScript.CreateObject("WScript.Shell") shell.Run(args(1)) Set shell = Nothing Case "-playwav" 'play a Wave file 'assumes that on the computer running eyeBeam/X-Lite audio 'out is looped back to audio in or microphone input, to be 'transmitted to other end of SIP call. Dim shell Set shell = WScript.CreateObject("WScript.Shell") 'launch Windows Sound Recorder to play file then close on completion shell.Run("sndrec32 /play /close " & args(1)) Set shell = Nothing Case "-quit" 'close eyeBeam ibeambot.Send "^q" 'Ctrl+q Case "-record" 'record audio to file on/off toggle 'left-click mouse @ Record button once, ~instantaneously If args.Count > 2 Then If args(1) = "-ver" And (args(2) = "xlite" Or args(2) = "1.5") Then ibeambot.MouseClick "left", 336, 204, 1, 0 End If Else ibeambot.MouseClick "left", 334, 236, 1, 0 End If Case "-redial" ibeambot.Send "^r" 'Ctrl+r Case "-xferblind" 'blind transfer ibeambot.Send "^t" 'Ctrl+t, initiate blind xfer ibeambot.Send args(1) 'dial number of xfer target ibeambot.Send "^t" 'Ctrl+t, complete blind xfer 'check display area if have msg that xfer failed Case "-xfersup" 'supervised transfer 'assume you have 2 calls in progress, 1 active, 1 on hold 'use xfer button to connect 1 call to the other to complete xfer 'with transfer target as active call ibeambot.Send "^t" 'Ctrl+t, initiate supervised xfer ibeambot.Send "^" & args(1) 'Ctrl+number, line of transferee that's on hold ibeambot.Send "^t" 'Ctrl+t, complete supervised xfer 'check display area if have msg that xfer failed Case "-xfervm" 'send/transfer to voicemail ibeambot.Send "^s" 'Ctrl+s default: WScript.Echo "Invalid parameter(s), type ""cscript ibeambot.vbs -help"" for usage details." End Select Set args = Nothing Set ibeambot = Nothing WScript.Quit(0) '''Helper methods''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub displayInfo WScript.Echo "ibeambot.vbs - eyeBeam Command-Line Automation Interface" WScript.Echo "--------------------------------------------------------" WScript.Echo "Version 1.0, July 25, 2007." WScript.Echo "Requires AutoIt automation program installed. See documentation." WScript.Echo "" WScript.Echo "For automating eyeBeam v1.1, v1.5, and X-Lite v3.0" WScript.Echo "Designed to automate one instance of eyeBeam per desktop only." WScript.Echo "You can automate 1+ eyeBeams via use of psexec, or psexec & Remote Desktop." WScript.Echo "Can be used stand-alone or in conjunction with VTS for automated testing." WScript.Echo "" WScript.Echo "Type ""cscript ibeambot.vbs -help"" for usage details" WScript.Echo "Also refer to the ibeambot documentation" WScript.Echo "" End Sub Sub displayUsage Dim tab 'tab = Chr(9) tab = " - " displayInfo WScript.Echo "Usage details:" WScript.Echo "--------------" WScript.Echo "" WScript.Echo "cscript ibeambot.vbs -actionOption [data] [-ver] [verData]" WScript.Echo "" WScript.Echo tab & "[data] may be required or optional depending on the action to perform. See action options below." WScript.Echo tab & "[-ver] is optional & specifies which version of eyeBeam is being used, which requires [verData] parameter" WScript.Echo tab & "[verData] is required only if [-ver] is used." WScript.Echo tab & "valid values are ""1.1"" (default), ""1.5"", and ""xlite""" WScript.Echo "" WScript.Echo "Action options:" WScript.Echo "---------------" WScript.Echo "" WScript.Echo "?" & tab & "display help or usage information" WScript.Echo "bancall" & tab & "ban current incoming call, see eyeBeam v1.1 manual for details" WScript.Echo "call [dial string]" & tab & "call the number specified by the dial string, or currently dialed digits if dial string not supplied." WScript.Echo "close" & tab & "close eyeBeam application" WScript.Echo "conf" & tab & "toggle conference on/off" WScript.Echo "dial [digits]" & tab & "dial valid DTMF digits 0-9,*, and #" WScript.Echo "detectmwi" & tab & "detects message waiting indicator. Returns 1 if found, or 0 if not." WScript.Echo "dnd" & tab & "toggle DND" WScript.Echo "exit" & tab & "close eyeBeam application" WScript.Echo "flash" & tab & "press Flash. See ibeambot doc for details." WScript.Echo "h" & tab & "display help or usage information" WScript.Echo "help" & tab & "display help or usage information" WScript.Echo "hold" & tab & "toggle call hold" WScript.Echo "ignorecall" & tab & "use eyeBeam softkey to ignore incoming call" WScript.Echo "line [1-6]" & tab & "select a line from 1 to 6. X-Lite only has lines 1-2." WScript.Echo "mute" & tab & "toggle mute" WScript.Echo "offhook" & tab & "go offhook (though not literally for SIP client) to get dial tone & begin dialing" WScript.Echo "onhook" & tab & "go onhook (end call or cancel current action)" WScript.Echo "open [path to executable]" & tab & "open eyeBeam/X-Lite application, if not already open" WScript.Echo "playwav [path to wave file]" & tab & "plays a wave file as audio coming out of eyeBeam/X-Lite. See ibeambot doc for details." WScript.Echo "quit" & tab & "close eyeBeam application" WScript.Echo "record" & tab & "toggle eyeBeam audio record feature. See ibeambot doc for details." WScript.Echo "redial" & tab & "redial last dialed number" WScript.Echo "xferblind [dial string]" & tab & "blind transfer current call to specified number. Not supported on X-Lite." WScript.Echo "xfersup [line]" & tab & "supervise transfer current call to another line (1-6), see eyeBeam v1.1 manual for details. Not supported on X-Lite." WScript.Echo "xfervm" & tab & "send incoming call directly to voicemail of this eyeBeam SIP extension" WScript.Echo "" End Sub
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now