[from-internal-custom] ; ;Stuff I added for line testing. ; ; *2 - Say Phone Number exten => *2,1,Playback(your-exten-num-is) exten => *2,n,SayDigits(${CALLERIDNUM}) exten => *2,n,Hangup ; ; *3 - Say Date and Time exten => *3,1,Playback(the-current-time-is) exten => *3,n,Datetime exten => *3,n,Hangup ; ; *4 - Milliwatt Tone exten => *5,1,Answer exten => *5,n,Milliwatt exten => *5,n,Hangup ; ; *5 - Music On Hold exten => *7,1,Answer exten => *7,n,MusicOnHold(default) ; ; *6 - weather exten => *6,1,Answer exten => *6,2,AGI(weather.agi) exten => *6,3,Hangup ; ; *7 - AirPort Weather exten => *7,1,Answer exten => *7,2,Wait(1) exten => *7,3,DigitTimeout(7) exten => *7,4,ResponseTimeout(10) exten => *7,5,Flite("At the beep enter the three character airport code for the weather report you wish to retrieve.") exten => *7,6,Read(APCODE,beep,3) exten => *7,7,Flite("Please hold a moment while we contact the National Weather Service for your report.") exten => *7,8,AGI(nv-weather.php|${APCODE}) exten => *7,9,NoOp(Wave file: ${TMPWAVE}) exten => *7,10,Playback(${TMPWAVE}) exten => *7,11,Hangup exten => _*20,1,Answer exten => _*20,n,Wait(1) exten => _*20,n,MeetMe({$ARG1},pdcMs) exten => _*20,n,4,Playback(vm-goodbye) exten => _*20,n,5,Hangup ; ;---------------------------------------------------------------------------- ;211 Community Information and Referral Services ; Available for Reassignment ;---------------------------------------------------------------------------- ;211 - Reassigned to [] ;---------------------- ;exten => 211,1, ;exten => 211,n, ;exten => 211,n, ;exten => 211,n, ; ;------------------------------------------- ;311 - non-emerg not yet setup for Non Emerg ;------------------------------------------- exten => 311,1,Macro(user-callerid,) exten => 311,2,Dial(LOCAL/local non emergancy nmbr here) exten => 311,3,Congestion exten => 311,102,Playback(ss-noservice) exten => 311,103,Congestion ; ;--------------------------- ; 411 - Information services ;--------------------------- exten => 411,1,Macro(user-callerid,) exten => 411,2,Dial(IAX2/darwin@teliax/3035551212,30,r) exten => 411,3,Congestion exten => 411,102,Playback(ss-noservice) exten => 411,n,hangup ; ;--------------------------------------------------------------------------- ;511 Traffic and Transportation Information (US); Available for Reassignment ;--------------------------------------------------------------------------- ;511 - Reassigned to Call back Wake service ;------------------------------------------ exten => 511,1,Macro(user-callerid,) exten => 511,n,Answer exten => 511,n,AGI(wakeup.php) exten => 511,n,Hangup ; ;------------------------------------- ; 611 - [Repair Service / TechSupport] ;------------------------------------- exten => 611,1,Macro(user-callerid,) exten => 611,n,Answer exten => 611,n,GotoIfTime(*|*|1|jan?611|HOLIDAY) exten => 611,n,GotoIfTime(*|*|4|jul?611|HOLIDAY) exten => 611,n,GotoIfTime(*|*|11|nov?611|HOLIDAY) exten => 611,n,GotoIfTime(*|*|24|nov?611|HOLIDAY) exten => 611,n,GotoIfTime(*|*|25|dec?611|HOLIDAY) exten => 611,n,Goto(611,START) exten => 611,n(HOLIDAY),Playback(office-closed-holiday) exten => 611,n,Playback(office-hours) exten => 611,n,Hangup exten => 611,n(CLOSED),Playback(office-closed&our-business-hours-are&office-hours) exten => 611,n,Voicemail(u611) exten => 611,n,Hangup exten => 611,n(START),GotoIfTime(22:00-08:00|*|*|*?611|CLOSED) exten => 611,n,Set(TIMEOUT(digit)=3) exten => 611,n,Set(TIMEOUT(response)=10) exten => 611,n,SayDigits(611) exten => 611,n,Playback(repair&and&technical-support&for-quality-purposes&this-call-may-be&recorded) exten => 611,n(ID),Playback(pls-enter-account) exten => 611,n,Read(acct,then-press-pound,) exten => 611,n,SayDigits(${acct}) exten => 611,n,Background(if-correct-press) exten => 611,n,SayDigits(1) exten => 611,n,Background(if-incorrect-press) exten => 611,n,SayDigits(2) exten => 611,n,Read(res,then-press-pound,) exten => 611,n,GotoIf($["${res}"="1"]?ACCT:ID) exten => 611,n(ACCT),Set(CALLERID(name)=${CALLERIDNAME}) exten => 611,n,Set(CALLERID(number)=${acct}) exten => 611,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID}) exten => 611,n,SetMusicOnHold(default) exten => 611,n,GotoIfTime(08:00-17:00|mon-fri|*|*?611|DAY) exten => 611,n,GotoIfTime(17:00-22:00|mon-fri|*|*?611|NIGHT) exten => 611,n,GotoIfTime(09:00-13:00|sat|*|*?611|NIGHT) exten => 611,n,Goto(611,closed) exten => 611,n(DAY),Queue(102|t|||300) exten => 611,n(VM),Voicemail(u611) exten => 611,n,Hangup exten => 611,n(NIGHT),Queue(103|t|||300) exten => 611,n,Goto(611,VM) ; ;---------------------------------------------------------------------------------------- ;711 is the national number to access relay services from anywhere in the United States. ;Dial 711 to be connected with a Relay Colorado operator. ;---------------------------------------------------------------------------------------- ; 711 - [State Relay TTY/TDD/Voice Service] ;------------------------------------------ exten => 711,1,Macro(user-callerid,) ;exten => 711,n,Dial(SIP/711) ;exten => 711,n,Congestion exten => 711,n,Playback(ss-noservice) exten => 711,n,Congestion exten => 711,n,Macro(hangupcall) ; ;----------------------------------------------------------------------------- ;Access to One Call Services to Protect Pipeline and Utilities from Excavation ;Damage (US); Available for Reassignment ;----------------------------------------------------------------------------- ;811 - Reassigned to [Quick-dial TollFree Directory] ;--------------------------------------------------- exten => 811,1,Macro(user-callerid,) exten => 811,n,Dial(IAX2/user@provider/8005551212,30,r) exten => 811,n,Hangup ; ;-------------- ; 911 Emergancy ;-------------- exten => 911,1,Macro(user-callerid,) ;exten => 911,n,Dial(SIP/${EXTEN}) ;exten => 911,n,Congestion exten => 911,n,Playback(no-911-1) exten => 911,n,Congestion exten => 911,n,Macro(hangupcall) ; ;------------------ ; 900/976 Blocking ;------------------ exten => _900NXXXXXX,1,Playback(ss-noservice) exten => _1NXX976XXXX,1,Playback(ss-noservice) exten => _NXX976XXXX,1,Playback(ss-noservice) exten => _976XXXX,1,Playback(ss-noservice) ; ;------------------------------------------------------ ; Custom IVR With Default Queues & Time Checking & Fax ;------------------------------------------------------ [custom-fax] exten => s,1,Goto(ext-fax,in_fax,1) ; [custom-queues] ;Basic Queues Sales / Billing / Technical Support ; ;Sales exten => s0,1,Playback(sales) exten => s0,n,GotoIf($["${CONTEXT}"="from-internal"]?USERCID:SETCID) exten => s0,n(USERCID),Macro(user-callerid,) exten => s0,n(SETCID),Set(CALLERID(name)=${CALLERIDNAME}) exten => s0,n(ID),Playback(pls-enter-account) exten => s0,n,Read(acct,then-press-pound) exten => s0,n,SayDigits(${acct}) exten => s0,n,Background(if-this-is-correct-press) exten => s0,n,SayDigits(1) exten => s0,n,Background(if-this-is-incorrect-press) exten => s0,n,SayDigits(2) exten => s0,n,Read(res,then-press-pound,) exten => s0,n,GotoIf($["${res}"="1"]?ACCT:ID) exten => s0,n(ACCT),Set(CALLERID(number)=${acct}) exten => s0,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID}) exten => s0,n,Queue(100|t|||300) exten => s0,n,Voicemail(u100) ; ;Billing exten => s1,1,Playback(billing) exten => s1,n,GotoIf($["${CONTEXT}"="from-internal"]?USERCID:SETCID) exten => s1,n(USERCID),Macro(user-callerid,) exten => s1,n(SETCID),Set(CALLERID(name)=${CALLERIDNAME}) exten => s1,n(ID),Playback(pls-enter-account) exten => s1,n,Read(acct,then-press-pound) exten => s1,n,SayDigits(${acct}) exten => s1,n,Background(if-this-is-correct-press) exten => s1,n,SayDigits(1) exten => s1,n,Background(if-this-is-incorrect-press) exten => s1,n,SayDigits(2) exten => s1,n,Read(res,then-press-pound,) exten => s1,n,GotoIf($["${res}"="1"]?ACCT:ID) exten => s1,n(ACCT),Set(CALLERID(number)=${acct}) exten => s1,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID}) exten => s1,n,Queue(101|t|||300) exten => s1,n,Voicemail(u101) ; ;Technical Support exten => s2,1,Playback(techsupport) exten => s2,n,GotoIf($["${CONTEXT}"="from-internal"]?USERCID:SETCID) exten => s2,n(USERCID),Macro(user-callerid,) exten => s2,n(SETCID),Set(CALLERID(name)=${CALLERIDNAME}) exten => s2,n(ID),Playback(pls-enter-account) exten => s2,n,Read(acct,then-press-pound) exten => s2,n,SayDigits(${acct}) exten => s2,n,Background(if-this-is-correct-press) exten => s2,n,SayDigits(1) exten => s2,n,Background(if-this-is-incorrect-press) exten => s2,n,SayDigits(2) exten => s2,n,Read(res,then-press-pound,) exten => s2,n,GotoIf($["${res}"="1"]?ACCT:ID) exten => s2,n(ACCT),Set(CALLERID(number)=${acct}) exten => s2,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID}) exten => s2,n,Queue(102|t|||300) exten => s2,n,Voicemail(u102) ; ;------------------------------------ ; Says Time & plays Tone & Repeat's ;------------------------------------ [custom-time] ; repeates time. ; exten => s,1,ringing exten => s,2,Set(FutureTime=$[${EPOCH} + 8]) exten => s,3,Set(FutureTimeMod=$[${FutureTime} % 10]) exten => s,4,Set(FutureTime=$[${FutureTime} - ${FutureTimeMod}]) exten => s,5,Set(MaxConnectTime=$[${FutureTime} + 180]) exten => s,6,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) exten => s,7,GotoIf($["${FutureTimeMod}" < "0"]?10:8) exten => s,8,wait(1) exten => s,9,goto(6) exten => s,10,Answer exten => s,11,Set(FutureTime=$[${FutureTime} + 10]) exten => s,12,Set(FutureTimeMod=$[${FutureTime} % 60]) exten => s,13,wait(1) exten => s,14,playback(at-tone-time-exactly) exten => s,15,SayUnixTime(${FutureTime},,I) exten => s,16,SayUnixTime(${FutureTime},,M) exten => s,17,GotoIf($["${FutureTimeMod}" = "0"]?18:20) exten => s,18,SayUnixTime(${FutureTime},,p) exten => s,19,goto(23) exten => s,20,playback(and) exten => s,21,SayUnixTime(${FutureTime},,S) exten => s,22,playback(seconds) exten => s,23,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) exten => s,24,GotoIf($["${FutureTimeMod}" < "1"]?27:25) exten => s,25,wait(1) exten => s,26,goto(23) exten => s,27,playback(beep) exten => s,28,Set(FutureTimeMod=$[${MaxConnectTime} - ${EPOCH}]) exten => s,29,GotoIf($["${FutureTimeMod}" < "1"]?30:11) exten => s,30,Hangup ; ;------------------------------------------ ; Disa using voicemail passowords via agi ; Gives caller 3 treis then hangs up. ;------------------------------------------ [custom-disa] exten => s,1,Set(LOOPCOUNT=0) exten => s,n,Answer exten => s,n,Wait(1) exten => s,n(begin),Set(TIMEOUT(digit)=3) exten => s,n,Set(TIMEOUT(response)=10) exten => s,n,Playback(please-enter-the&extension) exten => s,n,Read(ext_num,then-press-pound,,) exten => s,n,Wait(1) exten => s,n,Playback(pls-enter-vm-password) exten => s,n,Read(ext_pwd,then-press-pound,,) exten => s,n,Wait(1) exten => s,n,agi,chk_vm_pwd.agi|/etc/asterisk/voicemail.conf|${ext_num}|${ext_pwd} exten => s,n,GotoIf($["${result}" = "0"]?D:custom-disa,i,1) exten => s,n,Set(CALLERIDNUM=${ext_num}) exten => s,n(D),DISA(no-password|from-internal) exten => h,1,Hangup exten => i,1,Playback(invalid) exten => i,n,Goto(loop,1) exten => t,1,Goto(loop,1) exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1) exten => loop,n,Goto(custom-disa,s,begin) exten => hang,1,Playback(vm-goodbye) exten => hang,n,Hangup ; ;------------------------------------------------------- ; Special announcement admin (Easy IVR) ;------------------------------------------------------- ; [custom-special-message] ; Record/replay/turn on/off the special message played before ACD queue calls exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,DigitTimeout(5) exten => s,n,BackGround(T-to-hear-cur-ancmnt) exten => s,n,BackGround(press-1) exten => s,n,BackGround(T-to-rec-ancmnt) exten => s,n,BackGround(press-2) exten => s,n,BackGround(T-to-enable-ancmnt) exten => s,n,BackGround(press-3) exten => s,n,BackGround(T-to-disable-ancmnt) exten => s,n,BackGround(press-4) ; exten => t,1,Playback(goodbye) exten => t,2,Hangup ; exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(s,4) ; exten => 1,1,Playback(special-message) exten => 1,2,Goto(s,4) ; exten => 2,1,Goto(special-message-record,s,1) ; exten => 3,1,Set($DB(SpecialMessage/1=1)}) exten => 3,n,Playback(enabled) exten => 3,n,Goto(s,4) ; exten => 4,1,DBdel(SpecialMessage/1) exten => 4,n,Playback(disabled) exten => 4,n,Goto(s,4) ; exten => *,1,Playback(goodbye) exten => *,2,Hangup ; [special-message-record] ; Record the new special message ; exten => s,1,Playback(vm-intro) exten => s,n,Record(new-special-message:wav) exten => s,n,Playback(beep) exten => s,n,BackGround(new-special-message) exten => s,n,BackGround(save-announce-press) exten => s,n,BackGround(digits/1) exten => s,n,BackGround(to-rerecord-announce) exten => s,n,BackGround(digits/2) ; exten => i,1,Playback(invalid) exten => i,n,Goto(s,3) ; exten => t,1,Goto(s,3) ; exten => 1,1,System(cp -f /var/lib/asterisk/sounds/new-special-message.wav /var/lib/asterisk/sounds/special-message.wav) exten => 1,n,Playback(your-msg-has-been-saved) exten => 1,n,Goto(app-special-message,s,1) ; exten => 2,1,Goto(s,1) ; exten => *,1,Goto(special-message,s,1) ; [macro-check-special-message] ; If the flag is set, play the special message, otherwise continue ; exten => s,1,Set(${DB(SpecialMessage=SpecialMessage/1)}) exten => s,2,Playback(system-status-msg) exten => s,3,Playback(special-message) exten => s,4,Ringing exten => s,5,Wait(4) exten => s,102,Noop ; ;------------------------------------------------------ ; Macro's for Handling Incoming Calls Section ;------------------------------------------------------ ; [macro-user-unavail] ; Used for exten without voicemail. exten => s,1,Playback(the-party-you-are-calling) exten => s,2,Playback(is-curntly-unavail) exten => s,3,Playback(pls-try-call-later) exten => s,4,Playback(goodbye) exten => s,5,Hangup ; [macro-caller-id] ;Checks the status of inbound CallerID and directs the call. exten => s,1,System(test "${CALLERIDNAME}" = "O") exten => s,2,GotoIf($[${CALLERIDNUM} = O]?3:102) exten => s,3,SetCallerIDName("No Caller ID") exten => s,4,Macro(no-callerid,s,1) ;Sends Callers with no id to no-callerid macro below. exten => s,102,Macro(std-exten,s,12) ;landing point with caller id ; [macro-no-callerid] exten => s,1,Answer exten => s,n,Playback(no-callerid&deactivate&redial) exten => s,n,Playback(vm-goodbye) exten => s,n,Congestion exten => s,n,Hangup ; ;--------------------------------------------------------- ;- Xmas Santa Line ;--------------------------------------------------------- [custom-santa-line] exten = s,1,Goto(app-xmas-record,s,1) exten = s0,1,Goto(app-xmas-playback,s,1) ; [app-xmas-record] exten = s,1,Ringing exten = s,2,Wait(4) exten = s,3,Answer exten = s,4,Playback(xmas2-welcome) exten = s,5,Set(${DB(MessageCount=xmas/${CALLERIDNUM})}) exten = s,6,Set(${DB(MessageCount=$[${MessageCount} + 1])}) exten = s,7,Set(${DB(xmas/${CALLERIDNUM}=${MessageCount})}) exten = s,8,Record(xmas/${CALLERIDNUM}-${MessageCount}:ulaw|10|60) exten = s,9,Playback(xmas2-done) exten = s,10,Hangup exten = s,106,Set(${DB(MessageCount=1)}) exten = s,107,Goto(s,7) ; [app-xmas-playback] exten = s,1,Ringing exten = s,2,Wait(4) exten = s,3,Answer exten = s,4,Set(${DB(MessageCount=xmas/${CALLERIDNUM})}) exten = s,5,Set(${DB(CurrentMessage=1)}) exten = s,6,Playback(xmas2-recorded) exten = s,7,Playback(xmas/${CALLERIDNUM}-${CurrentMessage}) exten = s,8,Set(${DB(CurrentMessage=$[${CurrentMessage} + 1])}) exten = s,9,GotoIf(${DB([${CurrentMessage} ${MessageCount}]?12:10)}) exten = s,10,Playback(beep) exten = s,11,Goto(s,7) exten = s,12,Playback(xmas2-goodbye) exten = s,13,Hangup exten = s,105,Playback(xmas2-notrecorded) exten = s,106,Hangup ; ;---------------------------------------------------------------- ; Make a wish Hotline for Special Kids in Need & Thier Families ;---------------------------------------------------------------- [custom-make-a-wish] exten = s,1,Goto(app-wish-record,s,1) exten = s0,1,Goto(app-wish-playback,s,1) ; [app-wish-record] exten = s,1,Ringing exten = s,2,Wait(4) exten = s,3,Answer exten = s,4,Playback(wish-welcome) exten = s,5,Set(${DB(MessageCount=wish/${CALLERIDNUM})}) exten = s,6,Set(${DB(MessageCount=$[${MessageCount} + 1])}) exten = s,7,Set(${DB(wish/${CALLERIDNUM}=${MessageCount})}) exten = s,8,Record(wish/${CALLERIDNUM}-${MessageCount}:ulaw|10|60) exten = s,9,Playback(wish-done) exten = s,10,Hangup exten = s,106,Set(${DB(MessageCount=1)}) exten = s,107,Goto(s,7) ; [app-wish-playback] exten = s,1,Ringing exten = s,2,Wait(4) exten = s,3,Answer exten = s,4,Set(${DB(MessageCount=wish/${CALLERIDNUM})}) exten = s,5,Set(${DB(CurrentMessage=1)}) exten = s,6,Playback(wish-recorded) exten = s,7,Playback(wish/${CALLERIDNUM}-${CurrentMessage}) exten = s,8,Set(${DB(CurrentMessage=$[${CurrentMessage} + 1])}) exten = s,9,GotoIf(${DB([${CurrentMessage} ${MessageCount}]?12:10)}) exten = s,10,Playback(beep) exten = s,11,Goto(s,7) exten = s,12,Playback(wish-goodbye) exten = s,13,Hangup exten = s,105,Playback(wish-notrecorded) exten = s,106,Hangup ; ;---------------- ;custome features ;---------------- ; [custom-not-assigned] exten => s,1,Playback(the-number-u-dialed,noanswer) exten => s,n,SayDigits(${ARG1}) exten => s,n,Playback(not-yet-assigned,noanswer) exten => s,n,Congestion exten => s,n,Macro(hangupcall) ; [dnd-bypass] exten => _*01XXXX,1,Dial(SIP/${ARG1}:2|20|r) ; 20sec timeout exten => _*01XXXX,2,Voicemail(u${ARG1}) exten => _*01XXXX,3,Macro(hangupcall) exten => _*01XXXX,102,Voicemail(b${ARG1}) exten => _*01XXXX,103,Macro(hangupcall) ; [custom-all-spy] exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,ChanSpy(SIP/,q) exten => s,n,Macro(hangupcall) ; [custom-line-spy] exten => s,1,BackGround(please-enter-the&extension) exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds exten => s,n,WaitExten(10) exten => _XXXX,1,ChanSpy(SIP/${EXTEN}|q) exten => i,1,PlayBack(bad) exten => i,2,PlayBack(extension) exten => i,3,Goto(s,1) ; [custom-jobs-postings] exten => s,1,Answer exten => s,n,Playback(current-job-postings) exten => s,n,System(/usr/local/bin/curl -s ) exten => s,n,Wait(1) exten => s,n,MP3Player(/tmp/.mp3) exten => s,n,System(rm /tmp/ .mp3 -f)