Teaser: more custom call routing
Prevously, I described how I set up my VoIP system to route calls using the Plazes.com api. This has been working pretty well, except it suffers from a few problems:
- Plazes only knows where you are if you have a machine running, actively reporting your location. If your machine is off, or, as is currently my situation, broken, then this won't work so well. It also doesn't work very well if you use several different machines, some of which you share with others.
- The plazes API lookup takes some time to execute, on the order of 2-5seconds. That's essentially a whole ring that's lost to routing if you're doing this as part of a direct-dial setup.
- I don't control the plazes infrastructure, so if it goes away, I don't get any cool custom call routing at all.
When I set out to do the Plazes hack, it was because I didn't have a Bluetooth phone, and I hadn't seen that anyone had done it. However, I've since switched to a Bluetooth-enabled phone, so I finally implemented the last, most commonly-done bit of custom call routing. I had all of the bits to make it happen before: home Linux server in close proximity to where I usually am, Bluetooth phone, bluetooth devices, etc. Unfortunately, I was having troubles getting my old Broadcom 203x or whatever USB Bluetooth device to work with my kernel 2.6-based Linux.
In the end, I took bits of the recently published Nerd Vittles tutorial, combined with a few improvements, and even rearranged my Plazes code. I now have a system that quickly checks Bluetooth status, and only branches to Plazes if I'm not home. I've rearranged the code so that all of the branching happens in the Asterisk dialplan, meaning that, with a little more tweaking, the plazes and bluetooth scripts can be generalized.
Unfortunately, my primary work environment is off getting AppleCare love right now, so I'm going to have to delay the full writeup with code for later.
Comments
Nice blog you Gotcha here
Posted by: Michelle | March 26, 2006 12:02 PM