; ; $Id: extensions.conf,v 1.36 2005/06/10 20:01:11 nugget Exp $ ; [general] static=no writeprotect=yes [globals] CONSOLE => Console/dsp PSTN => Zap/4 TRUNK => IAX2/voicepulse-out-01 TRUNK2 => IAX2/voicepulse-out-02 TRUNKBUF => IAX2/voicepulse-out-01 ALTRUNK => IAX2/115649@asterlink PSTNNUM => 8005587513 SNEAKYTRUNK => IAX2/sneaky KPTRUNK => IAX2/kp NUTRUNK => IAX2/NuFone ; Include variable definitions for my passwords and trunks #include ; Script constants MYDOMAIN => slacker.com MYFQDN => suburbia.slacker.com ; Extension definitions HOUSE => Zap/1 EQUIRAPTOR => SIP/zyxel NUGGETDESK => SIP/nugget NUGGETMOBILE => ${ALTRUNK}/15124232707 ; Incoming calls from voicepulse account [vpcontext] exten => _.,1,NoOp(Incoming Call from voicepulse ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _NXXNXXXXXX,2,LookupCIDName exten => _NXXNXXXXXX,3,Goto(default,inbound,1) ; Incoming calls from asterlink account [alcontext] exten => _.,1,NoOp(Incoming Call from asterlink ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _NXXNXXXXXX,2,LookupCIDName exten => _NXXNXXXXXX,3,Goto(default,inbound,1) ; Incoming calls from NuFone account [nfcontext] exten => _.,1,NoOp(Incoming Call from nufone ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _NXXNXXXXXX,2,LookupCIDName exten => _8667551474,3,Goto(default,inbound,1) exten => _8667551476,3,Goto(default,inbound,1) ; Incoming calls from tomn's asterisk account [sneakycontext] exten => _.,1,NoOp(Incoming Call from tomn's asterisk ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,LookupCIDName exten => _.,3,Goto(asteriskpeer,${EXTEN},1) exten => h,1,HangUp() ; Incoming calls from moonwick's asterisk account [mooncontext] exten => _.,1,NoOp(Incoming Call from moon's asterisk ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,LookupCIDName exten => _.,3,Goto(asteriskpeer,${EXTEN},1) exten => h,1,HangUp() ; Incoming calls from work asterisk system [kpcontext] exten => _.,1,NoOp(Incoming Call from work asterisk ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,LookupCIDName exten => _5125380508,3,Goto(default,inbound,1) exten => _NXXNXXXXXX,3,Goto(asteriskpeer,${EXTEN},1) exten => h,1,HangUp() [asteriskpeer] include => local include => noemergency include => restrict [guestiax] exten => _.,1,NoOp(Incoming Call from unknown IAX peer ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,Goto(default,${EXTEN},1) exten => h,1,HangUp() ; Incoming calls from TDM400P FXO interface(s) [zapin] exten => _.,1,NoOp(Incoming Call from Zaptel FXO ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,LookupCIDName exten => _.,3,Goto(default,inbound,1) exten => h,1,HangUp() ; Used to map a named extension to a numeric [macro-mapto] exten => s,1,NoOp(Remapping ${MACRO_EXTEN} to ${ARG1}) exten => s,2,NoOp(Moo) exten => s,3,Goto(default,${ARG1},1) ; General extension dial logic. Takes target as argument. [macro-extension] exten => s,1,NoOp(Dialing target ${ARG1} with rollover to voicemail ${ARG2}) exten => s,2,NoOp(Moo) exten => s,3,Dial(${ARG1},14,t) exten => s,4,Voicemail(u${ARG2}) exten => s,5,Hangup() exten => s,104,Voicemail(b${ARG2}) exten => s,105,Hangup ; Raw extension dial logic. Takes target as argument. [macro-rawextension] exten => s,1,NoOp(Dialing target ${MACRO_EXTEN} raw) exten => s,2,NoOp(Moo) exten => s,3,Dial(${ARG1}) exten => s,4,Busy() exten => s,104,Busy() ; Jump to a meetme conference room [macro-conference] exten => s,1,NoOp(Jumping into meetme room ${ARG1}) exten => s,2,NoOp(Moo) exten => s,3,MeetMe(${ARG1}) exten => s,4,HangUp() [macro-enumdial] exten => s,1,NoOp(Outbound LD Route call ${ARG1}) exten => s,2,Set(CALLERID(number)=${PSTNNUM}) exten => s,3,EnumLookup(${ARG1}) exten => s,54,Macro(metadial,${ARG1}) exten => s,104,Macro(metadial,${ARG1}) exten => s,4,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?5:7) exten => s,5,NoOp(ENUM lookup succeeded - dialing ${ENUM}) exten => s,6,Answer() exten => s,7,Wait(1) exten => s,8,Playback(enum-lookup-successful) exten => s,9,Playback(pls-wait-connect-call) exten => s,10,Dial(${ENUM}) exten => s,11,Macro(metadial,${ARG1}) exten => s,112,Macro(metadial,${ARG1}) [macro-metadial] exten => s,1,NoOp(MetaDial ${ARG1}) exten => s,2,Dial(${ALTRUNK}/${ARG1}) exten => s,3,Macro(vpdial,${ARG1}) exten => s,4,Macro(pstndial,${ARG1}) exten => s,5,Congestion() [macro-pstndial] exten => s,1,NoOp(Outbound LD Route call ${ARG1} with no ENUM) exten => s,2,Set(CALLERID(number)=${PSTNNUM}) exten => s,3,Macro(vpdial,${ARG1}) exten => s,4,Hangup() exten => s,104,Macro(vpdial,${ARG1}) [macro-swapvp] exten => s,1,NoOp(Swapping voicpulse trunk priority) exten => s,2,SetGlobalVar(TRUNKBUF=${TRUNK}) exten => s,3,SetGlobalVar(TRUNK=${TRUNK2}) exten => s,4,SetGlobalVar(TRUNK2=${TRUNKBUF}) exten => s,5,NoOp(Swapped) exten => s,6,NoOp(Priority 1 ${TRUNK}) exten => s,7,NoOp(Priority 2 ${TRUNK2}) [macro-vpdial] exten => s,1,NoOp(Outbound VP call ${ARG1}) exten => s,2,ResponseTimeout,60 exten => s,3,Set(CALLERID(number)=${PSTNNUM}) exten => s,4,Dial(${TRUNK}/${ARG1}) exten => s,5,NoOp(TRUNK failed) exten => s,6,SetVar(A=2) exten => s,7,NoOp(rolling over to TRUNK2) exten => s,8,Playback(hang-on-a-second) exten => s,9,Macro(swapvp) exten => s,10,Dial(${TRUNK}/${ARG1}) exten => s,11,Macro(nudial,${ARG1}) ; Place a call on the company dime, fail if not possible. [macro-nudial] exten => s,1,NoOp(Outbound NuFone call ${ARG1}) exten => s,2,Set(CALLERID(number)=${PSTNNUM}) exten => s,3,Dial(${NUTRUNK}/${ARG1}) exten => s,4,Congestion() ; Place a call via sneaky trunk (if possible) or fall back to local trunks. [macro-sneakydial] exten => s,1,NoOp(Outbound SNEAKY call ${ARG1}) exten => s,2,Set(CALLERID(number)=${PSTNNUM}) exten => s,3,Dial(${SNEAKYTRUNK}/${ARG1}) exten => s,4,Playback(hang-on-a-second) exten => s,5,Macro(vpdial,${ARG1}) exten => s,6,Congestion() ; Place a call on the company dime, fail if not possible. [macro-kpdial] exten => s,1,NoOp(Outbound KP call ${ARG1}) exten => s,2,Set(CALLERID(number)=502) exten => s,3,Dial(${KPTRUNK}/${ARG1}) exten => s,4,Congestion() [macro-uridial] exten => s,1,NoOp(Outbound SIP URI call ${ARG1}) exten => s,2,Set(CALLERID(number)=${PSTNNUM}) exten => s,3,Dial(SIP/${ARG1}) exten => s,4,Congestion() [residentmenu] exten => main,1,NoOp(Presenting main menu to resident caller) exten => main,2,DigitTimeout,4 exten => main,3,ResponseTimeout,12 exten => main,4,Wait(1) exten => main,5,Answer() exten => main,6,Wait(1) exten => main,7,Background(moo1) exten => main,8,Background(if-u-know-ext-dial) exten => main,9,BackGround(company-dir-411) exten => main,10,Background(or) exten => main,11,Background(to-collect-voicemail) exten => main,12,Background(digits/2) exten => main,13,Background(digits/5) exten => main,14,Background(digits/oh) exten => main,15,Background(digits/1) exten => main,16,Background(or) exten => main,17,Background(pls-stay-on-line) exten => _0,1,Voicemail(200) exten => _0,2,Hangup() exten => _411,1,Directory(default) exten => _411,2,Goto(main,1) exten => t,1,Playback(i-grow-bored) exten => t,2,Goto(default,wholehouse,1) include => default [default] exten => h,1,HangUp() ; Inbound callers which will absolutely be for Nugget exten => inbound/_3106130473,1,Goto(nugget,1) ; Len mobile exten => inbound/_3104594291,1,Goto(nugget,1) ; Len home 1 exten => inbound/_2087886728,1,Goto(nugget,1) ; Len home 2 exten => inbound/_5127509012,2,Goto(residentmenu,main,1) exten => inbound/_5124232707,2,Goto(residentmenu,main,1) ; Inbound callers which will absolutely be for Monica exten => inbound/_5124671320,1,Goto(equiraptor,1) ; Monica parents exten => inbound/_5122501005,1,Goto(equiraptor,1) ; Monica parents exten => inbound/_8009556600,1,Voicemail(u202) ; CapitalOne exten => inbound/_8049347152,1,Voicemail(u202) ; CapitalOne ; Inbound callers on my blacklist exten => inbound/_2104020979,1,Goto(jail,1) exten => inbound/_8004212551,1,Goto(jail,1) exten => inbound/_9797741253,1,Goto(jail,1) exten => inbound/_8608417302,1,Goto(jail,1) ; Unknown telemarketer exten => inbound/_8665903163,1,Goto(jail,1) ; MBNA Telemarketer exten => inbound/_8012576155,1,Goto(jail,1) ; MBNA Telemarketer exten => inbound/_5122790632,1,Goto(jail,1) ; Austin JC's Telemarketer exten => inbound/_5122791483,1,Goto(jail,1) ; Austin JC's Telemarketer exten => inbound/_5124800859,1,Goto(jail,1) ; "Campaign Phone" exten => inbound/_5124820847,1,Goto(jail,1) ; "Campaign Phone" exten => inbound/_0000000000,1,Goto(jail,1) ; Buuuuuulshit exten => inbound/_2127989291,1,Goto(jail,1) ; register.com ; Any unknown caller with valid Caller ID jumps to general "house" call exten => inbound/_NXXNXXXXXX,1,Goto(200,1) exten => inbound/_0XXXXXXXXX,1,Goto(200,1) ; Any unknown caller with blocked Caller ID goes to marketer jail exten => inbound,1,Goto(jail,1) ; Operator extension, mainly because people expect it. exten => _0,1,NoOp,"Operator / Main Menu" exten => _0,2,DigitTimeout,4 exten => _0,3,ResponseTimeout,12 exten => _0,4,Wait(1) exten => _0,5,Answer() exten => _0,6,Wait(1) exten => _0,7,Background(if-u-know-ext-dial) exten => _0,8,Background(or) exten => _0,9,Background(pls-stay-on-line) ; General house calls, rings everywhere exten => 200,1,AGI(nugget-home.agi) exten => 200,2,NoOp(Nuggethome is ${nuggethome}) exten => 200,3,GotoIf($[${nuggethome} = yes]?10) exten => 200,4,NoOp(Dialing dual) exten => 200,5,Macro(extension,${NUGGETDESK}&${HOUSE}&${NUGGETMOBILE},201) exten => 200,6,Hangup() exten => 200,10,NoOp(Dialing single) exten => 200,11,Macro(extension,${NUGGETDESK}&${HOUSE},201) exten => 200,12,Hangup() exten => 201,1,AGI(nugget-home.agi) exten => 201,2,NoOp(Nuggethome is ${nuggethome}) exten => 201,3,GotoIf($[${nuggethome} = yes]?10) exten => 201,4,NoOp(Dialing dual) exten => 201,5,Macro(extension,${NUGGETDESK}&${HOUSE}&${NUGGETMOBILE},201) exten => 201,6,Hangup() exten => 201,10,NoOp(Dialing single) exten => 201,11,Macro(extension,${NUGGETDESK}&${HOUSE},201) exten => 201,12,Hangup() ; Flex extensions which can ring multiple targets and have VM boxes to ; roll to on no-answer. exten => 202,1,Macro(extension,${EQUIRAPTOR}&${HOUSE}&${EQUIRAPTORMOBILE},202) exten => 203,1,Macro(extension,SIP/ivo,203) exten => 204,1,Macro(extension,SIP/moose,204) exten => 205,1,Macro(extension,IAX2/bovine,205) exten => 206,1,Macro(extension,SIP/gregh,206) ; "Raw" extensions, primarily for intra-house call use exten => 300,1,Macro(rawextension,${HOUSE}) exten => 301,1,Macro(rawextension,SIP/nugget) exten => 302,1,Macro(rawextension,SIP/zyxel) exten => 311,1,Macro(rawextension,SIP/nuggetroam) exten => 312,1,Macro(vpdial,15127509012) exten => 313,1,Macro(vpdial,15124232707) exten => 350,1,VoiceMail(u200) exten => 351,1,VoiceMail(b200) exten => 352,1,VoiceMail(200) ; Meta extensions for easy dialing to offsite VoIP users exten => 401,1,Macro(uridial,tomn@sneaky.net) exten => 402,1,Macro(uridial,paul@followell.net) exten => 403,1,Macro(uridial,nugget@slacker.com) exten => 404,1,Macro(vpdial,12178962082) exten => 405,1,Dial(IAX2/kp/13172222222) exten => 406,1,Dial(SIP/colin@maxintegration.com) ; Telemarketer Jail, never rings just goes straight to voicemail exten => jail,1,NoOp(Blocked ID Jail) exten => jail,2,Wait(1) exten => jail,3,Answer() exten => jail,4,Wait(2) exten => jail,5,Playback(tt-allbusy) exten => jail,6,Voicemail(u200) exten => jail,7,Hangup() ; useful names corresnponding to all primary extensions. Used for ; external people dialing in SIP-to-SIP. exten => wholehouse,1,Macro(mapto,200) exten => nugget,1,Macro(mapto,201) exten => equiraptor,1,Macro(mapto,202) exten => 2501,1,VoiceMailMain() exten => 2501,2,Hangup() exten => 2502,1,Goto(residentmenu,main,1) ; If an invalid extension is selected exten => i,1,Playback(invalid) exten => i,2,Wait(1) exten => i,3,Hangup() ; If user times out exten => t,1,Playback(moo1) exten => t,2,Hangup [conferences] exten => 700,1,Macro(conference,700) exten => 701,1,Macro(conference,701) exten => 702,1,Macro(conference,702) exten => 996,1,Set(CALLERID(name)=Nugget) exten => 996,2,Set(CALLERID(number)=5125380508) exten => 996,3,Dial(IAX2/guest@66.250.68.194/996) ; For slacker stations that are physically inside the house [house] exten => _.,1,NoOp(Incoming Call from house extension ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,GotoIf($[${LEN(${SIPDOMAIN})} = 0]?10) exten => _.,3,GotoIf($[${SIPDOMAIN} = ${MYDOMAIN}]?10) exten => _.,4,GotoIf($[${SIPDOMAIN} = ${MYFQDN}]?10) exten => _.,5,GotoIf($[${SIPDOMAIN} = ${MYFQDN}:5060]?10) exten => _.,6,NoOp(@${SIPDOMAIN} is remote, forwarding...) exten => _.,7,Macro(uridial,${EXTEN}@${SIPDOMAIN}) exten => _.,8,HangUp() exten => _.,10,Goto(house-noturi,${EXTEN},1) exten => h,1,HangUp() [house-noturi] include => local include => trunkld include => trunkint include => emergency ; For internal users to collect their voicemails exten => 2500,1,VoicemailMain(s${CALLERIDNUM}) exten => 2500,2,Hangup() exten => 4500,1,Goto(ivr,0,1) exten => 4501,1,NoOp(Entering the mooq queue) exten => 4501,2,Answer exten => 4501,3,Queue(mooq) exten => _5XX,1,Dial(SIP/${EXTEN}@kp.slacker.com) ; For slacker stations that are not inside the house [remote] exten => _.,1,NoOp(Incoming Call from remote extension ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,GotoIf($[${LEN(${SIPDOMAIN})} = 0]?10) exten => _.,3,GotoIf($[${SIPDOMAIN} = ${MYDOMAIN}]?10) exten => _.,4,GotoIf($[${SIPDOMAIN} = ${MYFQDN}]?10) exten => _.,5,GotoIf($[${SIPDOMAIN} = ${MYFQDN}:5060]?10) exten => _.,6,NoOp(@${SIPDOMAIN} is remote, forwarding...) exten => _.,7,Macro(uridial,${EXTEN}@${SIPDOMAIN}) exten => _.,8,HangUp() exten => _.,10,Goto(remote-noturi,${EXTEN},1) exten => h,1,HangUp() [remote-noturi] include => local include => trunkld include => trunkint include => noemergency exten => 4501,1,ZapBarge exten => 4501,2,Hangup ; If user times out exten => t,1,Playback(moo1) exten => t,2,Hangup ; Guest users with only internal and local calling ability [guest] exten => _.,1,NoOp(Incoming Call from guest extension ${CALLERID} for ${EXTEN}@${SIPDOMAIN}) exten => _.,2,GotoIf($[${LEN(${SIPDOMAIN})} = 0]?10) exten => _.,3,GotoIf($[${SIPDOMAIN} = ${MYDOMAIN}]?10) exten => _.,4,GotoIf($[${SIPDOMAIN} = ${MYFQDN}]?10) exten => _.,5,GotoIf($[${SIPDOMAIN} = ${MYFQDN}:5060]?10) exten => _.,6,NoOp(@${SIPDOMAIN} is remote, forwarding...) exten => _.,7,Macro(uridial,${EXTEN}@${SIPDOMAIN}) exten => _.,8,HangUp() exten => _.,10,Goto(guest-noturi,${EXTEN},1) exten => h,1,HangUp() [guest-noturi] include => local include => noemergency include => restrict ; Ability to place internal and local calls [local] include => default include => conferences include => trunklocal include => trunktollfree ; Ability to place toll free calls [trunktollfree] exten => _800NXXXXXX,1,Dial(${PSTN}/1${EXTEN}) exten => _1800NXXXXXX,1,Dial(${PSTN}/${EXTEN}) exten => _+1%20800%20NXX-XXXX,1,Dial(${PSTN}/1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _866NXXXXXX,1,Dial(${PSTN}/1${EXTEN}) exten => _1866NXXXXXX,1,Dial(${PSTN}/${EXTEN}) exten => _+1%20866%20NXX-XXXX,1,Dial(${PSTN}/1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _877NXXXXXX,1,Dial(${PSTN}/1${EXTEN}) exten => _1877NXXXXXX,1,Dial(${PSTN}/${EXTEN}) exten => _+1%20877%20NXX-XXXX,1,Dial(${PSTN}/1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _888NXXXXXX,1,Dial(${PSTN}/1${EXTEN}) exten => _1888NXXXXXX,1,Dial(${PSTN}/${EXTEN}) exten => _+1%20888%20NXX-XXXX,1,Dial(${PSTN}/1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _18007139274,1,Dial(${PSTN}/18007139274) ; tivo toll free call exten => _18007139274#,1,Dial(${PSTN}/18007139274) ; tivo toll free call ; Ability to place local calls [trunklocal] exten => _1512NXXXXXX,1,Dial(${PSTN}/${EXTEN:4}) exten => _1512NXXXXXX,2,Macro(vpdial,${EXTEN}) exten => _512NXXXXXX,1,Dial(${PSTN}/${EXTEN:3}) exten => _512NXXXXXX,2,Macro(vpdial,1${EXTEN}) exten => _+1%20512%20NXX-XXXX,1,Dial(${PSTN}/${EXTEN:11:3}${EXTEN:15:4}) exten => _+1%20512%20NXX-XXXX,2,Macro(vpdial,1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _1317NXXXXXX,1,Macro(sneakydial,${EXTEN}) exten => _317NXXXXXX,1,Macro(sneakydial,1${EXTEN}) exten => _+1%20317%20NXX-XXXX,1,Macro(sneakydial,1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _NXXXXXX,1,Dial(${PSTN}/${EXTEN}) exten => _NXXXXXX,2,Macro(vpdial,1512${EXTEN}) ; Ability to place long distance calls [trunkld] exten => _1NXXNXXXXXX,1,Macro(enumdial,${EXTEN}) exten => _NXXNXXXXXX,1,Macro(enumdial,1${EXTEN}) exten => _+1%20NXX%20NXX-XXXX,1,Macro(enumdial,1${EXTEN:5:3}${EXTEN:11:3}${EXTEN:15:4}) exten => _9NXXNXXXXXX,1,Playback(pls-wait-connect-call) exten => _9NXXNXXXXXX,2,Dial(${PSTN}/1${EXTEN:1}) ; Ability to place international calls [trunkint] exten => _011.,1,Dial(${PSTN}/${EXTEN}) exten => _011.,2,Macro(vpdial,${EXTEN}) ; Terminating Resister for disallowed calls [restrict] exten => _1NXXNXXXXXX,1,Playback(not-auth-pstn) exten => _1NXXNXXXXXX,2,NoOp(blocked restricted call ${EXTEN}) exten => _1NXXNXXXXXX,3,Congestion() exten => _NXXNXXXXXX,1,Playback(not-auth-pstn) exten => _NXXNXXXXXX,2,NoOp(blocked restricted call ${EXTEN}) exten => _NXXNXXXXXX,3,Congestion() ; Emergency calls [emergency] exten => _911,1,ChanIsAvail(${PSTN}) exten => _911,2,Dial(${PSTN}/911) exten => _911,3,Hangup() exten => _911,102,SoftHangup(${PSTN}-1) exten => _911,103,Wait(1) exten => _911,104,Goto(1) [noemergency] exten => _911,1,Playback(no-911-1) exten => _911,2,Congestion() [ivr] exten => 0,1,Playback(moo1) exten => 1,1,Playback(moo2) exten => t,1,Playback(i-grow-bored) exten => t,2,Goto(ivrhangup,0,1) [ivrhangup] include => ivr exten => t,1,Playback(i-grow-bored) exten => t,2,Hangup()