Available Ruby Modules
(for more see
http://www.mysipswitch.com/forum/viewtopic.php?t=399 )
CallBack Module
sys.Callback(string dest1, string dest2) - Initiates a call to dest1 and if successful then calls dest2 and bridges the calls together. The dest1 and dest2 parameters are SIP Provider constructs.
Code: Select all
# Ruby dialplan example for sys.Callback
sys.Log("call received uri=#{req.URI.User}")
sys.Callback("012345@blueface", "023456@voipstunt")
sys.Callback(string dest1, string dest2, int delay) - After specified delay, it initiates a call to dest1 and if successful then calls dest2 and bridges the calls together. The dest1 and dest2 parameters are SIP Provider constructs.
Code: Select all
# Ruby dialplan example for sys.Callback
sys.Log("call received uri=#{req.URI.User}")
sys.Callback("012345@blueface", "023456@voipstunt" , 10)
Dial Module
A note about the sys.Dial () function.
It can be used in a few forms:
-sys.Dial("ProviderName")
When used in this form, the number called via the specified provider by default is the value stored in the variable req.URI.User
When you are placing a call, req.URI.user is the number you're calling.
When an incoming call is coming in, req.URI.user is your account or subaccount username.
-sys.Dial("1${dst}@ProviderName")
This form is more useful when used for outgoing call routing, allowing one to modify how the number you've dialed is actually dialed via the specified provider. In this case ${dst} is the actual number as you dialed it.
sys.Dial(string provider) - The provider parameter must match a SIP Provider name.
The Dial command will forward the number as dialed to the SIP Provider.
Code: Select all
# Ruby dialplan example for sys.Dial
sys.Log("call received uri=#{req.URI.User}")
sys.Dial("ProviderName")
The Dial command will forward the number with modifications (eg. add 1 to front) to the SIP Provider.
Code: Select all
# Ruby dialplan example for sys.Dial
sys.Log("call received uri=#{req.URI.User}")
sys.Dial("1${dst}@ProviderName")
sys.Dial(string provider, int timeout)- Dial number, and if there is no answer after specified length of time (in seconds) then move to the next command
Code: Select all
# Ruby dialplan example for sys.Dial
sys.Log("call received uri=#{req.URI.User}")
sys.Dial("Provider1", 10)
sys.Dial("Provider2", 10)
sys.Dial("Provider3", 10)
Number modification can also be applied (to adjust number entered based on requirements of each provider):
eg.
Code: Select all
sys.Dial("1${dst}@Provider1", 10)
sys.Dial("00${dst}@Provider2", 10)
sys.Dial("${dst:3}@Provider3", 10)
sys.Dial(string number@provider&string number2@provider)- Simultaneous calls to two or more destinations
Code: Select all
# Ruby dialplan example for sys.Dial
sys.Log("call received uri=#{req.URI.User}")
sys.Dial("Number@Provider1&Number2@Provider1&Number3@Provider2)
sys.Dial(provider1|provider2|provider3)- Number called is passed to the first provider, should it fail, the call is attempted over the second provider, then the third and so on (for those familiar with Asterisk terms, this is the equivalent of FallBack Trunks).
Code: Select all
# Ruby dialplan example for sys.Dial
sys.Log("call received uri=#{req.URI.User}")
sys.Dial("Provider1|Provider2|Provider3)
Number modification can also be applied (to adjust number entered based on requirements of each provider):
eg.
Code: Select all
sys.Dial("1${dst}@Provider1|00${dst}@Provider2|${dst:3}Provider3")
sys.RegexMatch (variable, "value-to-match") - A matching statement to check the value of the specific variable. Should the match be 'True' then other actions can be allowed to occur when this is part of an if statement.
Code: Select all
if sys.RegexMatch(req.URI.User, "skype.mocierion") then
sys.log("Other modules can be added here, like sys.Dial or sys.Callback")
During and Incoming Call
req.URI.User = The Username of the MSS acct. receiving the call (this the username of your acct., or sub-account, or 'anything.mssuser', if it is a call for
anything.mssuser@sip.mysipswitch.com)
req.URI.Host = The host portion of the URI for which the call is coming in (eg. sip.mysipswitch.com or the corresponding IP)
req.Header.From.FromName = Name of Caller
req.Header.From.FromURI.User = Number of Caller (or their username if the call is coming from another MSS or VoIP user )
req.Header.From.FromURI.Host = The Host of the caller (this is usually an IP adress that indentifies the provider your caller is using to call you)
During an Outgoing call
req.URI.User = Number you are calling
req.Header.From.FromURI.User = Your account username (account doing the calling)
req.Header.from.FromURI.Host = Your provider with which you're registering (this is usually the IP for sip.mysipswitch.com )
req.Header.From.FromName = Your Name
Adjusting Outgoing Caller ID:
(this is one way to adjust the outgoing CID, you can also make modifications to the 'From Header' field when setting up a provider)
During an outgoing or Forwarded Call, you can adjust the three fields above to set your customize your Caller ID.
eg.
Code: Select all
req.Header.From.FromURI.User = "01234567"
req.Header.from.FromURI.Host = "mydomain.com"
req.Header.From.FromName = "Joe Bloggs"
The above script would result in a From header of:
From: "Joe Bloggs" <sip:
01234567@mydomain.com>
But
PLEASE NOTE that the field that is generally used for authentication is req.Header.From.FromURI.User so be aware your calls could fail if it is modified.