Hi, I have been looking for an example of accomplishing this, but I've been unable to locate something similar to what I'm trying to do. Here's the scenario: Users caller ID is set to their internal extension (200-250). This is set in sip.conf for each user. Each user has a local DID as well (hosted through Vitelity, for example (555)111-2222). The problem is that this extension was being passed to the outside world. I currently have a SetCallerID command changing the CallerID to our main office number, but some users want their DID sent, not the general number. The problem is that if their caller ID is set to their DID, when users hit redial on their phones internally they dial out and back in. I corrected this by putting each DID in extensions.conf under their three digit extension, but that seems a bit like a kludge obviously. I'm looking for a method of sending the internal three digit extension only when a user is dialing another user internally, otherwise it will send their DID. Is their a method to do this in the dial plan? Anyone have an example of how to accomplish this? Thanks in advance. -Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20070625/2d878d7c/attachment.htm
Matthew Brothers
2007-Jun-26 22:02 UTC
[asterisk-users] Modification of Caller ID based on context
> Hi, > > I have been looking for an example of accomplishing this, but > I've been unable to locate something similar to what I'm trying > to do. > > Here's the scenario: > > Users caller ID is set to their internal extension (200-250). > This is set in sip.conf for each user. Each user has a local DID > as well (hosted through Vitelity, for example (555)111-2222). The > problem is that this extension was being passed to the outside > world. I currently have a SetCallerID command changing the > CallerID to our main office number, but some users want their DID > sent, not the general number. > > The problem is that if their caller ID is set to their DID, when > users hit redial on their phones internally they dial out and > back in. I corrected this by putting each DID in extensions.conf > under their three digit extension, but that seems a bit like a > kludge obviously. > > I'm looking for a method of sending the internal three digit > extension only when a user is dialing another user internally, > otherwise it will send their DID. Is their a method to do this in > the dial plan? Anyone have an example of how to accomplish this? > > > Thanks in advance.Mike, I have a similar setup (I even use Vitel) and the easiest and cleanest method that I have found to accomplish this is with the AstDB. You can simply create a cross-reference of DIDs and Internal extensions similar to extdid/200 => 5551112222 ... extdid/250 => 5551112272 in the AstDB. Then you can change your outgoing dialplan to change the caller id based upon this cross reference. Example: exten => NXXNXXXXXX,n,Set(outgoingCID=<MAINNUMBER>) exten => NXXNXXXXXX,n, GotoIf($[ ${DB_EXISTS(extdid/${CALLERID(num)})} = 0 ]?makecall) exten => NXXNXXXXXX,n, Set(outgoingCID=${DB(extdid/${CALLERID(num)})}) exten => NXXNXXXXXX,n(makecall),Set(CALLERID(num)=${outgoingCID}) ... You could even simplify your incoming context by cross-referencing in the other direction. That is didext/5551112222 => 200 ... didext/5551112272 => 250. exten => NXXNXXXXXX,n, Goto(internal-extensions,${DB(didext/${EXTEN})},1) OR you could do something similar with LOCAL channels or with a Dial command. -Matthew