***************ZAPATA.CONF**************************** [trunkgroups] [channels] context=default switchtype=national signalling=fxo_ls rxwink=300 ; Atlas seems to use long (250ms) winks usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes threewaycalling=yes transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 immediate=no ;Lines from Internal signalling = fxo_ks channel => 1,2,3,4 ;Lines from PSTN signalling = fxs_ks channel => 5,6,7,8 ****************extensions.conf********************* [general] static=yes writeprotect=no clearglobalvars=no [globals] CONSOLE = Console/dsp IAXINFO = guest TRUNK = Zap/g2 [dundi-e164-canonical] [dundi-e164-local] include => dundi-e164-canonical include => dundi-e164-customers include => dundi-e164-via-pstn [dundi-e164-switch] switch => DUNDi/e164 [dundi-e164-lookup] include => dundi-e164-local include => dundi-e164-switch [macro-dundi-e164] exten => s,1,Goto(${ARG1},1) include => dundi-e164-lookup [iaxtel700] exten => _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel) [iaxprovider] [trunkint] exten => _9011.,1,Macro(dundi-e164,${EXTEN:4}) exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [trunkld] exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1}) exten => _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [trunklocal] exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [trunktollfree] exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [international] ; ; Master context for international long distance ; ignorepat => 9 include => longdistance include => trunkint [longdistance] ; ; Master context for long distance ; ignorepat => 9 include => local include => trunkld [local] ignorepat => 9 include => default include => trunklocal include => iaxtel700 include => trunktollfree include => iaxprovider include => parkedcalls [macro-trunkdial] exten => s,1,Dial(${ARG1}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Hangup exten => s-BUSY,1,Hangup exten => _s-.,1,NoOp [macro-stdexten]; exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain [macro-stdPrivacyexten]; exten => s,1,Dial(${ARG2},20|p) ; Ring the interface, 20 seconds maximum, call screening ; option (or use P for databased call screening) exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start exten => s-DONTCALL,1,Goto(${ARG3},s,1) ; Callee chose to send this call to a polite "Don't call again" script. exten => s-TORTURE,1,Goto(${ARG4},s,1) ; Callee chose to send this call to a telemarketer torture script. exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain [macro-page] exten => s,1,ChanIsAvail(${ARG1}|js) ; j is for Jump and s is for ANY call exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail) exten => s,n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others exten => s,n,NoOp() ; Add others here and Post on the Wiki!!!! exten => s,n,Dial(${ARG1}||) exten => s,n(fail),Hangup [demo] [page] exten => _X.,1,Macro(page,SIP/${EXTEN}) [default] exten => 850,1,VoiceMailMain exten => 8500,n,Hangup include => voicemenu-custom-1 exten = 500,1,Queue(${EXTEN}) [voicemenu-custom-1] comment = mainmenu exten = s,1,Answer exten = s,2,Background(thank-you-for-calling) exten = s,3,Background(if-u-know-ext-dial) exten = s,4,Background(otherwise) exten = s,5,Background(pls-hold-while-try) exten = s,6,Background(to-reach-operator) include = default [numberplan-custom-1] plancomment = DialPlan1 include = default exten = _91XXXXXXXXXX.,1,Macro(trunkdial,${trunk_1}/${EXTEN:1}) comment = _91XXXXXXXXXX.,1,Longdistance,standard exten = _9256XXXXXXX.,1,Macro(trunkdial,${trunk_1}/${EXTEN:4}) comment = _9256XXXXXXX.,1,Local,standard exten = _9011XXXXXXX.,1,Macro(trunkdial,${trunk_1}/${EXTEN:1}) comment = _9011XXXXXXX.,1,International,standard exten = _9XXXXXXX.,1,Macro(trunkdial,${trunk_1}/${EXTEN:1}) comment = _9XXXXXXX.,1,Local,standard exten = _911.,1,Macro(trunkdial,${trunk_1}/${EXTEN:0}) comment = _911.,1,911,standard [asterisk_guitools] exten = executecommand,1,System(${command}) exten = executecommand,n,Hangup() exten = record_vmenu,1,Answer exten = record_vmenu,n,Playback(vm-intro) exten = record_vmenu,n,Record(${var1}) exten = record_vmenu,n,Playback(vm-saved) exten = record_vmenu,n,Playback(vm-goodbye) exten = record_vmenu,n,Hangup exten = play_file,1,Answer exten = play_file,n,Playback(${var1}) exten = play_file,n,Hangup hasbeensetup = N [DID_trunk_1] include = default exten = _X.,1,Goto(default|114|1) exten = s,1,Goto(default|114|1) *************************CLI OUTPUT*********************** -- Executing [919163405796@numberplan-custom-1:1] Macro("SIP/114-08232ed0", "trunkdial|Zap/g1/19163405796") in new stack -- Executing [s@macro-trunkdial:1] Dial("SIP/114-08232ed0", "Zap/g1/19163405796") in new stack -- Called g1/19163405796 -- Zap/5-1 answered SIP/114-08232ed0 [May 22 11:25:54] WARNING[3479]: codec_gsm.c:144 gsmtolin_framein: Invalid GSM data (1) [May 22 11:25:54] WARNING[3479]: translate.c:197 framein: gsmtolin did not update samples 0 [May 22 11:25:54] WARNING[3479]: codec_gsm.c:144 gsmtolin_framein: Invalid GSM data (1) [May 22 11:25:54] WARNING[3479]: translate.c:197 framein: gsmtolin did not update samples 0 [May 22 11:25:55] WARNING[3479]: codec_gsm.c:144 gsmtolin_framein: Invalid GSM data (1) [May 22 11:25:55] WARNING[3479]: translate.c:197 framein: gsmtolin did not update samples 0 -- Hungup 'Zap/5-1' == Spawn extension (macro-trunkdial, s, 1) exited non-zero on 'SIP/114-08232ed0' in macro 'trunkdial' == Spawn extension (macro-trunkdial, s, 1) exited non-zero on 'SIP/114-08232ed0'