Digium is the creator and primary sponsor of the Asterisk project. Asterisk is an open source communications engine that transforms commodity computers into powerful communications servers. Asterisk is free.
Digium also makes and sells Switchvox, a turnkey unified communications system (IP PBX) based on Asterisk. Switchvox is far less expensive than competitive IP PBX and UC systems based on proprietary technologies, but it is not free.
Users and customers frequently asked why Digium offers both the free-and-open Asterisk engine and the commercial Switchvox solution. The answer is simple: while both products fit into the larger universe of telecommunications technologies, they have very different purposes and are geared towards very different audiences.
Asterisk is built by and for communication systems developers. The open source project began in 1999 when Mark Spencer released the original Asterisk source code and began accepting submissions from a growing community of users. The resulting product is an engine that handles all of the low-level details of initiating, maintaining and manipulating real-time media streams (calls) between endpoints (phones). Since the initial release it’s been tested and refined by a community of more than 65,000 developers and integrators in 170 countries around the world.
Asterisk is to telephony what the Apache server is to web applications: essentially the exquisitely complex plumbing on which other applications are built. Just as a web server does very little without web applications, a telephony server does nothing without telephony applications. Web applications can be as simple as single static HTML page or as complex as Facebook or Google. Likewise telephony applications can be very simple scripts or hugely complex suites of application software.
Low-level engines like Asterisk and Apache are extremely powerful precisely because they have no fixed function or specific purpose set by their creators. The functions to which they are ultimately applied are determined not by the creators (the developers of the Asterisk and Apache development teams) but by application developers.
Application developers take engine-level components like Asterisk and Apache and build on top of them. These developers craft purpose-built solutions that implement a specific set of functions. Asterisk application developers write programs that make Asterisk behave as a PBX or as VoIP gateway or as a dialer or virtually an other type of telecom apparatus.
Some Asterisk applications are simple and use little more than the core Asterisk engine, a few configuration files and some scripts written in Asterisk’s Dialplan language. More advanced Asterisk applications connect Asterisk with databases, web services and other external resources. Finally, there are application suites that interconnect Asterisk with many other applications in a complex web of interactions. These complex aggregate solutions do far more than could be done by Asterisk alone. Digium’s Switchvox phone system is a perfect example of this class of application.
Where Asterisk is an engine, Switchvox is a complete vehicle. The Switchvox development team has spent the past six years creating a powerful unified communications system that anyone with a minimum of computer experience can manage. Where Asterisk is built for telecom developers, Switchvox is built for small and mid-sized businesses that need a powerful, cost effective phone system.
The Case For Switchvox
Digium’s line of Switchvox IP PBX systems make unified communications capabilities available to small and medium businesses. Switchvox is administered through an easy to use graphical user interface (GUI) rather than raw configuration files and custom scripts. Switchvox includes all of the standard features of phone system plus unified communication capabilities like advanced voice messaging, instant messaging, desktop fax, drag/drop call control, multi-party conferencing and advanced IVR. Features that would cost thousands to bolt onto a traditional phone system.
With raw Asterisk, the process of configuring phones is entirely manual. Each phone must be independently set up by the system administrator. Switchvox automatically detects and configures phones, making it easy to deploy and manage users. Switchvox also detects and configures Digium interface cards, making it easy to connect to the PSTN. Setting up SIP trunks and tie-lines to other VoIP systems is even easier.
So who should really pick Switchvox instead of Asterisk? People who aren’t telecom gurus who need a powerful, easy to install, easy to maintain, reasonably priced phone system for up to 400 users.
Don’t get me wrong: it’s entirely possible to create a powerful PBX system using raw Asterisk. The major drawbacks to running Asterisk as a PBX are the deployment time and maintainability. Building an IP PBX out of raw Asterisk requires some fairly advanced technical skills, including a good working knowledge of IP networking, Linux/Unix system administration, traditional telephony and script programming. Even those who are fully versed in all four of these disciplines will need to overcome something of a learning curve to create a working system. Once the system is up and running you will need someone on staff (or at least on call) who knows how the system works and how to handle any moves, adds or changes.
Digium’s flagship Switchvox SMB system (with all the bells and whistles you can imagine) starts at only $3600. Our basic SOHO package is only $1600. If you’re still tempted to use Asterisk, that’s cool but first do this: Divide $1600 by what you think an hour of your time is worth. Let’s use $50/hour as an example. $1600 / $50 = 32 hours. If you can learn enough Asterisk to build your own solution in 32 hours or less, go for it. If not, take a good look at Switchvox.
The Case For Asterisk
Let’s go back to the engine/vehicle metaphor. Asterisk is an engine. It’s powerful. It’s flexible. It has enormous potential. What it requires is a skilled engineer (or even a skilled shade-tree mechanic) who can take the engine and build it into a vehicle. If you are creating a product or a custom solution that requires integrated voice communications, Asterisk is exactly what you need.
Let’s take the product scenario first. If you want to build a conferencing server that connects to both VoIP and PSTN networks, Asterisk is a great starting point. Asterisk has all kinds of features that make multi-party conferencing really, really easy. It also includes native support for every major VoIP and PSTN protocol in use today. To build a conferencing server out of Asterisk you need to pick out your platform hardware (computer), create an administration interface (probably a web application running on Apache) and possibly an end-user interface. You’ll probably want to integrate with calendaring systems like Exchange, iCal, Google Calendar, etc. You probably want to tie in email and possibly IM notifications and reminders. Given a skilled development team you can probably bang this out in a few months.
Compare that with building from scratch and you can see the power of Asterisk. You didn’t have to write (or license) a SIP stack. You didn’t have to write your own DTMF detection algorithm or even wrap a DTMF collection function call for use in your application. In fact, the actual “telephony programming” probably came down to a few dozen lines of Dialplan script and a bit of SQL to set up the database. You shaved years off your development and testing path, added value through your snappy web interface and built it all on a free engine. Nice.
Asterisk fits very nicely into the toolboxes of telephony integrators and data VARs. If you’ve ever done custom integration work you know how difficult it can be to make systems from different vendors (or different generations) play nicely. In enterprise scenarios where modern data applications share space in the server room with legacy switching gear, Asterisk can be indispensable. It acts as a kind of “telephony glue” that ties VoIP to TDM and digital to analog. It also bolts onto legacy systems as a perfect low-cost adjunct. Your customer has an Octel voice messaging system that’s on its last legs? No problem. Replace it with an Asterisk-based system. Your biggest client needs a dialer that can call an entire city in an hour? Sure. Asterisk can do that.
If you’re already familiar with networks, telephony and scripting, the Asterisk learning curve is fairly easy to overcome. Read Asterisk: The Future of Telephony by Smith, Madsen and Van Meggelen. Take a look at the samples and recipes on Asterisk.org. Take the Asterisk Fast-Start or Asterisk Advanced class for a bit of hands-on training. You’ll find that building solid solutions with Asterisk is drastically easier than building your own voice engine from scratch using a raw C language API from some proprietary vendor. (Trust me on this one: I built IVR engines on the Dialogic and Brooktrout APIs before I discovered Asterisk.)
Asterisk is also a terrific way to learn about telephony and communications. Students, hobbyists and artists have used Asterisk to build some extraordinarily creative applications while at the same time learning about telecommunications. Some of the most successful developers in the Asterisk ecosystem started out experimenting with the code while in college or even high school.
If you’re technically inclined and want to build a communication product or solution, then Asterisk is for you. If you’re in need of a great phone system at a great price, check out Switchvox.