Our Home PBX
Preface: I really hate solicitors calling.
Our house gets all sorts of junk calls, multiple a day. The common ones are ones you expect - robodialers calling to announce that our auto warantee needs replacing, or the SF Chronicle trying to sell us the paper, or political calls, or “polls”, or all sorts of other crap. Additionally, bill collectors have been getting more and more aggressive at finding their prey. I get calls for people with the same last name as me all the time now. Plus the calls for previous owners of my phone number, despite them not having had this number in a few years. We’ve even had people call asking us to contact our neighbors!
Now, factor in these calls are when we’re eating, working, or even trying to sleep, after having worked all night. None of these calls are for -me-. It is all crap.
In the past, we’ve owned a box that would listen to caller ID, and either ring the house (if it was a local phone number) or go to the answering machine. Unfortunately, that box died, and there is no alternative on the market. That led to my setting up a PBX system to handle the house calls. (To see the hardware and software involved, go to my [/archives/blog/going-voip.html Going Voip] page).
Asterisk, the open source PBX system
All of our calls are now routed into the PBX. When you call our house, your caller ID is checked. Based on a number of factors, we decide what to do with your call.
- Local callers ring through directly - local callers generally don’t notice any change in our phone system behavior. We also allow some distant callers to be treated as local, based on their name (such as our medical provider)
- Distant callers, are given a menu. If the caller can listen to the menu and understand the simple prompts, they can ring through to us. If not, they’ll end up in the voicemail system and can leave a mesage. We generally want real live human beings to be able to reach us; and have made it fairly easy to do so if they understand plain simple English.
- Callers who don’t have caller ID, we tell them how to enable caller ID; then treat them with the menu.
Now, the above things, several commerical providers of voip services (such as Voipo) have the above capabilities, roughly. At minimum you can say what area codes are allowed to ring you, and what area codes go direct to voicemail (no menu).
I wanted more out of the system. I wanted to be able to allow specific callers through (whitelist them). More importantly, I didn’t want to spend any effort on it. Our system watches all calls we make to the outside world, and automatically marks them as whitelisted. If we call a family member on the east coast, and they call us back, they’ll ring directly through without any hassles.
I also wanted the ability to blacklist callers. Some callers do successfully leave voicemail spam or otherwise waste our time. I’ve added a feature that lets us get the phone number of the last caller; to whitelist them; to blacklist them (force them to always hit the menu); or to send them to the monkeys. This last option causes the phone system to answer if they call with a ‘hello’ (to trip the robo-dialers); pauses a few seconds, then plays 30 seconds worth of screeching monkey sounds.
One phone number reaches me, period. When callers do reach us (whitelisted or humans), our phones ring. That is, the cordless phones ring. As well as the cell phone. Even the voip phone, when I’m at the hotel. Whatever phone answers first, wins - the other phones will stop ringing. The only limit to the number of places we can have ring in parallel, is internet bandwidth.
Vacation handler: Yes, you heard that right. If I indicate I’m on vacation, I can say what time zone I am in, and where I am at. The voice system tells the caller what time it is where I am at, emphasizing “early” and “late” times carefully. It then gives them a slightly different menu, with different numbers, offering to ring me *only* if it is an emergency. I will be out of the country on business, I just want to avoid people who don’t know what time zone I’m in from waking me, or costing me international roaming charges. Default action is to leave a voicemail - I’ll get it whenever I’m awake and at the hotel or otherwise have internet.
Voicemail: dull and simple… and emailed to us. In a format the iphone can play, as well as any web browser. We can get the message from anywhere without calling the system. Considering I hate answering messages anyways, this is quite accessible enough.
As to outbound calls: We’ve got two VOIP providers defined, plus a fallback to the analog line. The primary provider, lets us set caller ID to whatever we deem appropriate. Analog calls are used for all 3 digit number calls (and in particular 911); and are also used when both voip providers fail. I’m not a fan of voip based 911 calls… not when my life depends on it.
One last stupid trick: We can customize greetings based on the caller. For example, when my coworkers call from an office number that’s associated with the company, not only are they automatically bypassing the menu system, they hear a company-appropriate jingle, before it rings through to my office and cell phone..