Guest Post: It’s So Easy To Write Apps for Asterisk

July 23, 2008 by Garrett Smith

One of the most powerful things about Asterisk is the relative ease of developing and integrating new applications.   Historically, the telephony world has been a “walled-garden”, with proprietary technologies, arcane configuration methods, and non-trivial integration hurdles.  Asterisk is a pure software application, and an open source one at that.  It’s highly configurable, and through various interfaces (such as AGI and the manager API), it’s easy to write new applications.  And most importantly, Asterisk doesn’t dictate the implementation language or technology — you can develop your app in any language you want (e.g. Python, Ruby, Java, C, etc.)

I’ve built a number of simple applications for our home Asterisk system.  For example, we have one that’s used on school-day mornings.

First, the system rings scheduled wakeup calls in each of the kid’s bedrooms.  Next, as the school bus time approaches, the system announces five minute and two minute warnings on the kitchen phone.  It takes advantage of the auto-answer feature on many Ethernet phones (such as the Linksys SPA942 in our kitchen).  Pre-recorded announcements (e.g. “the bus is coming in 5 minutes“) announce automatically out of the phone’s speakerphone, without anyone having to pick up the phone.

I wrote the entire application in a few hours (most of which was spent learning how to get Asterisk to initiate outgoing calls).  The app is a simple Python script that runs early each morning (using cron) on the server hosting the Asterisk system.  It first checks to see if it’s a weekday (i.e. school day), and if it is, it queues up the wakeup calls and the two announcement calls.

Future versions will include the holiday calendar to omit the calls and announcements on school holidays, and will automatically check the local news Web site to see if school has been cancelled or delayed.

Try doing that with your Nortel PBX! DISCLOSURE: Andy Payne is an investor in Digium.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.