All pastes #57229 Raw Edit

Stuff

public text v1 · immutable
#57229 ·published 2006-05-20 00:06 UTC
rendered paste body
; This file contains example extensions_custom.conf entries.
; extensions_custom.conf should be used to include customizations
; to FreePBX Asterisk dialplan.

; All custom context should contain the string 'custom' in it's name 

; Extensions in AMP have access to the 'from-internal' context.
; The context 'from-internal-custom' is included in 'from-internal' by default

[ext-did-custom]
; this will allow calls to be routed by the ZAP channel they come in on.
; example a call comming in on ZAP cahnnel 1 will have Zap1 for it's DID.

;exten => s,2,GotoIf($["${CHANNEL:0:3}" = "Zap"]?ext-did|Zap${CHANNEL:4:1}|1) 

[from-internal-custom]

exten => *111,1,Goto(custom-queue-acct,s,1)				
exten => *999,1,Goto(custom-disa,s,1)
exten => #999,1,Goto(custom-queue-acct,s,1)

exten => _**.,1,Pickup(${EXTEN:2}) ; GXP-2000 phone press BLF to pick up ringing call

exten => *60,1,ringing 
exten => *60,2,Set(FutureTime=$[${EPOCH} + 8]) 
exten => *60,3,Set(FutureTimeMod=$[${FutureTime} % 10]) 
exten => *60,4,Set(FutureTime=$[${FutureTime} - ${FutureTimeMod}]) ;180 in next line is max # seconds connection can be held open. Use multiples of 10. 
exten => *60,5,Set(MaxConnectTime=$[${FutureTime} + 180]) 
exten => *60,6,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) 
exten => *60,7,GotoIf($["${FutureTimeMod}" < "0"]?10:8) 
exten => *60,8,wait(1) 
exten => *60,9,goto(6) 
exten => *60,10,Answer 
exten => *60,11,Set(FutureTime=$[${FutureTime} + 10]) 
exten => *60,12,Set(FutureTimeMod=$[${FutureTime} % 60]) 
exten => *60,13,wait(1) 
exten => *60,14,playback(at-tone-time-exactly) 
exten => *60,15,SayUnixTime(${FutureTime},,I) 
exten => *60,16,SayUnixTime(${FutureTime},,M) 
exten => *60,17,GotoIf($["${FutureTimeMod}" = "0"]?18:20) 
exten => *60,18,SayUnixTime(${FutureTime},,p) 
exten => *60,19,goto(23) 
exten => *60,20,playback(and) 
exten => *60,21,SayUnixTime(${FutureTime},,S) 
exten => *60,22,playback(seconds) 
exten => *60,23,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) 
exten => *60,24,GotoIf($["${FutureTimeMod}" < "1"]?27:25) 
exten => *60,25,wait(1) 
exten => *60,26,goto(23) 
exten => *60,27,playback(beep) 
exten => *60,28,Set(FutureTimeMod=$[${MaxConnectTime} - ${EPOCH}]) 
exten => *60,29,GotoIf($["${FutureTimeMod}" < "1"]?30:11) 
exten => *60,30,Hangup
 
;Stuff I added for line testing.

; *1 - System Status
exten => *1,1,Playback(/var/lib/asterisk/sounds/custom/systemstatus) 
exten => *1,n,Wait(.5) 
exten => *1,n,Hangup
; **1 - System status record
exten => **1,1,Answer 
exten => **1,n,Wait(2) 
exten => **1,n,Record(/var/lib/sounds/custom/systemstatus:gsm) 
exten => **1,n,Wait(2) 
exten => **1,n,Playback(/var/lib/asterisk/sounds/custom/systemstatus) 
exten => **1,n,Wait(2) 
exten => **1,n,Hangup

; *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

; *5 - Milliwatt Tone
exten => *5,1,Answer
exten => *5,n,Milliwatt
exten => *5,n,Hangup

; *7 - Music On Hold 
exten => *7,1,Answer
exten => *7,n,MusicOnHold(default)

; *9 - weather
exten => *9,1,Answer
exten => *9,2,AGI(weather.agi)
exten => *9,3,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
;External-411
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
;Internal-411
exten => #411,1,Wait(1)
exten => #411,n,AGI(directory,$/{DIR-CONTEXT/},ext-local,$/{DIRECTORY:0:1/}$/{DIRECTORY_OPTS/}o)
exten => #411,n,Playback(vm-goodbye)
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) ; play the office we are closed message 
exten => 611,n,Playback(office-hours) ; play the open hours message 
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)
exten => 611,n,Playback(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(104|t|||300)
exten => 611,n,Goto(611,VM)


; 711 - State Relay TTY/TDD/Voice Service
exten => 711,1,Macro(user-callerid,)
;exten => 711,n,Dial(SIP/${EXTEN})
;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-fax]
exten => s,1,Goto(ext-fax,in_fax,1)

; Disa using voicemail passowords via agi
[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

[custom-queue-acct]
exten => s,1,Answer
exten => s,n,GotoIf($["${CONTEXT}"="from-internal"]?USERCID:SETCID)
exten => s,n(USERCID),Macro(user-callerid,)
exten => s,n(SETCID),Set(CALLERID(name)=${CALLERIDNAME})
exten => s,n(ID),Playback(pls-enter-account)
exten => s,n,Read(acct,then-press-pound)
exten => s,n,SayDigits(${acct})
exten => s,n,Background(if-correct-press)
exten => s,n,SayDigits(1)
exten => s,n,Background(if-incorrect-press)
exten => s,n,SayDigits(2)
exten => s,n,Read(res,then-press-pound,)
exten => s,n,GotoIf($["${res}"="1"]?ACCT:ID)
exten => s,n(ACCT),Set(CALLERID(number)=${acct})
exten => s,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID})
exten => s,n,Queue(100|t|||300)
exten => s,n,Voicemail(u100)

;-------------------------------------------------------
; 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