Why would we build such a thing?
During the last few years, we have been working in many SMS-based projects and we’ve built an SMS service to support the applications we built and to make it really easy to develop new ones. However, during that time, we saw the need to go beyond SMS.
We have designed low-tech solutions for some of the problems we faced, but eventually we decided we needed to start working with voice. By “voice” I mean being able to setup information applications that can make or receive calls from users and allow them to interact by listening to options, pressing keys in their phone keypad and recording voice messages.
Voice is almost ubiquitous and character independent (it doesn’t matter if your phone doesn’t support your language alphabet, you can always speak and listen to your own language through it), therefore making it a much more applicable solution for several contexts.
At InSTEDD, we work in an agile way by building things quickly and trying them out with the people who will be using them as early on as possible. We emphasize simplicity and scalability throughout this process. We wanted a tool that would give us for Voice applications the same flexibility, scalability and simplicity that we already had for SMS applications.
Why couldn’t we use what was already out there?
There are lots of voice-based tools out there, some free, some open-source, some cloud-based, but after spending some time reviewing our options, we couldn’t find the kind of solution we were looking for.
Here’s a look at some of the existing tools:
Tropo is a great web-based service that allows developers to build and run Voice applications. Tropo was a great solution for some of our scenarios:
- If we were working in one of the 40 (mostly ‘developed’) countries they have numbers for
- If we had internet connectivity between our customer infrastructure and Tropo
- If we didn’t need to use any local telephone company infrastructure
- If we didn’t need our customer to be able to create or modify their application themselves
However, in several situations it would not work for us:
- If there was no support for the country we were working. Most of Latin America, South-East Asia and Africa are not supported.
- If we needed to connect our customer infrastructure-databases, existing systems, etc.-with the Voice application, and there was no access to the Internet. Tropo runs in the cloud, so anything you want to have interacting with it, needs to have internet access.
- If we had to work within the infrastructure of a telephone company and connect to their telephone lines. Tropo provides their own phone numbers with their own billing. In most of the large-scale scenarios we’ve seen, the project involves an agreement with a telephone company that provides the ‘call-termination’ and, if you are lucky, a reduced cost for the calls. That scenario cannot be supported with Tropo
- If we wanted our customers to be able to build their own simple Voice applications or maintain the ones we designed for them. Tropo requires you to have a software developer to build the app for you. There is no graphic user interface to do so.
Additionally, we hoped we could have a fully open-source and free solution. Though Tropo has released some of their platform as open source, most of the core components were branched in mid-2009 and have not been updated or maintained since then. We spent 2 weeks trying to install our own Tropo server and though their tech support was extremely responsive, we could not make it work. We need something simpler for our projects.
Asterisk and Freeswitch
Asterisk and Freeswitch are 2 great open source projects with incredible communities and support. Both are similar in features, and provide PBX capabilities. The role of a PBX was performed (and still is in most of the situations) by a gray box sitting in big offices with all the incoming phone lines on one side, and all the extension lines on the other. The PBX provides services like connecting incoming calls to extension, voicemail, out of office messages, and the like.
Almost anything-voice can be built on top of Asterisk or Freeswitch. The issue is that both require a highly specialized programming knowledge and are far from simple to deploy, configure, use and maintain. However they provide an incredible range of support for great hardware to connect your phone lines (and that’s why we support them in Verboice. Read on!)
Awaaz.De is a relatively new open source voice message board. It allows people to call to a number, leave voice messages and listen to others’ messages. They provide a hosted-service in India so you don’t need to have your own phone lines or infrastructure if you are working in that country.
Awaaz.De is an example of the kind of development that we aim to simplify a lot. The system was built on top of IBM tools (Spoken Web, WebSphere Voice Server), requiring not only access to proprietary commercial software, but also a skilled team that can develop the application on top of it.
Freedomfone provides an easy way to build interactive voice menus and polls. It is another great example of the kind of applications you could build on top of Verboice very easily.
Freedomfone was built on top of Freeswitch, the Open Source PBX mentioned above. Creating applications on top of Freeswitch or Asterisk requires access to a skilled software developer with knowledge of how to install and configure the system, plus knowledge of how to develop applications on top of them.
Freedomfone is great for small-scale deployments, as you don’t need an internet connection and it can run on your own server. That is also the downside: you need your own server, plus a hardware device that you use to put the SIM cards that will be used to make the phone calls. There is no way to connect it to Voice-over-IP lines or more “enterprise-like” infrastructure.
So what are we building?
Our solution is composed of several layers. When you use one of the outer layers, you don’t see or care what’s below. If that layer is not flexible enough for your needs, you peel that one and use the one beneath.
Starting from the outer layer and going down, we are building 6 layers:
1-A Web graphic user interface for building simple voice applications
This tool will be hosted online, and you will be able to build simple interactive voice applications, by visually configuring the steps in your account. There is no need for a software developer or a server at this level. For now however, you do need a Voice over IP (VoIP) phone line provider. We will put together a list of recommended providers in several countries and would gladly help you find one in your country.
If VoIP does not work for you, you can always download Verboice to your own server and connect your phone line to it. In this case, you still don’t need a software developer as you would still be building your application visually, but you’d need somebody that can install and configure the server.
This tool will support the most common voice interactions and provide great flexibility, while still being simple to use.
|This are some of the steps you can include in your application|
2-A script-hosting web server.
Those XML languages allow your developer to easily script a complete voice application. You don’t need your own server, you can still upload the script to ours and run it from there, but you do need to provide your VOIP phone-line.
As with before, you can always download and deploy this to your own server and connect your phone lines to it.
3-A web service that allows you to program your own custom applications
If the script is not enough and you have a willing software developer, you can use our web programming service to power your voice applications. The good thing is that your developer can work in the language of his choice, .NET, Java, Ruby, PHP, Python, etc. anything can interact with our web service. This way you can have your Voice application interact with any existing database or system you already have in place.
This is the level at which you would use Tropo and Twilio.
Again, if you have your own server, you can host your application plus Verboice there, and avoid requiring an Internet connection.
4-A library to interact directly and synchronously with Verboice
If you still need finer control and don’t want to rely on your application communicating with Verboice through the internet, you can have it interact directly through code with Verboice.
5-An open source and free voice engine
All of the above is open source, as well as the core component that powers the Voice functionality. In case you are doing something extreme or there are features we don’t yet support, you can always modify the source code and adapt it to your needs. We’ll gladly welcome your contribution!
6-A pluggable call-termination backend
If you are still reading, it’s getting more complicated here. If none of the above has answered how to have your users call to your application, this is where you can might find an answer. Verboice is built “PBX-agnostic”, meaning that it can sit on top of anything you have receiving or making the phone calls. We’ve built support for SIP phone lines (the VOIP standard), Asterisk and Freeswitch. Those last 2 cover a great deal of hardware options.
If you are working with hardware that is not supported by Asterisk or Freeswitch, and VOIP is not good for you, you can always build your adapter to whatever infrastructure you need to use, or you can contact us and we’ll build it for you!
We’ve built Watchfire on top of Verboice. Watchfire was originally developed for the Red Cross with support from Cisco to help them recruit volunteers, but can be used for any geographic-based, massive yes-or-no confirmation by people. Read more about Watchfire.
We are working hard at completing and improving all the components described above, while we learn from the work on our current Voice projects. Get in touch if you have questions, ideas on things you would like us to build or support, or a project you would want Verboice for.