All pastes #15157 Raw Edit

darwin

public text v1 · immutable
#15157 ·published 2005-06-20 22:18 UTC
rendered paste body
;####################################################################
;#                 Begining of Extensions Config File               #
;####################################################################
;
;########################################################
;# Basic exten nmbrs in the US + Canada
;########################################################
; *00 - Inward Voice Activated Services (English)  
; *01 - Inward Voice Activated Services (French)  Canada
; *02 - Deactivation/Activation of In-Session Activation (ISA) on a per line basis  
; *03 - Deactivation of In-Session Activation (ISA) on a per call basis  
; *2X - Reserved for expansion to 3digit VSCs  
; *228 - Over-the-Air Service Provisioning  
; *272 - Access Wireless Priority Service  
; *3X - Reserved for expansion to 3-digit VSCs  
; *40 - Change Forward-To Number for Customer Programmable Call Forwarding Busy Line  
; *41 - Six-Way Conference Calling Activation  
; *42 - Change Forward-To Number for Customer Programmable Call Forwarding Don't Answer  
; *43 - Drop last member of Six-Way Conference Call  
; *44 - Voice Activated Dialing  
; *45 - Voice Dialing Extended Dial Tone  
; *46 - French Voice Activated Network Control  Canada
; *47 - Override Feature Authorization  
; *48 - Override Do Not Disturb  
; *49 - Long Distance Signal  
; *50 - Voice Activated Network Control  
; *51 - Who Called Me?  
; *52 - Single Line Variety Package (SVP) - Call Hold  
; *53 - Single Line Variety Package (SVP) - Distinctive Ring B  
; *54 - Single Line Variety Package (SVP) - Distinctive Ring C  
; *55 - Single Line Variety Package (SVP) - Distinctive Ring D  
; *56 - Change Forward-To Number for ISDN Call Forwarding  
; *57 - Customer Originated Trace  
; *58 - ISDN MBKS Manual Exclusion Activation  
; *59 - ISDN MBKS Manual Exclusion Deactivation  
; *60 - Selective Call Rejection Activation  
; *61 - Distinctive Ringing/Call Waiting Activation  
; *62 - Selective Call Waiting  
; *63 - Selective Call Forwarding Activation  
; *64 - Selective Call Acceptance Activation  
; *65 - Calling Number Delivery Activation  
; *66 - Automatic Callback Activation  
; *67 - Calling Number Delivery Blocking  
; *68 - Call Forwarding Busy Line/Don't Answer Activation  
; *69 - Automatic Recall Activation  
; *70 - Cancel Call Waiting  
; *71 - Usage Sensitive Three-way Calling  
; *72 - Call Forwarding Activation  
; *73 - Call Forwarding Deactivation  
; *74 - Speed Calling 8 - Change List  
; *75 - Speed Calling 30 - Change List  
; *76 - Advanced Call Waiting Deluxe 
; *77 - Anonymous Call Rejection Activation  
; *78 - Do Not Disturb Activation  
; *79 - Do Not Disturb Deactivation  
; *80 - Selective Call Rejection Deactivation  
; *81 - Distinctive Ringing/Call Waiting Deactivation  
; *82 - Line Blocking Deactivation  
; *83 - Selective Call Forwarding Deactivation  
; *84 - Selective Call Acceptance Deactivation  
; *85 - Calling Number Delivery Deactivation  
; *86 - Automatic Callback Deactivation  
; *87 - Anonymous Call Rejection Deactivation  
; *88 - Call Forwarding Busy Line/Don't Answer Deactivation  
; *89 - Automatic Recall Deactivation  
; *90 - Customer Programmable Call Forwarding Busy Line Activation  
; *91 - Customer Programmable Call Forwarding Busy Line Deactivation  
; *92 - Customer Programmable Call Forwarding Don't Answer Activation  
; *93 - Customer Programmable Call Forwarding Don't Answer Deactivation  
; *94 - Reserved For Local Assignment  
; *95 - Reserved For Local Assignment  
; *96 - Reserved For Local Assignment  
; *97  - Reserved For Local Assignment  
; *98 - Reserved For Local Assignment  
; *99 - Reserved For Local Assignment  
; ############################################################################
; Magic Extensions to be used within a context
; ############################################################################
; s = start
; t = This gets jumped to on timeout waiting for keypress
; i = This gets jumped to on an invalid extension
; h = This gets jumped to when a call in a given context is hung up
; fax = This gets jumped to on fax tone detection
; ############################################################################
; Dial Options
; ############################################################################
; Dial jumps to priority n+101 on busy if n+101 exists
; 't' -- Allow the user to dial # then an extension to transfer
; 'T' -- to allow the calling user to transfer the call.
; 'r' -- indicate ringing to the calling party, pass no audio until answer.
; 'm' -- provide hold music to the calling party until answered.
; 'd' -- data-quality (modem) call (minimum delay).
; 'c' -- clear-channel data call (PRI-PRI only).
; 'H' -- allow caller to hang up by hitting *.
; 'C' -- reset call detail record for this call.
; 'P[(x)]' -- privacy mode, using 'x' as database if provided.
; 'g' -- goes on in context if the destination channel hangs up
; #######################################################
; Zaptel Acceptable Dial Strings
; #######################################################
;
; Digits  0 - 9
; Symbols # *
; Wait    W
;
; Ranges:
; Apps      : *XX
; Corp Exten:10 - 40
; Extensions:1000 - 8500 not currently mapped
; Test Tools:900 - 909
; Call Park :700,701 - 709
; Meetme    :8505 - 8507
; ACD       :
;

;##############################################################
[general]
static=yes
writeprotect=yes
;
[globals]
CONSOLE=Console/dsp
;
;Sip/Voip Provider - This is you DID Provider Like Broadvoice or Voice Pulse
LINE=
USERID=
COMPANY=
PROTOCOL=
;
COMPANYNAME=Company Name Here  ; Your Comapny Name here
;
;SipPhone.com user info
SIPLINE=                    ;your SipPhone.com Number Here
SIPUSERID=                  ;Your User ID here
SIPPASS=                    ;Your Password here
;
;IAXTEL user info
IAXLINE=
IAXTELUSER=
IAXTELPASS=
;
;#####################################
;# Used for rollover
;#####################################
;
;your Hard Line Phone NMbr
ZAPLINENMBR1=           
ZAPLINENMBR2= 
ZAPLINENMBR3= 
ZAPLINENMBR4= 
;
;Sip Out-bound Dialing Rollover
;SIPLINE1=
;SIPLINE2=
;SIPLINE3=
;SIPLINE4=
;
;Zap Out-Bound Dialing Rollover
;LINE1=zap1
;LINE2=zap2
;LINE3=zap3
;LINE4=zap4
;
CALLFILENAME=foo
FOO=foo
;
;####################################################################
;#inbound call mapping
;####################################################################
;
[inbound]
;Extensions with Voicemail
exten => s,1,Macro(exten-vm,${EXTEN},${VM_DELAY})
;
; Extensions with no voicemail
exten => s,1,Macro(exten-novm,${EXTEN},${NO_VM_TIMEOUT})
;
;This Exten Goes to Automated attendant after putting caller ID into the Database
exten => s,1,Set(Last/Caller=${CALLERIDNUM})
exten => s,2,Goto(autoattend,s,1)
;
;This exten Dial your ZAP lines it goe from here to all-exten to 
exten => s2,1,dbput(Last/Caller=${CALLERIDNUM})
exten => s2,2,Dial(ZAP1,s,1) ;replace # with exten nmbr.
;
;####################################################################
;# Sip outbound mapping
;####################################################################
;

[broadvoice]
;US LD & Canada
exten => _NXXNXXXXXX,1,SetCallerID(${LINE})
exten => _NXXNXXXXXX,2,SetCIDName(${COMPANYNAME})
exten => _NXXNXXXXXX,3,Dial(${PROTOCOL}/${EXTEN}@${COMPANY})
exten => _NXXNXXXXXX,4,Congestion
exten => _NXXNXXXXXX,5,Hangup
;
; International
exten => _011NXXNXXXXXX,1,SetCallerID(${LINE})
exten => _011NXXNXXXXXX,2,SetCIDName(${COMPANY})
exten => _011NXXNXXXXXX,3,Dial(SIP/${EXTEN}@sip.broadvoice.com)
exten => _011NXXNXXXXXX,4,Congestion
exten => _011NXXNXXXXXX,5,Hangup
;
[iaxtel]
exten => _1700NXXXXXX,1,SetCallerID(${IAXLINE})
exten => _1700NXXXXXX,2,SetCIDName(${COMPANYNAME})
exten => _1700NXXXXXX,3,Dial(IAX2/${IAXTELUSER}:{IAXTELPASS}@iaxtel.com/${EXTEN}@iaxtel)
exten => _1700NXXXXXX,4,Congestion
exten => _1700NXXXXXX,5,Hangup
;
[sipphone]
;exten => _1747NXXXXXX,1,SetCallerID(${SIPLINE})
;exten => _1747NXXXXXX,2,Dial(SIP/${EXTEN:1}@sipphone)
;exten => _1747NXXXXXX,3,Playback(invalid)
;exten => _1747NXXXXXX,4,Congestion
;exten => _1747NXXXXXX,5,Hangup
;
;#################################################################
;#zap outbound mapping
;#################################################################
;
;ignorepat => 9
;
[zap1]
exten => _NXXXXXX,1,SetCallerID(${ZAPLINE})
exten => _NXXXXXX,2,Dial(Zap1/${EXTEN})
exten => _NXXXXXX,3,Playback(invalid)
exten => _NXXXXXX,4,Congestion
exten => _NXXXXXX,5,Hangup
;
exten => _1NXXNXXXXXX,1,SetCallerID(${ZAPLINE})
exten => _1NXXNXXXXXX,2,Dial(Zap1/${EXTEN})
exten => _1NXXNXXXXXX,3,Playback(invalid)
exten => _1NXXNXXXXXX,4,Congestion
exten => _1NXXNXXXXXX,5,Hangup
;
;#######################################################
;# Blocking 1-900 Calls and 976 Calls   	       #
;#######################################################
;
[blocked]
exten => _900NXXXXXX,1,Playback(ss-noservice)
exten => _NXX976XXXX,1,Playback(ss-noservice)
;
;#######################################################
;# outbound-emerg = 911 Calls Forth comming            #
;# outbout-info = Directory  Assistant's 411           #
;# outbout-repart = In-House Telco Repair Tech Line    #
;#######################################################
;
[paging-211]
exten => 211,1,Dial(console/dsp)
exten => 211,2,Answer
exten => 211,3,Wait(1)
exten => 211,4,Playback(touchtone1)
exten => 211,5,Playback(touchtone1)
exten => 211,6,Playback(touchtone1)
exten => 211,7,Wait(1)
exten => 211,8,Hangup
;
[non-emerg-311] ; not yet setup for e911 Non Emerg
exten => 311,1,Dial(SIP/${EXTEN})
exten => 311,2,Congestion
exten => 311,102,Playback(ss-noservice)
exten => 311,103,Congestion
;
[info-411]
exten => 411,1,Dial(SIP/411@sip.broadvoice.com)
exten => 411,2,hangup
;
[callwake-511]
exten => 511,1,Answer
exten => 511,2,Wait(1)
exten => 511,3,AGI(callback.agi)
exten => 511,4,Wait(1)
exten => 511,5,Hangup
;
[repair-611] ; this dials broadvoice .
exten => 611,1,Dial(SIP/${EXTEN})
exten => 611,2,Hangup
;
[emerg-911] ; not yet setup for e911
exten => 911,1,Dial(SIP/${EXTEN})
exten => 911,2,Congestion
exten => 911,102,Playback(no-911-1)
exten => 911,103,Congestion
;
;########################################################
;#   Voice Mail Access  8500  and 8501
;#######################################################
;
[internal-vm]
exten => 8500,1,VoicemailMain
exten => 8500,2,Hangup
;
exten => 8501,1,VoicemailMain(${CALLERIDNUM})
exten => 8501,2,Hangup
;
;########################################################
;#   Inturnal and Extenal Meet-Me Conference Rooms
;#   860[ Internal Conference Room
;#   8601 Extenal  Conference Room
;########################################################
;
[internal-conf]
exten => _850[5-6],1,Answer
exten => _850[5-6],2,Wait(1)
exten => _850[5-6],3,Macro(meet,${EXTEN})
;
[external-conf]
exten => _850[7-8],1,Answer
exten => _850[7-8],2,Wait(1)
exten => _850[7-8],3,Macro(meet,${EXTEN})
;
;########################################################
;#
;#   Auto attendant configuration
;#
;# Also included is  autoattendant when we aren't open
;########################################################
;
[default]
include => autoattend
;
[autoattend]
include => selection
include => all-exten
include => pbx-2-pbx
;
include => night|00:00-23:59|sun|*|* ; closed sundays
include => night|16:01-23:59|sat|*|* ; closed
include => night|00:00-08:59|sat|*|* ; closed before sat opens
include => night|00:00-07:59|mon-fri|*|* ; closed
include => night|18:01-23:59|mon-fri|*|* ; closed
include => day|08:00-18:00|mon-fri|*|* ; OPEN w00t!
include => day|09:00-16:00|sat|*|* ; OPEN w00t!
;
[day]
exten => s,1,Wait,2
exten => s,2,Answer
exten => s,3,Background,day-msg
exten => s,4,DigitTimeout,5
exten => s,5,ResponseTimeout,10
;
[night]
exten => s,1,Wait,2
exten => s,2,Answer
exten => s,3,Background,night-msg
exten => s,4,DigitTimeout,5
exten => s,5,ResponseTimeout,10
;
;#######################################################
;# Agent Selections
;#######################################################
;
[selection]
;
;1.sales Dept
exten => 1,1,Playback,sales-hold
exten => 1,2,SetMusicOnHold,default
exten => 1,3,SetCallerID,1
exten => 1,4,SetCIDName,Sales
exten => 1,5,Goto,callqueue|200|1
;
;2.Tech Support Dept
exten => 2,1,Playback,techsupport-hold
exten => 2,2,SetMusicOnHold,default
exten => 2,3,SetCallerID,2
exten => 2,4,SetCIDName,TechSupport
exten => 2,5,Goto,callqueue|201|1
;
;3.Billing Dept
exten => 3,1,Playback,billing-hold
exten => 3,2,SetMusicOnHold,default
exten => 3,3,SetCallerID,3
exten => 3,4,SetMusicOnHold,default
exten => 3,5,Goto,callqueue|202|1
;
;4.System Status
exten => 4,1,Playback,systemstatus
exten => 4,2,Hangup
;
;5
exten => 5,1,Background,stafflisting
;
;6
exten => 6,1,Playback,vm-goodbye
exten => 6,2,Hangup
;
;7
exten => 7,1,Playback,vm-goodbye
exten => 7,2,Hangup
;
;8 Fax Extension
exten => 8,1,SetVar(CALLEDFAX=${EXTEN})
exten => 8,2,Answer
exten => 8,3,Goto(fax,${EXTEN},1)
;
;9
exten => 9,1,Playback,vm-goodbye
exten => 9,2,Hangup
;
;0
exten => 0,1,Playback,vm-goodbye
exten => 0,2,Hangup
;
;#####################################
;#  Call Queue's
;# 200-299
;#####################################
;
[queues]
;1.Sales
exten => 200,1,Answer
exten => 200,2,Queue(sales|TtH)
exten => 200,3,WaitMusicOnHold(45)
exten => 200,4,Voicemail(u200)
exten => 200,5,Playback(vm-goodbye)
exten => 200,6,Hangup
;
;2.Tech Support
exten => 201,1,Answer
exten => 201,2,Queue(techsupport|TtH)
exten => 201,3,WaitMusicOnHold(45)
exten => 201,4,Voicemail(u201)
exten => 201,5,Playback(vm-goodbye)
exten => 201,6,Hangup
;
;3.Billing
exten => 202,1,Answer
exten => 202,2,Queue(billing|TtH)
exten => 202,3,WaitMusicOnHold(45)
exten => 202,4,Voicemail(u202)
exten => 202,5,Playback(vm-goodbye)
exten => 202,6,Hangup
;
;#####################################################
;# Put call in the queue for the next available agent.
;#####################################################
[tranfer-queue]
exten => *93,1,Answer
exten => *93,2,Wait,1
exten => *93,3,Queue(sales)
exten => *93,5,Hangup
;
exten => *94,1,Answer
exten => *94,2,Wait,1
exten => *94,3,Queue(techsupport)
exten => *94,5,Hangup
;
exten => *95,1,Answer
exten => *95,2,Wait,1
exten => *95,3,Queue(billing)
exten => *95,5,Hangup
;
[rec-prompt] ; used to record generic prompts
exten => *96,1,Answer
exten => *96,2,Wait(2)
exten => *96,3,Record(/tmp/generic:gsm)
exten => *96,4,Wait(2)
exten => *96,5,Playback(/tmp/generic)
exten => *96,6,Wait(2)
exten => *96,7,Hangup
;
;########################################################
;# Queue Agents Login
;#######################################################
;# 1.Sales	  Turn on=100  Turn off=101
;# 2.Tech Support Turn on=102  Turn off=103
;# 3.Billing      Turn on=104  Turn off=105
;# 4 other queues Turn on=XXX  Turn off=XXX
;########################################################
;
[agentlogin]
;1.Sales
exten => 100,1,AddQueueMember(sales|SIP/${CALLERIDNUM})
exten => 100,2,Playback(agent-loginok)
exten => 100,3,Hangup
exten => 101,1,RemoveQueueMember(sales|SIP/${CALLERIDNUM})
exten => 101,2,Playback(agent-loggedoff)
exten => 101,3,Hangup
;
;2.Tech Support
exten => 102,1,AddQueueMember(techsupport|SIP/${CALLERIDNUM})
exten => 102,2,Playback(agent-loginok)
exten => 102,3,Hangup
exten => 103,1,RemoveQueueMember(techsupport|SIP/${CALLERIDNUM})
exten => 103,2,Playback(agent-loggedoff)
exten => 103,3,Hangup
;
;3.Billing
exten => 104,1,AddQueueMember(billing|SIP/${CALLERIDNUM})
exten => 104,2,Playback(agent-loginok)
exten => 104,3,Hangup
exten => 105,1,RemoveQueueMember(billing|SIP/${CALLERIDNUM})
exten => 105,2,Playback(agent-loggedoff)
exten => 105,3,Hangup
;
; Login and wait for calls while offhook.  When calls arrive, you will he
; a beeping tone and the caller will join automatically
[offhook]
exten => *99,1,Answer
exten => *99,2,SetMusicOnHold(default)
exten => *99,3,Wait,1
exten => *99,4,AgentLogin
;
;########################################################
;#   Scripted Functions
;########################################################
{scripted]
;fax
exten => s,1,Macro(faxreceive)
exten => h,1,System(/usr/local/share/asterisk/scripts/fax,sh "${CALLERIDNUM}" "${CALLEDFAX}" "${EXTNAME}" "${EXTEMAIL}" "${FAXFILE}" "${EXTCOMPANY}")
;
;Dial inword System Remote Access
exten => 99,1,DISA,1234|admin ; replace #### with your nmbrs
;
;directory ; not setup yet
exten => *,1,Directory,default
exten => *,2,Goto,s|1
;
;disconnect
;exten => #,1,Playback,(vm-goodbye)
;exten => #,2,Hangup
;
;calltrace
; We can't have our timeouts or dial digits collide with other applications
; or extensions, so we build the app in pieces
exten => *69,1,Cut(CHANRES=CHANNEL|-|1)
exten => *69,2,Cut(EXTENSION=CHANRES|/|2)
exten => *69,3,Macro(calltrace,${EXTENSION})
;
;callforward
;Turn Off
exten => *70,1,Set(${DB(CF/${CALLERIDNUM})})
exten => *70,2,Answer
exten => *70,3,Wait(1)
exten => *70,4,Playback(call-fwd-cancelled)
exten => *70,5,Hangup
;Turn On
exten => _*71.,1,Set(${DB(CF/${CALLERIDNUM}=${EXTEN:3})})
exten => _*71.,2,Answer
exten => _*71.,3,Wait(1)
exten => _*71.,4,Playback(call-fwd-unconditional)
exten => _*71.,5,Playback(for)
exten => _*71.,6,Playback(extension)
exten => _*71.,7,SayDigits(${CALLERIDNUM})
exten => _*71.,8,Playback(is-set-to)
exten => _*71.,9,SayDigits(${EXTEN:3})
exten => _*71.,10,Hangup
;
;callwaiting
exten => *73,1,DBdel(CW/${CALLERIDNUM})
exten => *73,2,Playback(de-activated)
exten => *73,3,Hangup
exten => *74,1,Set(${DB(CW/${CALLERIDNUM}=YES)})
exten => *74,2,Playback(activated)
exten => *74,3,Hangup
;
;dnd
; Do not disturb - *78 to enable, *79 to disable
exten = *78,1,Answer
exten = *78,2,Set(${DB(DND/${CALLERIDNUM}=1)})
exten = *78,3,Wait(1)
exten = *78,4,Playback(do-not-disturb)
exten = *78,5,Playback(activated)
exten = *78,6,Hangup
exten = *79,1,Answer
exten = *79,2,Set(${DB(DND/${CALLERIDNUM})})
exten = *79,3,Wait(1)
exten = *79,4,Playback(do-not-disturb)
exten = *79,5,Playback(de-activated)
exten = *79,6,Hangup
;
;pbx-transfer
exten => *75,1,Playback,pbx-transfer
exten => *75,2,Set($DB(temp=SIP/${ARG1})})
exten => *75,3,Goto(all-exten,${temp}|1)
exten => *75,103,Goto(s|4)
exten => *75,4,Set(${DB(dnd=DND/${ARG1})})
exten => *75,5,Goto(s|7)
exten => *75,105,Goto(s|6)
exten => *75,6,Dial(SIP/${ARG1},60,tr)
exten => *75,7,Hangup
exten => *75,107,Hangup
;
;rec-prompt ; used to record generic prompts
exten => *96,1,Answer
exten => *96,2,Wait(2)
exten => *96,3,Record(/tmp/generic:gsm)
exten => *96,4,Wait(2)
exten => *96,5,Playback(/tmp/generic)
exten => *96,6,Wait(2)
exten => *96,7,Hangup
;
;system-stat ;use to record system status
exten => *97,1,Answer
exten => *97,2,Wait(2)
exten => *97,3,Record(/usr/local/share/sounds/systemstatus:gsm)
exten => *97,4,Wait(2)
exten => *97,5,Playback(/usr/local/share/asterisk/sounds/systemstatus)
exten => *97,6,Wait(2)
exten => *97,7,Hangup
;
;blind-parking
exten => _70X,1,Answer
exten => _70X,2,Wait(1)
exten => _70X,3,ParkAndAnnounce(pbx-transfer:PARKED|7200|SIP/${EXTEN:1}|default,${EXTEN:1},1)
;
;parkedcalls;
exten => 700,1,Answer
exten => 700,2,SetMusicOnHold(default)
exten => 700,3,ParkAndAnnounce(PARKED,60,SIP/${ARG1},70,4)
exten => 700,4,Macro(rg-inbound,20,tr)
exten => 700,5,Goto(aa-nooneavail,s,1)
exten => _70X[1-9],1,ParkedCall(${EXTEN})
;
;
[stream]
; Conference Room
exten => 760,1,Answer
exten => 760,2,Wait(1)
exten => 760,3,MeetMe(8508)
;
; Music On Hold
exten => 761,1,Answer
exten => 761,2,Wait(1)
exten => 761,3,MusicOnHold(default)
; Stream
exten => 762,1,Answer
exten => 762,2,Wait(1)
exten => 762,3,Ices(/usr/local/etc/asterisk/asterisk-ices.xml)
;
;#########################################################
;#
;# enum lookup serveice
;#
;#########################################################
[Enum164e]
; Home telephone from E164.org lookup
exten => 15552556690,1,Dial(${HOMEPHONES},20)
exten => 15552556690,2,Voicemail2(u44)
exten => 15552556690,3,HangUp
;
; Business Line from E164.org lookup
exten => 15552553925,1,Dial(${WORKPHONES},20)
exten => 15552553925,2,Voicemail(u21)
exten => 15552553925,3,HangUp
;
[internal]
exten => _XXXNXXXXXX,1,Macro(enum-call,localcall,1${EXTEN})
exten => _1604NXXXXXX,1,Macro(enum-call,localcall,${EXTEN})
exten => _011XXXXNXXXXXX,1,Macro(enum-call,localcall,${EXTEN:3})
exten => _0111NXXNXXXXXX,1,Macro(enum-call,NA,${EXTEN:3})
exten => _NXXNXXXXXX,1,Prefix(1)
exten => _1NXXNXXXXXX,1,Macro(enum-call,NA,${EXTEN})
exten => _011X.,1,Macro(enum-call,international,${EXTEN:3})
;
[macro-enum-call]
exten => s,1,SetCallerID(1XXX5551212)
exten => s,2,EnumLookup(${ARG2})
exten => s,53,Goto(${ARG1},${ARG2},1)
exten => s,103,Goto(${ARG1},${ARG2},1)
exten => s,3,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?4:5)
exten => s,4,Dial(${ENUM})
exten => s,5,Goto(${ARG1},${ARG2},1)
exten => s,105,Goto(${ARG1},${ARG2},1)
;
;
; -----------------------------------------------------------------------------
; Dialplan  Special Applications
; -----------------------------------------------------------------------------
[prompts]
;
;697 - Prompt management
exten = 697,1,Goto(app-prompt-management,s,1)
;
; 698 - Special announcement admin (Easy IVR)
exten = 698,1,Goto(app-special-message,s,1)
;
[app-special-message]
; Record/replay/turn on/off the special message played before ACD queue calls
exten = s,1,Answer
exten = s,2,Wait(1)
exten = s,3,DigitTimeout(5)
exten = s,4,BackGround(T-to-hear-cur-ancmnt)
exten = s,5,BackGround(press-1)
exten = s,6,BackGround(T-to-rec-ancmnt)
exten = s,7,BackGround(press-2)
exten = s,8,BackGround(T-to-enable-ancmnt)
exten = s,9,BackGround(press-3)
exten = s,10,BackGround(T-to-disable-ancmnt)
exten = s,11,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(cc-special-message)
exten = 1,2,Goto(s,4)
;
exten = 2,1,Goto(app-special-message-record,s,1)
;
exten = 3,1,SET($DB(SpecialMessage/1=1)})
exten = 3,2,Playback(enabled)
exten = 3,3,Goto(s,4)
;
exten = 4,1,DBdel(SpecialMessage/1)
exten = 4,2,Playback(disabled)
exten = 4,3,Goto(s,4)
;
exten = *,1,Playback(goodbye)
exten = *,2,Hangup
;
[app-special-message-record]
; Record the new special message
exten = s,1,Playback(vm-intro)
exten = s,2,Record(new-special-message:wav)
exten = s,3,Playback(beep)
exten = s,4,BackGround(new-special-message)
exten = s,5,BackGround(save-announce-press)
exten = s,6,BackGround(digits/1)
exten = s,7,BackGround(to-rerecord-announce)
exten = s,8,BackGround(digits/2)

exten = i,1,Playback(invalid)
exten = i,2,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,2,Playback(your-msg-has-been-saved)
exten = 1,3,Goto(app-special-message,s,1)
;
exten = 2,1,Goto(s,1)
;
exten = *,1,Goto(app-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
;
[app-prompt-management]
; Flexible prompt recording
exten = s,1,Answer
exten = s,2,Wait(1)
exten = s,3,DigitTimeout(5)
exten = s,4,Read(PROMPT_NUMBER|enter-prompt-number|3)
exten = s,5,SayDigits(${PROMPT_NUMBER})
exten = s,6,BackGround(T-to-hear-cur-ancmnt)
exten = s,7,BackGround(press-1)
exten = s,8,BackGround(T-to-rec-ancmnt)
exten = s,9,BackGround(press-2)
;
exten = t,1,Playback(goodbye)
exten = t,2,Hangup
;
exten = i,1,Playback(pbx-invalid)
exten = i,2,Goto(s,5)
;
exten = 1,1,Playback(beep)
exten = 1,2,Playback(bsky-prompt-${PROMPT_NUMBER})
exten = 1,3,Playback(beep)
exten = 1,4,Goto(s,6)
;
exten = 2,1,Goto(app-prompt-management-record,s,1)
;
exten = *,1,Playback(goodbye)
exten = *,2,Hangup
;
[app-prompt-management-record]
; New prompt recording
exten = s,1,Playback(vm-intro)
exten = s,2,Record(tmp-newprompt:wav)
exten = s,3,Playback(beep)
exten = s,4,BackGround(tmp-newprompt)
exten = s,5,BackGround(save-announce-press)
exten = s,6,BackGround(digits/1)
exten = s,7,BackGround(to-rerecord-announce)
exten = s,8,BackGround(digits/2)
;
exten = i,1,Playback(invalid)
exten = i,2,Goto(s,3)
;
exten = t,1,Goto(s,3)
;
exten = 1,1,System(cp -f /var/lib/asterisk/sounds/tmp-newprompt.wav /var/lib/asterisk/sounds/-prompt-${PROMPT_NUMBER}.wav)
exten = 1,2,Playback(your-msg-has-been-saved)
exten = 1,3,Goto(app-prompt-management,s,4)
;
exten = 2,1,Goto(s,1)
;
exten = *,1,Goto(app-prompt-management,s,4)
;
;#########################################################
;# Xmas Santa Line
;#########################################################
[santa-line]
exten = ####,1,Goto(app-xmas-record,s,1)
exten = ####,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(xmas-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}:gsm|10|60)
exten = s,9,Playback(xmas-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(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
;
;########################################################
;# System Macro's area.
;########################################################
;[macro-stdexten]
exten => s,1,GotoIf(${DB(CFIM/${ARG1})}?2:3) ; Get CFIM key
exten => s,2,Dial(Local/${DB(CF/${ARG1})}/n)   ; Unconditional forward
exten => s,3,GotoIf(${DB(DND/${ARG1})}?106)
exten => s,4,Set(${DB(LASTCALL/${ARG1})=${CALLERIDNUM})
exten => s,5,Dial(SIP/${ARG1}|20|r) ; 20sec timeout
exten => s,6,Voicemail(u${ARG1})
exten => s,7,Hangup
exten => s,106,Voicemail(b${ARG1})
exten => s,107,Hangup
;
[macro-exten-vm]
; Call extension ${ARG1} for ${ARG2} seconds, divert to voicemail on busy or noreply
exten => s,1,GotoIf(${DB(CFIM/${ARG1})}?2:3) ; Get CFIM key
exten => s,2,Dial(Local/${DB(CF/${ARG1})}/n)   ; Unconditional forward
exten => s,3,Set(${DB(DNDStatus=DND/${ARG1})
exten => s,4,GotoIf(${DNDStatus}=1?107:6)
exten => s,5,Set(${DB(LASTCALL/${ARG1})=${CALLERIDNUM})
exten => s,6,Dial(SIP/${ARG1},${ARG2})
exten => s,7,Voicemail(u${ARG1})
exten => s,8,Playback(vm-goodbye)
exten => s,9,Hangup
exten => s,107,Voicemail(b${ARG1})
exten => s,108,Playback(vm-goodbye)
exten => s,109,Hangup
;
[macro-exten-novm]
; Call extension ${ARG1} for ${ARG2} seconds
exten => s,1,GotoIf(${DB(CFIM/${ARG1})}?2:3) ; Get CFIM key
exten => s,2,Dial(Local/${DB(CF/${ARG1})}/n)   ; Unconditional forward
exten => s,3,Set(${DB(DNDStatus=DND/${ARG1})})
exten => s,4,GotoIf(${DNDStatus}=1?103:102)
exten => s,102,Dial(SIP/${ARG1},${ARG2})
exten => s,103,Playback(the-party-you-are-calling)
exten => s,104,Playback(is-curntly-unavail)
exten => s,105,Playback(pls-try-call-later)
exten => s,106,Hangup
exten => s,203,Busy
;
[macro-unassigned-number]
; Gives tritone + number unassigned message to vacant numbers
exten => s,1,Answer
exten => s,2,Playback(the-number-u-dialed,noanswer)
exten => s,3,SayDigits(${ARG1})
exten => s,4,Playback(not-yet-assigned,noanswer)
exten => s,5,Busy
;
[macro-calltrace]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Set(${DB(LastCaller=LASTCALL/${ARG1})})
exten => s,4,GotoIf($[${LastCaller}]?5:10)
exten => s,5,SayDigits(${LastCaller})
exten => s,6,Set(TIMEOUT(ditig)=3)
exten => s,7,Set(TIMEOUT(response)=7)
exten => s,8,Background(press-one-to-callback)
exten => s,9,Goto(12)
exten => s,10,Playback(unidentified)
exten => s,11,Hangup
exten => s,12,NoOp
exten => 1,1,Goto(all-exten,${LastCaller},1);
exten => i,1,Playback(pbx-invalid)
exten => i,2,Hangup
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup
;
[macro-add-callerid]
exten => s,1,Answer()
exten => s,2,Read(EXTENSION|enter-extension-num|4)
exten => s,3,Read(DIALCID|enter-new-outbound-cid|10)
exten => s,4,DBPut(CID/${EXTENSION}=${DIALCID})
exten => s,5,Saydigits(${EXTENSION})
exten => s,6,Playback(has-been-set-to)
exten => s,7,Saydigits(${DIALCID})
exten => s,8,Playback(auth-thankyou)
exten => s,9,SetVar(AGAIN=0)
exten => s,10,Read(AGAIN|enter-another-value|1) ; one for yes, any other num;
exten => s,11,GotoIf($[${AGAIN} = 1]?2:12)
exten => s,12,Playback(goodbye)
exten => s,13,Hangup()
;
[macro-faxreceive]
exten => s,1,SetVar(FAXFILE=/var/spool/asterisk/fax/${CALLEDFAX}/${UNIQUEID})
exten => s,2,Set(EXTEMAIL=${MACRO_EXTEN}/xEmail)
exten => s,3,NoOP()
exten => s,4,Set(EXTNAME=${MACRO_EXTEN}/xName)
exten => s,5,NoOP()
exten => s,6,Set(EXTCOMPANY=${MACRO_EXTEN}/xCompany)
exten => s,7,rxfax(${FAXFILE}.tif)
exten => s,103,Set(EXTMAIL=fax@company.com)
exten => s,104,Goto(7)
exten => s,105,Set(EXTNAME=Unknown)
exten => s,106,Goto(7)
exten => s,107,Set(EXTCOMPANY=Company)
exten => s,108,Goto(7)
;
[macro-festival]
exten => s,1,Answer
exten => s,2,Festival('Hello asterisk user, how are you today?')
exten => s,3,Hangup
;
[macro-meet]
exten => s,1,Answer 
exten => s,2,Wait(1) 
exten => s,3,MeetMe({$ARG1},pdcMs) 
exten => s,4,Playback(vm-goodbye) 
exten => s,5,Hangup 
;
[macro-qualityassure] 
exten => s,1,Answer 
exten => s,2,Macro(record-on) 
exten => s,3,BackGround(for-quality-purposes) 
exten => s,4,BackGround(this-call-may-be) 
exten => s,5,BackGround(recorded) 
exten => s,6,Dial(SIP/${EXTEN},120,tm) 
exten => s,7,Macro(rg-inbound,10,tr) 
exten => s,8,Hangup 
;
[macro-record-on]
exten => s,1,AGI(set-timestamp.agi)
exten => s,2,SetVar(CALLFILENAME=${timestamp}-${ARG2}-${ARG1})
exten => s,3,Monitor(gsm,${CALLFILENAME})
;
[macro-record-cleanup]
exten => s,1,GotoIf($[${CALLFILENAME} = ${NULL}]?6:2)
exten => s,2,SetVar(CFBASE=/var/spool/asterisk/monitor/${CALLFILENAME})
; wmix takes the two seperate wavs and mixes them into a single stream
; It is available in my wavetools rpm
exten => s,3,System(/usr/bin/wmix ${CFBASE}-in.wav ${CFBASE}-out.wav > ${CFBASE})
exten => s,4,System(/bin/rm ${CFBASE}-in.wav ${CFBASE}-out.wav)
; toast compresses the .wav files into a .gsm file
; It is available in my gsm rpm
exten => s,5,System(/usr/bin/toast -F ${CFBASE})
exten => s,6,NoOp
;
[macro-privacy]
exten => s,1,PrivacyManager
exten => s,2,Macro(record-on,${MYHOMEPHONE},${CALLERIDNUM})
;exten => s,3,Monitor(wav|call-${EPOCH}-${CALLERIDNUM})
;${DATETIME}     Current date time in the format: YYYY-MM-DD_HH:MM:SS
;${UNIQUEID}     Current call unique identifier
exten => s,3,Dial(SIP/${EXTEN},20,tr)
exten => s,103,Goto,s|6
exten => s,104,Goto,s|6
exten => s,4,Answer
exten => s,5,Wait(1)
exten => s,6,Voicemail2(u0)
exten => s,7,Playback,vm-goodbye
exten => s,8,Hangup
;
[macro-fastbusy] ; I use this to send people I dont want to deal with.
exten => s,1,Answer
exten => s,2,Wait 1
exten => s,3,Playback(all-circuits-busy)
exten => s,4,Wait(30)
exten => s,5,Hangup
;
[macro-call-intercom]
exten => s,1,AGI(callall|${CALLERIDNUM}|${CALLERIDNUM}|${ARG1}|${ARG1})
exten => s,2,Hangup
exten => h,1,Hangup
;
[add-to-intercom]
exten => start,1,Playback(beep)
exten => start,2,MeetMe(${iConf},${iConfParm})
exten => start,3,Macro(hangupcall)
exten => h,1,Hangup
;
[in-analog] ;used for private line answering machine......
exten => s,1,Zapateller(answer|nocallerid)
exten => s,2,NoOp
exten => s,2,Macro(record-on,${MYHOMEPHONE},${CALLERIDNUM})
exten => s,3,PrivacyManager
exten => s,4,Dial(${PHONE1}&${PHONE2},30,Tt)
exten => s,5,Answer
exten => s,6,Wait(1)
exten => s,7,Playback()
exten => s,8,Playback()
exten => s,9,Playback()
exten => s,10,Voicemail(u${EXTEN})
exten => s,11,Hangup
exten => s,108,Wait(2)
exten => s,109,Voicemail(b${EXTEN})
exten => s,110,Hangup
exten => h,1,Macro(record-cleanup)
;
[in-pstn] ; under development..... 
exten => s,1,Macro(fixcid)
exten => s,2,Answer
exten => s,3,DigitTimeout(3)
exten => s,4,ResponseTimeout(3)
exten => s,5,Wait(1)
exten => s,6,BackGround(pls-wait-connect-call)
exten => s,7,Dial(SIP/${EXTEN},30,Tt)
exten => i,1,Playback(pbx-invalid)
exten => i,2,Hangup
;
[macro-sip-rollover]
exten => s,1,GotoIf($[${sipline1} = Congestion]?3:2)
exten => s,2,Dial(${sipline1},15,rt)
exten => s,3,GotoIf($[${sipline2} = Congestion]?5:4)
exten => s,4,Dial(${sipline2},15,rt)
exten => s,5,GotoIf($[${sipline3} = Congestion]?7:6)
exten => s,6,Dial(${sipline3},15,rt)
exten => s,7,GotoIf($[${sipline4} = Congestion]?1:8)
exten => s,8,Dial(${sipline4},15,rt)
exten => s,9,Hangup
;
[macro-zap-rollover]
exten => s,1,GotoIf($[${zapline1} = Congestion]?3:2)
exten => s,2,Dial(${zapline1},15,rt)
exten => s,3,GotoIf($[${zapline2} = Congestion]?5:4)
exten => s,4,Dial(${zapline2},15,rt)
exten => s,5,GotoIf($[${zapline3} = Congestion]?7:6)
exten => s,6,Dial(${zapline3},15,rt)
exten => s,7,GotoIf($[${zapline4} = Congestion]?1:8)
exten => s,8,Dial(${zapline4},15,rt)
exten => s,9,Hangup

[macro-rollover]
; Rollover macro one call per line
; This will limite the calls to one
; per line. (No call waiting).
;
exten => s,1,NoOp
exten => s,2,Ringing
exten => s,3,Wait(2)
exten => s,4,SetGroup(${CALLWAIT1})
exten => s,5,CheckGroup(1)
exten => s,6,Dial(${ARG1})
exten => s,7,SetGroup(${CALLWAIT2})
exten => s,8,CheckGroup(1)
exten => s,9,Dial(${ARG2})
exten => s,10,SetGroup(${CALLWAIT3})
exten => s,11,CheckGroup(1)
exten => s,12,Dial($ARG3})
exten => s,13,SetGroup(${CALLWAIT4})
exten => s,14,CheckGroup(1)
exten => s,15,Dial(${ARG4})
exten => s,16,Congestion
exten => s,107,SetGroup(${CALLWAIT2})
exten => s,108,CheckGroup(1)
exten => s,109,Dial(${ARG2})
exten => s,110,Dial(${ARG3})
exten => s,111,Dial(${ARG4})
exten => s,112,Congestion
exten => s,210,SetGroup(${CALLWAIT3})
exten => s,211,CheckGroup(1)
exten => s,212,Dial(${ARG3})
exten => s,213,Dial(${ARG4})
exten => s,214,Dial(${ARG1})
exten => s,215,Congestion
exten => s,313,SetGroup(${CALLWAIT4})
exten => s,314,CheckGroup(1)
exten => s,315,Dial(${ARG4})
exten => s,316,Dial(${ARG1})
exten => s,317,Dial(${ARG2})
exten => s,318,Dial(${ARG3})
exten => s,319,Congestion
;
[macro-callerid-fixup]
;
; This macro assumes the following:
;   Extensions without a DID number have a CallerID number that is 4 digits
;   Extensions with a DID number have their CallerID number set to their 10 digi
;   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 va
;   If the Caller*ID number is not 4 digits, do nothing
;
exten => s,1,NoOp(Entering Macro "callerid-fixup")
exten => s,2,NoOp(Variable CALLERIDNUM is equal to ${CALLERIDNUM})
exten => s,3,GoToIf($["${ARG1}" != ""]?external,1)
exten => s,4,GoToIf($["${ARG1}" = ""]?internal,1)
;
exten => internal,1,GoToIf($[${LEN(${CALLERIDNUM})} = 4]?f,1)
exten => internal,2,SetCIDNum(${CALLERIDNUM:6})
exten => internal,3,GoTo(f,1)
;
exten => external,1,GoToIf($[${LEN(${CALLERIDNUM})}! = 4]?f,1)
exten => external,2,SetCIDNum(${ARG1},a)
exten => external,3,GoTo(f,1)
;
exten => f,1,NoOp(Variable CALLERIDNUM is equal to ${CALLERIDNUM})
exten => f,2,NoOp(Leaving Macro "callerid-fixup")
;
[macro-fixcid]
;#################################################################
;# My caller id name often comes in as O.  If there is a CID number,
;# use that.  Otherwise set the caller ID name to No Caller ID
;# ARGS: none
;# For some reason GotoIf($[${CALLERIDNAME} = O]?true:false) fails so I use
;# this crappy system call instead :(  I'm not sure if this is because
;# $CALLERIDNAME is usually 2 words or what but it sucks.
;######################################################################
;
exten => s,1,System(test "${CALLERIDNAME}" = "O")
exten => s,2,GotoIf($[${CALLERIDNUM} = O]?3:5)
exten => s,3,SetCIDName("No Caller ID")
exten => s,4,Goto(6)
exten => s,5,SetCIDName(${CALLERIDNUM})
exten => s,6,NoOp   ; landing point for no caller id
exten => s,102,Goto(autoattend,s,1) ; landing point for proper caller ID
;
[macro-system-page] ; Still  developing.....
exten => s,1,AbsoluteTimeout(11)
exten => s,2,NoOp,${ARG1}
exten => s,3,AGI,allcall.agi|SIP/${ARG1} ${EX-DESIGN} ${EX-SALES1} 
;
;#############################################################
;# New Extension Testing & Debuging Tools
;#############################################################
;
[ext-testing]
;
exten => 899,1,AGI(systat.agi) ; requires sysstat.agi
exten => 899,2,Wait(1)
exten => 899,3,Playback(loadavgis)
exten => 899,4,SayDigits(${LOADAVGPRE})
exten => 899,5,Playback(point)
exten => 899,6,SayDigits(${LOADAVGSUF})
exten => 899,7,Wait(1)
exten => 899,8,Playback(thereare)
exten => 899,9,SayDigits(${NUMUSER})
exten => 899,10,Playback(userson)
exten => 899,11,Wait(1)
exten => 899,12,Hangup
;
exten => 900,1,Answer
exten => 900,2,Wait(1)
exten => 900,3,SayDigits(${CALLERIDNUM})
exten => 900,4,Hangup
;
exten => 901,1,Answer
exten => 901,2,Wait(1)
exten => 901,3,Datetime
exten => 901,4,Hangup
;
exten => 902,1,Answer
exten => 902,2,Wait(1)
exten => 902,3,Playback(demo-echotest)
exten => 902,4,Playback(beep)
exten => 902,5,Echo
exten => 902,6,Playback(demo-echodone)
exten => 902,7,Hangup
;
exten => 903,1,Answer
exten => 903,2,Milliwatt
exten => 903,3,Hangup
;
exten => 904,1,Answer
exten => 904,2,Wait(1)
exten => 904,3,Record(record:gsm)
exten => 904,4,Wait(1)
exten => 904,5,Playback(record)
exten => 904,6,Hangup
;
exten => 905,1,Answer
exten => 905,2,SetMusicOnHold(default)
exten => 905,3,MusicOnHold
;
exten => 906,1,Answer
exten => 906,2,SetMusicOnHold(stream)
exten => 906,3,MusicOnHold
;
exten => 907,1,Cut(CHANTYPE=CHANNEL|/|1)
exten => 907,2,Cut(CHANNELNEXT=CHANNEL|/|2)
exten => 907,3,Cut(CHANNELNUM=CHANNELNEXT|-|1)
exten => 907,4,Answer()
exten => 907,5,Wait(1)
exten => 907,6,Playback(${CHANTYPE})
exten => 907,7,SayPhonetic(${CHANNELNUM})
exten => 907,8,Wait(1)
exten => 907,9,Playback(${CHANTYPE})
exten => 907,10,SayAlpha(${CHANNELNUM})
exten => 907,11,Playback(tt-monkeys)
exten => 907,12,Hangup()
;
exten => 908,1,Answer
exten => 908,2,Playback(new/password)
exten => 908,3,AGI(agi-test.agi,${pass})
exten => 908,4,Hangup
;
exten => 909,1,Answer
exten => 909,2,Playback(new/password)
exten => 909,3,SetMusicOnHold,loud
exten => 909,4,WaitMusicOnHold,30
exten => 909,5,Hangup
;
;######################################################
;# User Permissions
;######################################################
;
[admin]
include => disa
include => dnd
include => asterlink
include => broadvoice
include => iaxtel
include => sipphone
include => fwd
include=zap1
include=zap2
include=zap3
include=zap4
include => blocked
include => info-411
include => callwake-511
include => repair-611
include => paging-211
include => emerg-911
include => internal-vm
include => internal-conf
include => external-conf
include => agentlogin
include => queues
include => parkedcalls
include => pbx-transfer
include => rec-prompt
include => callwaiting
include => disconnect
include => directory
include => all-exten
include => pbx-2-pbx
include => ext-testing
include => calltrace
include => offhook
include => callforward
include => system-stat
include => stream
include => iax2-exten
;
;####################################################################
;# All Extensions
;# Office Extensions
;# Staff Extensions
;# exten 1-9 used for autoattend menu
;# exten 10 - 40 for Zap Extensions
;# exten 500-600 Iax2 Mapped Extensions
;# exten 990 - 999 are for PBX to PBX connection / Office to Office link
;# exten 1000 - 2999 Staff Extensions
;# exten 3000 - 9999 Open for use except 8500-8599 used for set exten
;####################################################################
;
[all-exten]
exten => 0,1,Macro(stdexten,0,SIP/0)
exten => _[1-4]X,1,Macro(stdexten,${EXTEN})
exten => _[1-2]XXX,1,Macro(stdexten,${EXTEN})
;
;###################################################
;#PBX to PBX ofice to office connections 990-999   
;###################################################
;
[pbx-2-pbx]
exten => 990,1,Dial(IAX2/guest@server/s@default)
exten => 990,2,Hangup
;
exten => 991,1,Dial()
exten => 991,2,Hangup
;
;########################################################
;Mapped IAX2 Extensions
;#######################################################
;
[iax2-exten]
;
exten => 500,1,Dial(IAX2/guest@misery.digium.com/s@default)
exten => 500,2,Hangup ; to call digium for support
;
;####################################################################
;#                      End of Extensions Config File               #
;####################################################################