[Asterisk-Users] Re: Re: Re: Voicemail error
David L. West
nntp at deskoptional.com
Sat May 6 16:33:35 MST 2006
> Why not just use numbers?
I may have to, but I read that Asterisk would support alphanumeric SIP/IAX extensions and got all inspired. This started from a desire to run multiple SIP clients, but using different logins to get around issues with "last registration wins" ringing behavior and the like. Think of it as seperating the concepts of "users" from "devices". The other thing contributing to the design is the need to have a multi-tenant PBX (with some of the users existing in more than one of the tenants) and have numeric extension lists be local to each tenant. That is, company A could have extension 1000 be Dave, while company B's extension 1000 goes to Bill. Similarly, user "dave" might be extension 1000 at one company and 1011 at another.
I have three SIP devices: dave, dave-laptop, and dave-cisco. Each one has a "mailbox=dave" entry, so I don't end up with three voicemail boxes, and I use that mailbox setting elsewhere to determine what the "main" SIP device is for a particular user. The convention I established was that I'd use the person's Active Directory user id as the first one, and add a hyphen and a descriptor for any add'l devices.
The company in this example is "deskoptional", so there is a context in my dialplan like this:
; Extension map for deskoptional
[deskoptional]
exten => 1000,1,Goto(switchboard,dave,1)
exten => 1001,1,Goto(switchboard,andrea,1)
; and so on...
The switchboard context is used by all tenants to direct traffic to the approprate SIP/IAX device(s). Note the "dave" one rings all my devices.
[switchboard]
exten => dave,1,Macro(stdexten,${EXTEN},SIP/dave&SIP/dave-laptop&SIP/dave-cisco)
exten => andrea,1,Macro(stdexten,${EXTEN},SIP/andrea)
I decided to make the voicemail extension be 1, so there's an entry in the appropriate place to extract the SIP name and truncate it at the first hyphen, so that dave, dave-laptop, and dave-cisco all get passed as "dave". That's not strictly necesary, I guess, since all three of them point to the same mailbox anyway. But it illustrates the technique well.
exten => 1,1,Set(target=${CHANNEL:4}-)
exten => 1,n,Set(target=${CUT(target,,1)})
exten => 1,n,VoiceMailMain(${target})
Similarly, I wanted to handle alphanumeric dialing from softphones. I got around Asterisk's lack of alphabetic extension matching by using an included subcontext. This takes a dialed extension like "dave-laptop" and gets the mailbox id from sip.conf, then calls switchboard with that. Since it's "dave" in all three cases, this prevents the scenario of me calling somebody from my laptop and having them try to call me back after I've finished my Americano and gone back to my desk. A call to any one of my SIP devices will always go to all of them.
[local-sub]
; This has to be in a sub-context to prevent the wildcard from matching when we don't want
; it to. This is because Asterisk doesn't handle alphabetic characters in extension matching,
; but we need a way to handle calls dialed as alpha.
exten => _., 1,Set(target=${SIPPEER(${EXTEN}:mailbox)})
exten => _., 2,NoOp(Target is ${target})
exten => _., 3,Goto(switchboard,${target},1)
All this works surprisingly well, but for the wee little problem of the VoiceMail application getting mixed up by alphanumeric extensions that start with the same letter as one of its flags (s/u/b). It occurs to me that I could sidestep this and perhaps future problems with alphanumeric by using the same overall structure, but come up with a numeric representation for the userids. It'd certainly be a lot easier to just use the names, though, and since Asterisk at least purportedly supports alphaumeric extensions I'm hoping this problem is solvable.
All I need is a way to uppercase a string, which from everything I've read so far isn't in the code. Then again, I could just use all uppercase for my SIP/IAX device names even if it *does* look ugly. ;)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20060506/580df007/attachment.htm
More information about the asterisk-users
mailing list