rendered paste body[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)