[globals] ANSWERWAIT=1 TRANSFER_CONTEXT=transfer ;MONITOR_EXEC=/usr/local/bin/2wav2mp3 #include phones.conf [internal] include => phones include => paging include => outbound include => voicemail include => conferencerooms include => parkedcalls exten => 5555,1,Goto(welcomeivr,s,1) [transfer] include => phones include => conferencerooms exten => 5555,1,Goto(welcomeivr,s,1) [incoming] include => phones exten => 8663297150,1,Goto(welcomeivr,slc,1) ;Was Alliee's exten => 8667128012,1,Goto(welcomeivr,slc,1) ;Published it Scotsmans Guide exten => 8004750056,1,Goto(phones,3002,1) exten => 8019906297,1,Goto(welcomeivr,slc,1) ;Going to .20 (Testing) ; 911 Service. Calls must go to the caller exten => 8019906291,1,Goto(phones,4010,1) ;Boise Caller ID for 911 exten => 8019906292,1,Goto(phones,3001,1) ;Denver Caller ID for 911 exten => 8017477151,1,Goto(phones,2001,1) ;Phoenix Caller ID for 911 exten => 8017477150,1,Goto(welcomeivr,slc,1) exten => 2083775300,1,Goto(welcomeivr,slc,1) exten => 3036298337,1,Goto(welcomeivr,slc,1) exten => 6023344020,1,Goto(welcomeivr,phx,1) exten => 3036298317,1,Goto(phones,2001,1) exten => 6023571863,1,Goto(phones,3001,1) [welcomeivr] include => phones include => conferencerooms exten => slc,1,GotoIfTime(8:00-17:00,mon-fri,*,*?s,1) exten => slc,n,Goto(afterhours,1) ;Modify this so it doesn't need changing exten => phx,1,GotoIfTime(9:00-18:00,mon-fri,*,*?s,1) exten => phx,n,Goto(afterhours,1) exten => afterhours,1,Answer() exten => afterhours,n,Set(LOOP=afterhours) exten => afterhours,n,Wait(${ANSWERWAIT}) exten => afterhours,n(Start),Background(custom/afterhours2) exten => afterhours,n,VoiceMail(office) exten => s,1,Answer() exten => s,n,Set(LOOP=s) exten => s,n,NoOp(${CALLERIDNUM} is calling) exten => s,n,Wait(${ANSWERWAIT}) exten => s,n(Start),Background(custom/mainboise) exten => s,n,Goto(0,1) ; Don't start keys with 1,2,3,4, or 8 exten => 7,1,Goto(dtmftest,s,1) exten => 0,1,Macro(warnaboutrecording) exten => 0,n,GotoIfTime(17:00-18:00,mon-fri,*,*,PhxQueue) exten => 0,n,Queue(mainqueue,t,,,35) exten => 0,n,VoiceMail(boffice) exten => 0,n,Hangup() exten => 0,30(PhxQueue),Queue(phxqueue,t,,,30) exten => 0,n,VoiceMail(boffice) exten => 0,n,Hangup() exten => #,1,Directory(default,phones) exten => o,1,Goto(0,1) exten => a,1,Goto(s,1) exten => i,1,Wait(1) exten => i,n,SayDigits(${INVALID_EXTEN}) exten => i,n,Playback(invalid) exten => i,n,Goto(${LOOP},Start) ; End of welcomeivr [dtmftest] ;exten => _XXXX,1,SayDigits(${EXTEN}) ;exten => _XXXX,n,Goto(s,Start) exten => 0,1,Answer exten => 0,n,MusicOnHold(default) exten => 1,1,Answer exten => 1,n,Milliwatt exten => h,1,Hangup exten => hang,1,Playback(vm-goodbye) exten => hang,n,Hangup exten => i,1,SayDigits(${INVALID_EXTEN}) exten => i,n,Playback(invalid) exten => i,n,Goto(s,7) exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,SetVar(LOOPED=1) exten => s,n(Start),GotoIf($[${LOOPED} > 2]?hang,1) exten => s,n,Set(TIMEOUT(digit)=3) exten => s,n,ResponseTimeout(7) exten => s,n,Background(you-have-reached-a-test-number) exten => t,1,SetVar(LOOPED=$[${LOOPED} + 1]) exten => t,n,Goto(dtmftest,s,Start) [conferencerooms] ;Do we need to answer and wait? exten => 8000,1,MeetMe(8000,i) exten => 8001,1,MeetMe(8001,i) exten => 8002,1,MeetMe(8002,i) [outbound] exten => _1NXXNXXXXXX,1,Macro(callout,${EXTEN}) exten => _NXXNXXXXXX,1,Macro(callout,1${EXTEN}) exten => _NXXXXXX,1,Macro(callout,1801${EXTEN}) ; You could parse the OUTBOUNDCID and get the area code exten => 911,1,Macro(call911) [macro-call911] exten => s,1,Monitor(wav,/var/spool/asterisk/monitor/inside${CALLERID(num)}/outside911/${CALLERID(num)}-911-${TIMESTAMP}-outbound,b) exten => s,n,Set(CALLERID(number)=${EMERGENCYCID}) exten => s,n,Dial(IAX2/8019903974/${PSAP},120,tT) [macro-callout] exten => s,1,StopMonitor() exten => s,n,Monitor(wav,/var/spool/asterisk/monitor/inside${CALLERID(num)}/outside${ARG1}/${CALLERID(num)}-${ARG1}-${TIMESTAMP}-outbound,b) exten => s,n,Set(CALLERID(name)=CCS) exten => s,n,Set(CALLERID(number)=${OUTBOUNDCID}) exten => s,n(Dial),Dial(IAX2/8019903974/${ARG1},120,tT) exten => s,n,Goto(v-${DIALSTATUS},1) exten => _v-BUSY,1,Busy() exten => _v-.,1,Congestion() [voicemail] exten => *97,1,Wait(${ANSWERWAIT}) exten => *97,n,VoiceMailMain(s${CALLERID(num)}) exten => 9999,1,VoiceMailMain(office) [macro-voicemail] exten => s,1,Set(DIALEXT=${ARG1}) exten => s,n,Answer exten => s,n,Wait(${ANSWERWAIT}) exten => s,n,VoiceMail(u${DIALEXT}@default) exten => a,1,VoiceMailMain(${DIALEXT}) [macro-callphone] exten => s,1,Set(DIALEXT=${ARG1}) ;exten => s,n,GotoIf($["${BLINDTRANSFER}" = ""]?NotTrans) ;exten => s,n,Playback(custom/transferring) ;exten => s,n,SayDigits(${DIALEXT}) exten => s,n(NotTrans),Macro(warnaboutrecording) exten => s,n,StopMonitor() exten => s,n,Monitor(wav,/var/spool/asterisk/monitor/inside${ARG1}/outside${CALLERID(num)}/${ARG1}-${CALLERID(num)}-${TIMESTAMP}-inbound,b) exten => s,n,Dial(${ARG2},25,tT) exten => s,n,GotoIf($["${CHANNEL:0:5}" = "Local"]?hangup,1) exten => s,n,Goto(vm-${DIALSTATUS},1) exten => hangup,1,Congestion() exten => a,1,VoiceMailMain(${DIALEXT}) exten => vm-BUSY,1,VoiceMail(b${DIALEXT}@default) exten => _vm-.,1,VoiceMail(u${DIALEXT}@default) [macro-warnaboutrecording] exten => s,1,GotoIf($["${CHANNEL:0:3}" != "IAX"]?end) exten => s,n,GotoIf($["${WARNED}" = "YES"]?end) exten => s,n,GotoIf($["${BLINDTRANSFER}" != ""]?end) ; This is because in early versions variables get lost in a transfer exten => s,n,Set(__WARNED = YES) exten => s,n,Answer() exten => s,n,Wait(${ANSWERWAIT}) exten => s,n,Playback(custom/this-call-may-be-monitored-or-recorded) exten => s,n(end),NoOp() [pager] ; This assumes SIP because that is the only transport that supports it exten => _X.,1,ChanIsAvail(SIP/${EXTEN}|js) exten => _X.,n,Set(__SIPADDHEADER=Call-Info: \;answer-after=0) exten => _X.,n,Set(__ALERT_INFO=Ring Answer) exten => _X.,n,Set(__SIP_URI_OPTIONS=intercom=true) exten => _X.,n,SIPAddHeader(Call-Info: \;answer-after=0) exten => _X.,n,Dial(SIP/${EXTEN}||) exten => _X.,n,Hangup()