Asterisk is an exciting application. With all the laundry list of features and applications for it, one can have a really hard time deciding what to do next if you're just exploring. Personally, I guess I don't have a particular need
for any one feature of Asterisk, I just think there are a lot of really nice-to-have features. I've already got a quick hack working so that I can dial long distance from home or from any phone for drastically cheaper
than any other way I know of, so what more do I really need? Well nothing, but I think it'd be much nicer to be able to dial more easily (and more securely than my hack). I'd like to integrate a phone book, maybe on my computer, maybe on a private web page or maybe on a Myth front-end. How exactly the mechanics of any one solution would work I don't really know.
I also like the idea of setting up dial-in conferences. I just started looking in to MeetMe conferences
tonight since I spent an hour or more on the phone with my brothers & sisters. If I could quickly set up a conference and give them a number to dial or have a way to place an n-way conference call then I would've used that.
So it sounds like I have a couple goals I can work toward:
- Set up a phone book that I can easily call from
- Set up easy multi-party calls (like 3-way calling or conference calls)
These goals aren't too hard, but I'm also going to need some more basic stuff first. At the moment, people can't reach me through my DID
. It just plays the default Asterisk congratulations message. The next steps will be to simply allow someone call me and have them reach either my cell phone or my home phone. My home phone is still POTS with a regular phone number assigned to it. My cell phone is nothing special but I spend time in both Michigan and Windsor, Ontario. I know that sometimes caller ID isn't passed from my cell phone so I can't rely on it completely to identify the caller as me.
Initially let's just say that upon calling the DID phone number, an attempt should be made to identify the caller by caller ID. A unique set of options should be possible for each kind of caller (or user). For example, a couple people should be able to dial arbitrary outgoing calls from Asterisk (either friends who want to try it out or family who I'll share it with). Some callers should also get access to some system functions like voicemail or custom geek functions. When I call I might also want some admin functions (like system uptime or some diagnostic stuff). Unknown callers are most likely trying to talk to me. So I could try to connect them to me either on my land line (until I ditch it, then it'd pass the call to the ATA which would ring the home phone) or on my cell phone. There are example dialplans at voip-info.org for connecting someone to one of multiple numbers based on time of day, on a ring-through (aka "follow me") scheme or ringing several numbers and connecting the one that picks up, among others. As I mentioned, Caller ID isn't perfect, so unknown users need to have a chance to log in. Maybe this could be handled by pressing a key before Asterisk automatically tries to connect the call.
Obviously if I want to identify users I need to figure out the concept of a user in Asterisk. Man do I ever feel like an amateur.
It looks like the kind of users that I'm thinking of are mostly just extensions in Asterisk, though there are several ways of authenticating a user for different reasons. There's a short description of setting up extensions from AsteriskGuru.com and some more reference material at VoiP-Info.
Tying this all together, it looks like I could use a combination of an extension to choose a user with a context for that user. User authentication might have to be handled separately a couple times over, but I can manually sync passwords for a small set of users. After I get some experience managing the configuration files then I can always revisit things like password synchronization to improve it, but I don't want to get held up on trying to create the perfect phone system. I want to get something underway that works a little better than the collection of phones and voicemail systems that I used today. I can build from there.
I don't have any great conclusions today, but I know what I'm going to work on next. I'll start by building up a description of how I expect the system to work. What should happen when an unknown user calls in? What should happen when a known user is on the system? How does a user log in? Then I can get in to the specific menu options that should be available to each of those two types of user. Each menu presented has to have error and failure handling described for all the cases.
So no code today, but hopefully some good ideas on how to apply Asterisk for your home.