[macro-set-ring] exten => s,1,NoOp(${CHANNEL}) exten => s,2,Cut(TECH=CHANNEL,/,1) exten => s,3,GoToIf($["${TECH}" = "Zap"]?zap,1) exten => s,4,GoToIf($["${TECH}" = "SIP"]?sip,1) exten => zap,1,GoToIf($[${LEN(${CALLERIDNUM})} = 4]?zap,3) exten => zap,2,SetVar(CADENCE=r2) exten => zap,3,NoOp exten => sip,1,GoToIf($[${LEN(${CALLERIDNUM})} = 4]?sip,3) exten => sip,2,SetVar(ALERT_INFO=) exten => sip,3,NoOp [macro-number-changed] ; ; ARG1=new number ; exten => s,1,Zapateller(answer) exten => s,2,Playback(the-number-u-dialed) exten => s,3,Wait(.25) exten => s,4,Macro(say-digits,${MACRO_EXTEN}) exten => s,5,Wait(.25) exten => s,6,Playback(has-been-changed-to) exten => s,7,Wait(.25) exten => s,8,Macro(say-digits,${ARG1}) exten => s,9,Wait(.25) exten => s,10,Playback(pls-wait-connect-call) exten => s,11,Goto(extensions,${ARG1},1) [macro-number-disconnected] ; ; ARG1=number dialed ; exten => s,1,Zapateller(answer) exten => s,2,Wait(.25) exten => s,3,Playback(the-number-u-dialed) exten => s,4,Wait(.25) exten => s,5,Macro(say-digits,${MACRO_EXTEN}) exten => s,6,Wait(.25) exten => s,7,Playback(has-been-disconnected) exten => s,8,Playback(or) exten => s,9,Playback(no-longer-in-service) exten => s,10,Wait(.25) exten => s,11,Playback(no-info-about-number) exten => s,12,Wait(3) exten => s,13,Zapateller(answer) exten => s,14,Wait(.25) exten => s,15,Playback(the-number-u-dialed) exten => s,16,Wait(.25) exten => s,17,Macro(say-digits,${MACRO_EXTEN}) exten => s,18,Wait(.25) exten => s,19,Playback(has-been-disconnected) exten => s,20,Playback(or) exten => s,21,Playback(no-longer-in-service) exten => s,22,Wait(.25) exten => s,23,Playback(no-info-about-number) exten => s,24,Wait(3) exten => s,25,Congestion [macro-say-digits] ; ; ARG1=number to say ; exten => s,1,GoToIf($[${LEN(${ARG1})} != 10]?s,3) exten => s,2,SayDigits(${ARG1:0:3}) exten => s,3,GoToIf($[${LEN(${ARG1})} != 10]?s,6) exten => s,4,Wait(.25) exten => s,5,SayDigits(${ARG1:3:3}) exten => s,6,GoToIf($[${LEN(${ARG1})} != 10]?s,10) exten => s,7,Wait(.25) exten => s,8,SayDigits(${ARG1:6}) exten => s,9,GoTo(s,12) exten => s,10,Wait(.25) exten => s,11,SayDigits(${ARG1}) exten => s,12,NoOp [macro-dial-result] ; ; Handle Disconnect Cause Codes ; exten => s,1,NoOp(HANGUPCAUSE is ${HANGUPCAUSE}) exten => s,2,AbsoluteTimeout(120) exten => s,3,Goto(${HANGUPCAUSE},1) exten => 0,1,NoOp(AST_CAUSE_NOTDEFINED) exten => 0,2,GoToIf($["${SAVED_EXTEN}" != ""]?0,4) exten => 0,3,SetVar(SAVED_EXTEN=${MACRO_EXTEN}) exten => 0,4,GoToIf($["${SAVED_ARG1}" != ""]?0,6) exten => 0,5,SetVar(SAVED_ARG1=${ARG1}) exten => 0,6,GoToIf($["${ARG1}" = ""]?0,11) exten => 0,7,System(/bin/echo AST_CAUSE_NOTDEFINED received when dialing ${SAVED_EXTEN}. Trying again using ${SAVED_ARG1}. | /usr/bin/mutt -s "WAVELAND PBX ERROR" pbxadmin-pager@stirlingprop.com) exten => 0,8,SetVar(ARG1=) exten => 0,9,Dial(${SAVED_ARG1}) exten => 0,10,Macro(dial-result) exten => 0,11,System(/bin/echo AST_CAUSE_NOTDEFINED received when dialing ${SAVED_ARG1}. Giving up. | /usr/bin/mutt -s "WAVELAND PBX ERROR" pbxadmin-pager@stirlingprop.com) exten => 0,12,Zapateller(answer) exten => 0,13,Playback(an-error-has-occured) exten => 0,14,Playback(pls-try-call-later) exten => 0,15,Wait(3) exten => 0,16,Zapateller(answer) exten => 0,17,Playback(an-error-has-occured) exten => 0,18,Playback(pls-try-call-later) exten => 0,19,Wait(3) exten => 0,20,Congestion exten => 1,1,NoOp(AST_CAUSE_NORMAL) exten => 2,1,NoOp(AST_CAUSE_BUSY) exten => 2,2,Busy exten => 3,1,NoOp(AST_CAUSE_FAILURE) exten => 3,2,Zapateller(answer) exten => 3,3,Playback(discon-or-out-of-service) exten => 3,4,Wait(3) exten => 3,5,Zapateller(answer) exten => 3,6,Playback(discon-or-out-of-service) exten => 3,7,Wait(3) exten => 3,8,Congestion exten => 4,1,NoOp(AST_CAUSE_CONGESTION) exten => 4,2,Zapateller(answer) exten => 4,3,Playback(all-circuits-busy-now) exten => 4,4,Playback(pls-try-call-later) exten => 4,5,Wait(3) exten => 4,6,Zapateller(answer) exten => 4,7,Playback(all-circuits-busy-now) exten => 4,8,Playback(pls-try-call-later) exten => 4,9,Wait(3) exten => 4,10,Congestion exten => 5,1,NoOp(AST_CAUSE_UNALLOCATED) exten => 5,2,Macro(number-disconnected,${MACRO_EXTEN}) exten => _X,1,NoOp(UNKNOWN_CAUSECODE) exten => _X,2,Zapateller(answer) exten => _X,3,Playback(an-error-has-occured) exten => _X,4,Wait(1) exten => _X,5,Zapateller(answer) exten => _X,6,Playback(an-error-has-occured) exten => _X,7,Wait(1) exten => _X,8,Congestion [macro-callerid-fixup] ; ; This macro assumes the following: ; Extensions without a DID number have their CallerID number set to their 4 digit extension ; Extensions with a DID number have their CallerID number set to their 10 digit DID ; The last 4 digits of a DID number is the same as the extension number ; ; This macro does the following if it is called without any parameters: ; If the Caller*ID number is 4 digits, do nothing ; If the Caller*ID number is not 4 digits, strip off the first 6 digits ; ; This macro does the following if it is called with a parameter ; If the Caller*ID number is 4 digits, reset the Caller*ID number to be the value of the parameter ; If the Caller*ID number is not 4 digits, do nothing ; exten => s,1,NoOp(Original Caller*ID: ${CALLERIDNUM}) exten => s,2,GoToIf($["${ARG1}" != ""]?ext,1) exten => s,3,GoToIf($["${ARG1}" = ""]?int,1) exten => int,1,GoTof($[${LEN(${CALLERIDNUM})} = 4]?int,4) exten => int,2,SetCIDNum(${CALLERIDNUM:6}) exten => int,3,NoOp(New Caller*ID: ${CALLERIDNUM}) exten => int,4,NoOp exten => ext,1,GoToIf($[${LEN(${CALLERIDNUM})} != 4]?ext,4) exten => ext,2,SetCIDNum(${ARG1},a) exten => ext,3,NoOp(New Caller*ID: ${CALLERIDNUM}) exten => ext,4,NoOp