Posts Tagged ‘voip’

Unified Communications

Friday, February 6th, 2009

Unified Communications is another commonly (mis)used techno term. Like many technical concepts, the aspiration is far ahead of the reality with marketing departments running rampant through R & D departments in search of the next big thing. However there is a clear trajectory emerging which traces its path from simple telephony through email and messaging, mobile and presence, leading to VoIP and IP technologies.

The idea that all methods of communications could converge on a single device is beginning to crystallise, particularly with new phones like the iPhone providing email, text, instant messaging and of course voice. One missing ingredient has been a single portal to manage the availability of each method – a concept such as presence which enables a prospective caller to determine how best to make contact – email or voice, instant message or text. This is beginning to emerge with applications which log on to all your IM services along with your VoIP service provider and can show prospective callers which contact options are available.

Blueface was founded in Dublin in 2004 to provide Voice over Internet Protocol (VoIP) telephone services to the Irish & UK Markets. As this telephone service works over a broadband connection, the availability and quality of broadband is central to the success of VoIP. Although the provision of broadband continues to be a hot topic for debate, there has been a marked improvement in the past 2 years. (ADSL2+ and SDSL, Wireless, 3G) .The increased availability of un-contended broadband connections in particular has been a very welcome development for business customers who are considering adopting VoIP for their Business. There are a number of reasons to adopt VoIP including improving efficiency and reducing costs.

VoIP provides the ability to obtain international geographic numbers and route them to any other phone, anywhere in the world. Hence a Virtual office in the US or UK, or even China is both cheap and simple. Re-routing out of hours calls to mobile phones or enabling teleworking is greatly simplified and becomes almost trivial. Getting voicemail delivered by email or free call conferencing are just some of the immediate benefits of VoIP. Combine this with a good IP device, particularly a mobile device and suddenly Unified Communications becomes part of the present rather than the future.

For those ISP’s wishing to provide VoIP themselves, Blueface have developed a white label platform that enables a company to offer these services under their own corporate brand. Several Irish ISP’s are already providing a telephone service to their customers using the Blueface White Label Platform. The White Label concept enables ISP’s to move along the unified communications trajectory by adding VoIP services to their existing portfolio, and enabling their customers to start reaping the benefits of the latest communications tools.

The cost benefit analysis for a white label platform is often only evident after an ISP has tried the in-house development route. Many of the Blueface customers tried this route and realised after many months, and sometimes years, that it is far more difficult to provide VoIP than it at first appears. While setting up an open source platform for a hundred users is relatively simple, supporting tens of thousands of users and providing them with a reliable telephone service using a broadband connection is extremely difficult. Hence the white label route is both a quick and a cost effective means of getting to market. Adding VoIP to an existing broadband service is also one of the best means of increasing customer retention.

There is no doubt that within the next few years unified communications will cease to exist as an aspiration and most devices will support Instant Messaging, VoIP and Internet connectivity. Until then it is still possible to get the benefits in advance with a good VoIP and broadband provider, and if you’re reasonably tech savvy you can get going now with devices like the N-series Nokia phones, the iPhone and some of the latest Samsungs. You can get a free VoIP trial account at Blueface Free Trial along with instructions on how to configure many of these latest devices. If you haven’t got one, you can still try out VoIP with a softphone on your PC, or buy an ATA to convert an existing phone – free and a cheap options respectively to getting started in Unified Communications.

Feargal Brady Blueface Ltd

Inbound calls management with Ruby Dial plans in My SIP Switch

Wednesday, May 21st, 2008

Ruby dial plan within My SIP Switch can really prove to be powerful. They turned My SIP Switch into an easily customizable webPBX. This article aims at providing an introduction (definitely not an overview!) to inbound call management using MySIPSwitch Ruby Dial Plan.

Since programming is involved, non-technical users will need to start with the basis and then do some tweaking. More technically advanced people can really create powerful rules to block calls, to forward calls, to create some backup routes in case of call failure (busy, not available, …) with timers….

A good place to get information on ruby dial plans is the sticky thread on My SIP Switch forum: Ruby Dial Plans.

In this article, I’ll focus on the dial plan side and I consider that some SIP providers have been set up to receive calls.


1. Structure of the Ruby Dial Plan

Here is an example of empty Ruby dial plan:

#Ruby
sys.Log(”call from #{req.Header.From.FromURI.ToString()} to #{req.URI.User}.”)
if sys.In then
# Inbound rules here
else
# Outbound rules here
end

The 1st thing to mention is that the Ruby dial plan must start by “#Ruby”, that allows My SIP Switch to know that your dial plan is using Ruby and not the old syntax.

Then, the command sys.Log(”bla”), allows to leave some logs (ie: some debugging or informative comments) that will be displayed on the monitoring page. That’s a handy tool to use when testing.

sys.In (or sys.Out) are Booleans (true or false) that tell you if the present call is an incoming call or an outgoing call.

Note that any line starting by # will be considered as a comment and therefore won’t be interpreted.


2. Example of Inbound call management

Here is a simple example with some comment afterwards:

1) # INBOUND CALLS
2) if sys.In then
3) sys.Log(”Inbound call from : #{req.Header.From.FromURI.User.ToString()}”)
4)
5) inboundnb = req.Header.From.FromURI.User
6)
7) case inboundnb
8 ) when /^0034/ then sys.Dial(”0039051xxxxxx@provider1″)
9) when /^0123456789/ then sys.Dial(”300@blueface”)
10) when /^0987654321/ then sys.Dial(”00393xxxxxx@provider2″)
11) else sys.Dial(”#{sys.Username}@local”)
12) end
13)
14) # OUTBOUND CALLS
15) else
16) # outbound call rules
1st tip: I clearly commented the 2 main sections of the dial plan: the inbound and the outbound section. Since the screen to edit the dial plan is a bit small that allows finding quicker each section.

Line 3: I added a log with the 2 parties of the inbound call. That is handy to know what’s going on when you are creating your dial plan.

Line 5: That’s a variable allocation. I store the phone number of the person calling me into the variable “inboundnb”, since using all the time “req.Header.From.FromURI.User” is not that handy.

Line 7: I created a “Switch”, it looks at the value of the variable, in this case “inboundnb”, and then will match the corresponding line. For instance:

case red
when blue then “go blue”
when green then “go green”
when red then “go red”
else “go whatever”
end

Here the “switch” will match the 3rd line. If “red” was not stated in the “when” cases, then, the last line, else, would match. Adding a default line is often useful!
Don’t forget the “end” to close the switch; otherwise, you will trigger an error!

Line 8: /^0034/ will match any number starting by 0034. If someone calls me from Spain (Spain’s international prefix is 0034), I forward the call to my Italian landline since I know the call won’t be for me. The call forwarded will be billed via my provider: provider1.

Line 9: If I don’t want to talk to the owner of the phone number: 012456789, then I forward it to 300@blueface, he will hear some monkeys; more seriously, I could send a message:
sys.Respond(480, “Not available”)

Line 10: 0987654321 is that really important potential customer and I really don’t want to miss his call, so I forward it to my mobile, just in case I’m in the train or in coffee break when he calls. Note that this time I’ll use provider2 to bill that call, he has better rates than provider1 for my mobile number.

Line 11: If the dial plan didn’t match any of the previous lines, then the last one with “else” will be interpreted and in that case, the phone which will ring is the one I have registered with My SIP Switch.


3. Going further with inbound call management

- Multiple forwarding with timers :

sys.Dial(”#{sys.Username}@local”, 10)
sys.Dial(”00390xxxx@blueface”, 12)
sys.Dial(”00393xxxxx@blueface”, 15)
sys.Respond(404, “No forwards answered”)

When I receive a call, My SIP Switch will 1st try to contact the phone I have registered with it, after 10 seconds, if I don’t pick it up, then this phone stops ringing and my landline starts ringing, and if after 12 seconds, I don’t pick up the call, my mobile will ring and if I don’t reply to my mobile and then the caller will hear a recorded message saying that I’m not available.

Note that the timers start when the call is attempted, so when it starts ringing a couple of seconds can be gone already (especially for mobiles!).

Another possibility is to make 2 phones ring at the same time :
sys.Dial(”#{sys.Username}@local&mycolleaguenumber@blueface”)

Both phone will start ringing at the same time and the 1st to pick up will get the call and the other one will stop ringing.

- Availability checker

The following piece of code can prove to be very handy:

sys.Log(”isavailable=#{sys.IsAvailable().ToString()}.”)
if sys.IsAvailable()
sys.Dial(”#{sys.Username}@local”)
else
sys.Dial(”mymobile@provider”)
end

sys.IsAvailable is a Boolean : true or false. If true, then my phone will ring, if not (my internet connection died, I ran out of battery, …) then I forward the call to my mobile.

- Time management

Here is a quick example, showing that you can also route the call depending the on the time of day:

t = Time.now
timezoneoffset = -1
if (t.hour >= 18+timezoneoffset )
sys.Dial(”…”)
else
sys.Dial(”…”)
end

First : Note that Time.Now will be at GMT since My SIP Switch server is based in Dublin

One trick to cope with that is to set a variable with the time different between your zone and GMT, for instance, I’m based in Italy (GMT+1), so I need to substract 1 from the time I want my rule to match.

Here is a good page with references about Time management in Ruby : http://www.ruby-doc.org/core/classes/Time.html

That’s it for the introduction!
If you want to go further you can combine bits from the different examples I explained here and/or discuss this on My SIP Switch’s forum with other users.

X-Lite 3.0 Configuration for My SIP Switch

Sunday, May 4th, 2008

Here is a quick, getting started guide for X-Lite 3.0 for WIndows XP.

1. After the installation, you should have the following screen:

No SIP Account are Enabled

2. Click on the small white arrow which says “Show Menu” and then select : “SIP Accounts Settings”

Edit SIP Account

3. Click on “Add”

Add a SIP Account

4. Now, you need to register your My SIP Switch account settings:

Display name : your name, for instance Joe Bloggs

Username : it is your My SIP Switch username

Password : your My SIP Switch password

Domain : sip.mysipswitch.com

Register with Domain and receive incoming calls must be ticked

Send outbound via : Proxy : sip.mysipswitch.com

Edit SIP Account settings

Press “Apply” and the OK.

You notice that X-Lite is trying to register and upon success will display “Ready” and “Your username is …”.

Once this registration is fine you can start making test calls.

(more…)