Early impressions of Skype for SIP (SfS)

Media_httpjsgoeckefil_kmnxa
The day has finally come, I have been able to place a SIP call directly to and from the Skype network via a Skype service. I received my Skype for SIP (SfS) closed beta credentials yesterday and immediately set to work configuring endpoints to start making calls. The first step was to use an XLite Softphone to connect to the Skype SIP proxy. Then I graduated to connecting an Asterisk server. While there were some initial issues, Skype worked with the beta testers and had all of the major elements working by the end of the first day. I am impressed by how few issues there actually are, but I guess that is to be expected since this service leverages the same infrastructure behind SkypeOut and SkypeIn. Those services have been around for years and make up some of Skype's core revenue generating business. Here was what I was able to do so far:
  • Asterisk/XLite -> SIP -> SkypeOut -> PSTN (w/G711 codec)
  • PSTN -> SkypeIn -> SIP -> Asterisk/XLite (w/G729 codec)
  • Skype User -> SIP -> Asterisk/XLite
(Note: What I will not be able to try is 'Asterisk/Xlite -> SIP -> Skype User' since this is intentionally blocked by Skype. I presume this is to protect their SkypeIn business by blocking the ability to create a competing alternative.) If you have used the SkypeIn/SkypeOut services before, then you already know the quality of the calling. So far I have not had any issues with the call quality or dropped calls once the kinks were worked out. While Skype is supporting the freely available G711 codec via its SIP gateways, it is dependent on what codecs are supported by the carrier that is being used to terminate a particular call. So while on SkypeOut I was able to use the G711 codec to terminate to numbers in the San Francisco Bay Area (415/650), on SkypeIn to a San Jose number (408) the only available codec was g729. So the reality is, you will need to have a SIP endpoint that supports the licensed G729 codec for reliable use. The current calls are not encrypted. Skype has already stated they intend to support TLS/SRTP in the near future as encryption is considered a core feature for SIP as much as for their P2P calls. As time permits I will be continuing to do more tests as well as contrasting with the Skype for Asterisk (SfA) beta software. Skype is definitely on the right track by opening their network to key standards with multiple interfacing options. I believe Skype is now poised to become a key global player in the business VoIP market, as well as bringing in a broader range of developers. I began to think this day would never come, but it has...
Posted
 

Skype Rates and Least Cost Routing

Now that Skype is coming to the enterprise with Skype for Asterisk and Skype for SIP, they will need to enhance the data available for their calling rates. Enabling Least Cost Routing (LCR) is a must for any VoIP provider to the enterprise. LCR allows a phone system to determine, on a call by call basis, which VoIP provider to use based on the best rates associated to the country code or prefix being dialed. As of now Skype publishes a web page of calling rates based on the country name and the per minute rate including or excluding the tax. A few additional items are needed to make this usable for LCR systems:
  • The associated country code for each country (ie - '34' for Spain, '1' for the US, etc)
  • More granular prefixes where calling rates may differ (ie - '346' for Spanish mobiles, '336' for Frech mobiles, '1212' for NYC, '1712' for Iowa, etc)
  • Billing intervals
  • A file download in CSV, or similar format, for import into LCR systems
Of course, in the meantime it is easy enough to scrape the website and convert the available data into a more appropriate format. Here is an example, in Ruby, of how this may be done in a trivial way: [sourcecode language='ruby'] require 'rubygems' require 'open-uri' require 'nokogiri' require 'json' skype_rates = Hash.new skype_url = 'http://www.skype.com/prices/callrates/#allRatesTab' skype_htmldoc = Nokogiri::Hpricot(open(skype_url).read) (skype_htmldoc/'table.listing//tr.r1').each do |country| country_name = country.at('td').inner_html skype_rates.merge!({ country_name => { 'amount' => country.at('span.amount').inner_html.split(' country.at('span.vat').inner_html.split('JSON output as follows: [sourcecode language='javascript'] { "Bolivia-La Paz": { "amount":0.122, "vat":0.14 }, "Sweden - Mobile": { "amount":0.292, "vat":0.336 }, "Hong Kong": { "amount":0.021, "vat":0.024 } } [/sourcecode] You may then perform a Regular Expression against another data source to derive the appropriate country codes/prefixes and store those in your LCR system. A good example of the additional detail needed is provided by Flowroute. I have on my list of actions to create an Adhearsion component to provide LCR capabilities for any Adhearsion application. The plan is to support a wide number of VoIP providers and other data inputs as a part of this plug-in. In the meantime, it will be interesting to see how Skype goes about publishing their rates with additional details and formats for download. UPDATE @JimCanuck points out it is not just about least cost, but also about quality of termination. Skype has some interesting approaches to call quality. More here.
Posted
 

Skype for SIP == Skype for Asterisk DOA?

Today Skype announced Skype for SIP (SFS). Put simply, enterprise telephone systems may now interconnect with the
Media_httpjsgoeckefil_ahcau
Skype network to receive calls from the Skype network and place calls to SkypeOut. All without the need to install any special hardware or software on most modern enterprise phone systems (IP-PBXs to be more specific). Skype's new enterprise targeted connectivity uses SIP, the industry standard for VoIP interconnection. SIP already powers the bulk of Skype's revenue, via SkypeIn/SkypeOut, so this is a logical progression to take advantage of the large scale infrastructure already in place at Skype. This is a tremendous move by Skype and one I have contended for years was necessary for them to make headway in the enterprise. I applaud this step. There are plenty of great posts out there covering this already, including the one by @danyork on Disruptive Telephony. What does this mean for Skype for Asterisk (SFA) announced last September? At best the value of SFA has been signficantly reduced by this announcement. Previously SIP interconnection to the Skype cloud was given to the rarified group of larger players such as Voxeo, Tellme, Genesys and others. SFA was the first time this access was going to be brought to the world of open source telephony developers through Asterisk. This provided an immense opportunity for the Asterisk developer community to create new applications to take advantage of this, which lead me to invest time to participate in the closed beta for SFA still underway. The SFS announcement this morning has just marginalized SFA to applications that benefit from direct dialing of Skype users from Asterisk and from basic presence updates from the Skype network. Gone are the benefits of providing Skype/SkypeIn inbound calls to the enterprise, SkypeOut trunking, etc. More so, SFA is at a disadvantage since you will have to pay a per channel (simultaneous call) license fee on top of any SkypeIn/SkypeOut costs. Further, I suspect that the number of SFA channels available to a single account will be limited for the same reason that SFS does not do SIP to Skype dialing, so that no one may provide large scale alternatives to SkypeIn. All of this has really taken the wind out of the SFA sails before it even had a chance to make it to a public beta. Digium must now look to quickly add new features. Such as advanced presence information, instant messaging, the SILK codec and others, if they hope to salvage their own investment in the development of SFA to date. While I understand these things take time, the lethargy of getting the SFA to market does not bode well for rapidly trumping the SFS announcement. Time will tell.
Posted
 

Three new ways to access the Adhearsion Sandbox

Since the launch of the new Adhearsion website earlier this year we have made a Getting Started Sandbox available to developers. We want everyone to easily give Adhearsion a try without having to setup an entire telephone system to do so. All you need to do is install Adhearsion (and maybe Ruby, depending on which operating system you use) and you may immediately begin using our free Sandbox in the cloud. Here are the new access methods that we have recently added (more details are available on the Getting Started page here):
Media_httpapiphonefro_hbgns
Phonefromhere has a Java IAX2 client that is a great way to access the Sandbox from the internet. Tim Panton of Phonefromhere has graciously made his hosted system available to us. Check out their app, as I am sure you will find it useful for your new Adhearsion applications as you roll them out.
Media_httpaboutskypec_pbyat
We have been participating in the Skype for Asterisk (SFA) closed beta. We have already developed the Skype Utils Adhearsion component that I mentioned in a previous blog post and will be making available as part of the Sandbox soon. In the meantime you may use Skype to access the Sandbox to get a preview of how you may easily develop apps for the Skype world leveraging Adhearsion and Asterisk.
Media_httpwwwvoxbonec_wovce
Voxbone has kindly donated a 10 channel inbound phone number for use with the Adhearsion Sandbox. So now you may simply use any old telephone to test your Adhearsion applications on the Sandbox infrastructure. Enjoy!
Posted
 

Skype for Asterisk component for Adhearsion

After having more time to work in detail with the Skype for Asterisk (SFA) channel in closed beta, I have developed an Adhearsion component to ease my development and testing efforts. Hopefully this will ease yours in the near future when the public beta becomes available.
Media_httpjsgoeckefil_fcqix
The Skype Utils component provides a few features to take advantage of what this new channel brings to the Asterisk platform. First, the component provides a single method call to access a wealth of information in your dialplan that is delivered with each Skype call. This type of information is unheard of on any other channel available to Asterisk (let alone telecoms in general), this information includes:
  • skype_languages - A space-separated list of language identifiers (ie - es, en, etc)
  • skype_topic - A user-provided string that can identify the 'topic' of the call
  • skype_token - Similar to skype_topic
  • skype_about - 'about' profile entry
  • skype_birthday - Birthday
  • skype_gender - Gender
  • skype_homepage - Home page URL
  • skype_homephone - Home phone number
  • skype_officephone - Office phone number
  • skype_mobilephone - Mobile phone number
  • skype_city - City name
  • skype_province - State/Province name
  • skype_country - Country name
The next feature that the component provides is the ability to map Skype usernames with Asterisk extensions. Typically Asterisk is used with phones that require you to enter a numeric phone number when dialing someone. Of course most Skype names are usernames that have nothing to do with a phone number. With this component you may enter the relationship between an extension number and a Skype username in  database with a Ruby on Rails web interface. Then when calls are made to and from the Skype network you have a seamless translation between the two.
Media_httpjsgoeckefil_faoba
Last (so far), but not least, is the ability to track Skype presence information. The SFA channel allows you to add 'buddies' to your Asterisk/Skype username. Once this has been done, you are then able to obtain status updates from each of the buddies on your list. The component then allows you to track these status updates and access them in your dialplan. The status updates may be persisted to a database or kept in memory. Further, those status updates are not only available to your dialplan but to the REST, DRb and STOMP APIs of Adhearsion, making them available to virtually any program. With this you may track if each Skype user is in one of the following states:
  • Online - user is online
  • Skype Me - user is available and asking to be 'Skyped'
  • Away - the user is away from their Skype client
  • Not Available - the user is not available for a call
  • Do Not Disturb - the user does not want to be disturbed
  • Offline (Voicemail Enabled) - the user is offline and has voicemail
  • Offline (Voicemail Disabled) - the user is offline and has no voicemail
Stay tuned for example applications that will build upon this component. In the meantime do not hesitate to have a look at the code and details here. I would also like to thank @steely_glint and Todd Gould, fellow beta team members, for their assistance in constructing an environment where all the pieces could work. Great progress is being made on the SFA beta code, but of course there are still some quirks.
Posted
 

Experience with the Skype for Asterisk Beta

Media_httpjsgoeckefil_byxio
Recently Digium was kind enough to include me in the closed Skype for Asterisk Beta. Skype for Asterisk is a new channel driver for Asterisk that connects to the Skype Peer to Peer network. While you could connect Asterisk to Skype in the past, this was all done with a hack to the Skype client, which limited scale and reliability. The new channel driver for Asterisk, actually does away with a client and allows Asterisk to become a peer node in the Skype network. This will be a much more scalable solution, and definitely easier to deploy. My impression of the implementation so far is good. There is a lot more functionality in the software than I had expected, including support for Skype presence information within Asterisk. Digium posted an update on the client yesterday where they describe what is included here. I received the software and was up and running within 10 minutes, as the install process was trivial. I have managed to place calls from a SIP client connected to Asterisk to and from users on Skype. The sound quality is good and interoperability with the rest of the Asterisk features works well. The next step is to begin developing Adhearsion components to take advantage of the Skype for Asterisk channel, allowing developers to immediatey reap the benefits in the merger of the Asterisk world with the Skype world. The hope is to have this available just in time for the public Skype for Asterisk beta. Stay tuned!
Posted
 

OpenSky - Gizmo5 Calling to Skype Network

Media_httpjsgoeckefil_ntqgh

Gizmo5 has recently announced their OpenSky service, allowing SIP dialing into the Skype network. OpenSky allows calling from:

  • Your Gizmo5 desktop client
  • Nokia mobile phone software client
  • Any mobile phone using a text message to kick-off the call
  • Any SIP endpoint such as Asterisk

Calls to the Skype network are free up to 5 minutes. If you want longer calls then it is $20 for one user per year on a discounted scale based on number of users thereafter.

It is great to see networks beginning to interconnect with Skype and force open their closed and proprietary network. There is still a long way to go. In this case Skype and eBay do not support this interconnection, so there is no apparent way to call from Skype to the Gizmo5 network. Further, dialing to the Skype network from outside is cumbersome, although Gizmo5 has added aliasing to mitigate this issue.

With initiatives like these and the upcoming (fingers crossed) release of the Asterisk/Skype channel, we will begin to see some interesting innovations leveraging the Skype cloud.

Posted
 

Finally, Skype on the Block?

Media_httpjsgoeckefil_jivpm
  


Media_httpjsgoeckefil_fumcj

Those who know me are well aware that I have long been a detractor of Skype. I do respect and admire much of what they have done, but the end does not justify the means. While Skype did bring VoIP to the global masses, they did so by creating a walled garden reminiscent of the early days of AOL.

Of course Skype had to come up with an alternative to SIP to resolve NAT issues, but they did not have to keep it closed and proprietary. Google achieved the same thing with GTalk. Google then not only published their Jingle extension to XMPP, but even provided a library for everyone to use. Skype's commercial interest is clearly served by keeping their own protocol under lock and key, but this has stifled innovation. In fairness Skype did release a desktop API and allowed limited access to their SkypeIn/SkypeOut SIP Gateways for large vendors such as Tellme. This is not the same as allowing full peers in their network.

There was a glimmer of hope at Astricon in Glendale last September that I attended. Digium and Skype announced connectivity between the P2P Skype network and Asterisk. This would allow open source developers to begin providing solutions leveraging Skype and its large network of users. But that was September and four months later an imminent release does not appear to be on the horizon.

The other major issue that stifles Skype is their corporate parent, Ebay. Ebay's acquisition of Skype for billions in 2005 was one of the larger blunders in recent tech history. With the latest Ebay earnings call the long held rumors that eBay is about to sell Skype are increasing. The Times published an article today highlighting the reason for the uptick in speculation:

Industry insiders believe that eBay signalled its intent last week after John Donahue, its chief executive, described Skype as a “great stand-alone business”.

Ebay's shareholders would be well served by selling Skype now and putting the cash back in the bank. While Skype themselves, and their users, would be better served by new ownership and vision.

AT&T would do well by acquiring Skype, opening the network by publishing the protocols and instantaneously becoming the dominant player in the space. The synergy that never existed between Skype and Ebay, would be replaced by synergy that could drive real innovation.

Posted