Its official - Adhearsion & Voxeo

Media_httpjsgoeckefil_afilo
Adhearsion is effective in making telephony applications easy to develop. The next phase is to make deployment and scaling of these applications easy while increasing choice of development environments. The first step in accelerating this phase was announced today, Adhearsion and Voxeo Launch Voxeo Labs! It is time to take Adhearsion to the cloud. Some of you that have been following along closely, may already have noticed our involvement with Tropo.com. We worked closely with Voxeo at the inception of Tropo which was subsequently launched at eComm in March of 2009. The goal of Tropo.com is to bring a scalable telephony cloud infrastructure to the broadest group of developers by allowing development directly in dynamic languages. Languages included are: Javascript, Groovy, PHP, Python and Ruby. We will now be focused on bringing Tropo and Adhearsion together to offer the power of Adhearsion with the scale of Tropo, while extending capabilities in the other languages. Jay and I as founding members of Voxeo Labs is no accident. The DNA of Voxeo Labs is a commitment to open-source. Adhearsion will continue to evolve as an open-source framework with continued support for Asterisk along with Tropo and others. Our goal is to provide the widest possible set of deployment choices for the Adhearsion community, while eliminating friction for those who want effortless deployment and scaling. Stay tuned as we have lots of interesting announcements just around the corner. In the meantime, thanks to the entire Adhearsion community for the support that allowed us to pursue this next step.
Posted
 

Behavior Driven Systems Monitoring for Telephony

Media_httpjsgoeckefil_sclwi
While attending Euruko several weeks ago, I had the opportunity to see @aslak_hellesoy present the Cucumber Behavior Driven Development (BDD) framework. BDD is a part of Agile software development focused on bringing the domain expert into the specification process through the use of natural language. This is done through the users and developers creating a story that is directly parsed by the code for tests. Aslak's presentation was well done, giving some compelling reasons to adhere to BDD principals, showing that using Cucumber made it a joy. Thing is, Cucumber is already a part of testing for  the Adhearsion framework and some specific projects we are working on. What was new to me, was a lightning talk given at the end of the day on Cucumber-Nagios.

Read the rest of this post »

Posted
 

Using C#/.Net to Invoke the Adhearsion API via REST

Recently an Adhearsion community member, David Lawal, built upon the PHP/REST example I posted back in February. David comes from a C#/.Net background and was beginning to learn Ruby in order to use Adhearsion. Then, in his own words:
"...I needed to leverage 'all the work' done in .Net...As I discovered, the marriage of .Net and Adhearsion was lovely, thanks to the RESTful RPC [API of Adhearsion]"
So David created an example and has graciously shared it with the rest of us. The example includes a component in Adhearsion that has this method extending the 'methods_for :rpc':

Read the rest of this post »

Posted
 

Adhearsion Website and Sandbox Migration Complete

Media_httpjsgoeckefil_ahqti
Over the last week we have been working to migrate various Adhearsion services to new homes. This could not have come a moment too soon, as during the migration one of the hard drives in our server in Texas gave up the ghost. Of course we used RAID, so we did not miss a beat, but clearly it was time to move along. To this end we have now migrated the Adhearsion website, wiki and API docs to Amazon EC2. Leveraging S3 and EBS we have a great solution that allows us to quickly fire up more servers if and when needed. The cloud is great. We have also moved the Sandbox to a new hosted server.
Media_httpwwwvoxeocom_kchhi
Our friends at Voxeo have provided a great server for us and are now sponsoring the Adhearsion Sandbox. It is great to have a visionary leader in the telephony cloud space involved with the Adhearsion community. I would like to take this opportunity to remind folks what the Adhearsion Sandbox provides. We have provided a hosted system that takes away the need to install your own Asterisk to get started developing Adhearsion applications. Simply install Adhearsion, sign-up for a Sandbox account and get started writing apps. Our goal is to lower all the barriers to make it easy for developers to realize the possibilities of voice in modern web development. Enjoy the new servers!
Posted
 

Click to Call on stage with Sinatra, Rack and Passenger

I have been preparing an Amazon Machine Image (AMI) with Adhearsion, Asterisk and all of the available components installed and pre-configur
Media_httpwwwmodrails_ebioq
ed to be made public soon. For the AMI I decided to get the Sinatra web app included with the Click To Call component up and running as a daemon. I used a combination of Rack and Passenger, since they make the process so easy and production ready. To this end I have updated the README and Click To Call component I covered in my previous blog post to include the how to and Rack configuration file required. To get this up and running do the following:
  • Install the Apache Webserver
  • sudo gem install rack
  • sudo gem install passenger (follow instructions here for compiling the Apache module)
Copy the files and directories in ~ahn-project/components/restful_clicktocall/web directory to the appropriate file system location for your Apache web server. Add these virtual host settings to your Apache configuration (ie - /etc/httpd/conf/httpd.conf): [sourcecode language='php'] ServerName ec2-174-129-89-20.compute-1.amazonaws.com DocumentRoot /var/www/restful_clicktocall_web/public [/sourcecode] Change line three to reflect your configuration. Restart your Apache web server and then connect to the site you configured. For more options I recommend referring to the Passenger documentation found here. Stay tuned for the upcoming Amazon Machine Image!
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
 

VXML Style Voice Form for Adhearsion

The Adhearsion developer community continues to create new applications and components.
Media_httpjsgoeckefil_ggrvf
And even more importantly, sharing them. The latest component addition to the line-up is a VoiceXML style Voice Form plugin for Adhearsion, created by @adzap and posted to GitHub. You may new create your own compenent, include the Voice Form module and create extensive voice menus to your callers. Here is the classic Adhearison Simon example re-factored into a Voice Form: [sourcecode language='ruby'] class SimonGame include VoiceForm voice_form do setup do @number = '' end field(:attempt, :attempts => 1) do prompt :play => :current_number, :bargein => false, :timeout => 2 setup do @number here. Enjoy and many thanks to @adzap!
Posted
 

Adhearsion Developer Community Writing Apps for America

Media_httpjsgoeckefil_aihwg
@3lsilver (aka lewdsilver) has brought to my attention an application that he and a team built for the Apps for America contest. Apps for America is a contest sponsored by Sunlight Labs, where their moto is 'turning government data into usable information'. Sunlight Labs provides a set of APIs that exposes such information as census data, congressional data and much more. The APIs are intended to power mash-ups to drive government transparency and citizen participation. At least two of the applications submitted to the contest use the combination of Adhearsion and Asterisk. Speak for Change, submitted by @3lsilver and team, allows citizens to leave voicemails for their representatives by calling a toll-free number, then makes these messages public for all to listen to and comment on. The second application, Call Congress, provides a website with a click to call capability to find and then contact your Senators and Representatives. As I have said before, radical transparency is the way forward out of the current US predicament, not excessive regulation. This includes the government and financial markets. It is great to see open source telephony and Adhearsion playing their roles. These applications are great examples of open source making it possible to do things today that would have been prohibitively expensive and difficult before.
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