I've got a setup where we have 100 DID's. Our default dialplan has one line that calls a macro: exten => _22XX,1,Macro(STDEXT,${EXTEN}) The macro is pretty basic: [macro-STDEXT] exten => s,1,NoOp exten => s,2,Dial(SIP/${ARG1},15,Tt) exten => s,3,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Voicemail(${ARG1}|u) exten => s-NOANSWER,n,Hangup exten => s-BUSY,1,Voicemail(${ARG1}|b) exten => s-BUSY,n,Hangup exten => s-CHANUNAVAIL,1,Voicemail(${ARG1}|b) exten => s-CHANUNAVAIL,n,Hangup exten => s-CONGESTION,1,Voicemail(${ARG1}|b) exten => s-CONGESTION,n,Hangup My issue is that there are probably only about 50 numbers active at one point in time and the numbers change frequently. I used the 22XX so that I didn't have to update the dialplan all the time. The issue is that if someone calls an invalid number, the system hangs up on them. It tries to ring their extension, gets a SIP No Route and then goes to CHANUNAVAIL where it tries voicemail and hangs up. What I want to happen is if someone calls in and hits an invalid number, it always goes to the operator. I thought I could just use CHANUNAVAIL to send them there, but the problem is that if a phone isn't registered and someone calls it, it goes to CHANUNAVAIL as well. This may seem like the same thing, but it is different. If there is an extension built and it isn't registered, I want it to go to their voicemail. It is only if someone calls an extension that isn't built that I want it to go to the operator. Any ideas on how to achieve this?
> exten => s-CHANUNAVAIL,1,Voicemail(${ARG1}|b) > exten => s-CHANUNAVAIL,n,Hangup >Checks for mailbox existence, if it doesn't exist, sends it to the incoming context where further check of time of day and then on to the operator. If it does exist, return from the Gosub and continue processing: exten => s-CHANUNAVAIL,1,Gosub(mailbox_exist,s,1) exten => s-CHANUNAVAIL,n,Playback(beep) exten => s-CHANUNAVAIL,n,Voicemail(${ARG1}@sip|u) exten => s-CHANUNAVAIL,n,Hangup() [mailbox_exist] exten => s,1,Set(_direct_vm=${ARG1}) exten => s,n,MailboxExists(${direct_vm}@sip) exten => s,n,Goto(s-${VMBOXEXISTSSTATUS},1) exten => s-FAILED,1,Answer() exten => s-FAILED,n,Wait(1) exten => s-FAILED,n,Playback(vm-theperson) exten => s-FAILED,n,SayDigits(${direct_vm}) exten => s-FAILED,n,Playback(vm-nobox) exten => s-FAILED,n,Playback(pbx-transfer) exten => s-FAILED,n,Goto(incoming,s,1) exten => s-SUCCESS,1,Return() Doug -- Ben Franklin quote: "Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety."