;-------------------------------------------------------------------- ; Begining of extensionsconf File ;-------------------------------------------------------------------- ; ; Static extension configuration file, used by ; the pbx_config module This is where you configure all your ; inbound and outbound calls in Asterisk ; ; This configuration file is reloaded ; - With the "extensions reload" command in the CLI ; - With the "reload" command (that reloads everything) in the CLI ; ; The "General" category is for certain variables [general] ; ; If static is set to no, or omitted, then the pbx_config will rewrite ; this file when extensions are modified Remember that all comments ; made in the file will be lost when that happens ; ; XXX Not yet implemented XXX ; static=yes ; ; if static=yes and writeprotect=no, you can save dialplan by ; CLI command 'save dialplan' too ; writeprotect=yes ; ; If autofallthrough is set, then if an extension runs out of ; things to do, it will terminate the call with BUSY, CONGESTION ; or HANGUP depending on Asterisk's best guess (strongly recommended)1 ; ; If autofallthrough is not set, then if an extension runs out of ; things to do, asterisk will wait for a new extension to be dialed ; (this is the original behavior of Asterisk 10 and earlier) ; autofallthrough=yes ; ; If clearglobalvars is set, global variables will be cleared ; and reparsed on an extensions reload, or Asterisk reload ; ; If clearglobalvars is not set, then global variables will persist ; through reloads, and even if deleted from the extensionsconf or ; one if its included files, will remain set to the previous value ; clearglobalvars=yes ; ; You can include other config files, use the #include command ; (without the ';') ; Note that this is different from the "include" command that ; includes contexts within other contexts The #include command ; works in all asterisk configuration files ; #include "filenameconf" ; ; The "Globals" category contains global variables that can be referenced ; in the dialplan with ${VARIABLE} or ${ENV(VARIABLE)} for Environmental ; variable ${${VARIABLE}} or ${text${VARIABLE}} or any hybrid ; [globals] ;CONSOLE=Console/dsp ; Console interface for demo ;CONSOLE=Zap/1 ;CONSOLE=Phone/phone0 ;IAXINFO=guest ; IAXtel username/password ;IAXINFO=myuser:mypass ;TRUNK=Zap/g2 ; ; Note the 'g2' in the TRUNK variable above It specifies which group ; (defined in zapataconf) to dial, ie group 2, and how to choose a ; channel to use in the specified group The four possible options are: ; ; g: select the lowest-numbered non-busy Zap channel (aka ascending ; sequential hunt group) ; G: select the highest-numbered non-busy Zap channel (aka descending ; sequential hunt group) ; r: use a round-robin search, starting at the next highest channel ; than last time (aka ascending rotary hunt group) ; R: use a round-robin search, starting at the next lowest channel ; than last time (aka descending rotary hunt group) ; ;TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) ;TRUNK=IAX2/user:pass@provider ; DEFAULTTIMEOUT=30 VERYSHORTTIMEOUT=10 SHORTTIMEOUT=20 MEDTIMEOUT=40 LONGTIMEOUT=70 ; ;Sip/Voip Provider - This is you DID Provider LINE= USERID= COMPANY=sip.broadvoice.com PROTOCOL=SIP ; COMPANYNAME=Company Name Here ; Your Comapny Name here ; ;SipPhonecom user info SIPLINE= ;your SipPhonecom Number Here SIPUSERID= ;Your User ID here SIPPASS= ;Your Password here ; ;IAXTEL user info IAXLINE= IAXTELUSER= IAXTELPASS= ; ;FreeWorld Dialup user info ;FWDLINE= ;FWDUSERID= ;FWDPASSWD= ; ;Used for rollover ; ;Your Sip Line Providers names used for rollover ;SIPLINE1=Sip Company 1 ;SIPLINE2=Sip Company 2 ;SIPLINE3=Sip Company 3 ;SIPLINE4=Sip Company 4 ; ;--------------------------------------------------------------- ; Any category other than "General" and "Globals" represent ; extension contexts, which are collections of extensions ; ; Extension names may be numbers, letters, or combinations ; thereof If an extension name is prefixed by a '_' ; character, it is interpreted as a pattern rather than a ; literal In patterns, some characters have special meanings: ; ; X - any digit from 0-9 ; Z - any digit from 1-9 ; N - any digit from 2-9 ; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9) ; - wildcard, matches anything remaining (eg _9011 matches ; anything starting with 9011 excluding 9011 itself) ; ! - wildcard, causes the matching process to complete as soon as ; it can unambiguously determine that no other matches are possible ; ; For example the extension _NXXXXXX would match normal 7 digit dialings, ; while _1NXXNXXXXXX would represent an area code plus phone number ; preceeded by a one ; ; Each step of an extension is ordered by priority, which must ; always start with 1 to be considered a valid extension The priority ; "next" or "n" means the previous priority plus one, regardless of whether ; the previous priority was associated with the current extension or not ; The priority "same" or "s" means the same as the previously specified ; priority, again regardless of whether the previous entry was for the ; same extension Priorities may be immediately followed by a plus sign ; and another integer to add that amount (most useful with 's' or 'n') ; Priorities may then also have an alias, or label, in ; parenthesis after their name which can be used in goto situations ; ; Contexts contain several lines, one for each step of each ; extension, which can take one of two forms as listed below, ; with the first form being preferred One may include another ; context in the current one as well, optionally with a ; date and time Included contexts are included in the order ; they are listed ; ;----------------------------------------------------------------------------- ; 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 ;---------------------------------------------------------------------------- ;-------------------------------------------------------------------- ; Start - inbound call mapping ;-------------------------------------------------------------------- [inbound] ; exten => 8882566214,1,Set(${DB(Last/Caller=${CALLERIDNUM})}) exten => 8882566214,2,Dial(IAX2/1004|30|T) exten => 8882566214,3,Voicemail(u1004) exten => 8882566214,4,Hangup exten => 8882566214,103,Voicemail(b1004) exten => 8882566214,104,Hangup ; exten => *1004,1,Dial(IAX2/1004|20|T) ; 20sec timeout exten => *1004,2,Voicemail(u1004) exten => *1004,3,Hangup exten => *1004,102,Voicemail(b1004) exten => *1004,103,Hangup ; exten => s,1,Set(${DB(Last/Caller=${CALLERIDNUM})}) exten => s,2,Dial(SIP/1001,45,Tr) exten => s,3,Voicemail(u1001) exten => s,4,Hangup exten => s,103,Voicemail(b1001) exten => s,104,Hangup ; ;This Exten Goes to Automated attendant after putting ;caller ID into the Database ;exten => s,1,Set(${BD(Last/Caller=${CALLERIDNUM})}) ;exten => s,2,Goto(autoattend,s,1) ; ;This exten Dial your ZAP lines ;exten => s1,1,Set(${DB(Last/Caller=${CALLERIDNUM})}) ;exten => s1,2,Dial(ZAP/#,30,r) ;replace # with exten nmbr ; ;New way ;Extensions with Voicemail ;exten => s,1,Macro(exten-vm,${EXTEN},${VM_DELAY}) ; ; Extensions with no voicemail ;exten => s1,1,Macro(exten-novm,${EXTEN},${NO_VM_TIMEOUT}) ; ; MythTV supports on-screen caller ID notifications. ; Note: replace the absolute paths with paths appropriate to your system. ; ;[mythtv] ;exten => s,1,System(/usr/bin/mythtvosd --template=/root/mythtv/mythtv/programs/mythtvosd/cid.xml --caller_name="${CALLERID}" --caller_number="${CALLERIDNUM}" --caller_date="${DATETIME}") ;exten => s,2,Wait(1) ;exten => s,3,Dial(Zap/1|20) ; Calls channel 1 ; ;-------------------------------------------------------------------- ; End - inbound call mapping ;-------------------------------------------------------------------- ;------------------------------------------------------------------- ;Start Autoattend Menu ;------------------------------------------------------------------- ; [autoattend] ; exten => s,1,GotoIfTime(*|*|1|jan?holiday,s,1) exten => s,n,GotoIfTime(*|*|4|jul?holiday,s,1) exten => s,n,GotoIfTime(*|*|11|nov?holiday,s,1) exten => s,n,GotoIfTime(*|*|24|nov?holiday,s,1) exten => s,n,GotoIfTime(*|*|25|dec?holiday,s,1) exten => s,n,GotoIfTime(08:00-17:00on-fri|*|*?day,s,1) exten => s,n,GotoIfTime(17:01-07:99|mon-fri|*|*?night,s,1) exten => s,n,GotoIfTime(09:00-16:00|sat|*|*?day,s,1) exten => s,n,Goto(night,s,1); ; [holiday] ; ; provide Holiday greeting and provide emergency access for ; contract clients ; exten => s,1,Playback(office-closed-holiday) ; play the office we are closed message exten => s,2,Playback(office-hours) ; play the open hours message exten => s,3,Hangup ; [day] include => selection include => all-exten include => queues ; exten => s,1,Set(CALLERID(name)=Comapny Name Here) exten => s,n,Wait,2 exten => s,n,Answer exten => s,n,Background,day-msg exten => s,n,DigitTimeout,5 exten => s,n,ResponseTimeout,10 ; [night] include => selection include => all-exten include => queues ; exten => s,1,Wait,2 exten => s,2,Answer exten => s,3,Plaback,night-msg exten => s,4,Voicemail(u######) exten => s,5,Hangup ; ;------------------------------------------------------------------- ; END - Autoattend Menu ;------------------------------------------------------------------- ;------------------------------------------------------------------- ; Start - IVR Menu ;------------------------------------------------------------------- [selection] ; ; * - directory ; not setup yet ;exten => *,1,Directory,default ;exten => *,2,Goto,s|1 ; # - disconnect ;exten => #,1,Playback,(vm-goodbye) ;exten => #,2,Hangup ; 0 Operator ;exten => 0,1,Macro(stdexten,0,SIP/0) ; 0 - Operator Queue ;exten => 0,1,Answer ;exten => 0,n,Queue(operator| ;exten => 0,n,Playback(vm-goodbye) ; ;1 Sales Dept exten => 1,1,GotoIfTime(08:00-16:59|mon-fri|*|*?selection,3,6) exten => 1,2,GotoIf(Time(17:00-07:29|mon-fri|*|*?selection,3,3) exten => 1,3,Playback(sales-closed) exten => 1,4,Playback(vm-goodbye) exten => 1,5,Hangup exten => 1,6,BackGround(for-quality-purposes) exten => 1,7,Playback(this-call-may-be) exten => 1,8,Playback(recorded) exten => 1,9,Playback(pls-wait-connect-call) exten => 1,10,SetMusicOnHold,default exten => 1,11,SetCallerID,1 exten => 1,12,SetCallerIDName,Sales exten => 1,13,Goto,queues|200|1 ; ;2 Billing Dept exten => 2,1,GotoIfTime(08:00-16:59|mon-fri|*|*?selection,4,6) exten => 2,2,GotoIfTime(17:00-07:29|mon-fri|*|*?selection,4,3) exten => 2,3,Playback(billing-closed) exten => 2,4,Playback(vm-goodbye) exten => 2,5,Hangup exten => 2,6,Playback(for-quality-purposes) exten => 2,7,Playback(this-call-may-be) exten => 2,8,Playback(recorded) exten => 2,9,Playback(pls-wait-connect-call) exten => 2,10,SetMusicOnHold,default exten => 2,11,SetCallerID,2 exten => 2,12,SetCallerIDName,Sales exten => 2,13,Goto,queues|201|1 ; ;3 Technical Support Dept exten => 3,1,GotoIfTime(08:30-17:29|mon-fri|*|*?selection,5,6) exten => 3,2,GotoIfTime(17:30-08:29|mon-fri|*|*?selection,5,3) exten => 3,3,Playback(tech-closed) exten => 3,4,Playback(vm-goodbye) exten => 3,5,Hangup exten => 3,6,Playback(for-quality-purposes) exten => 3,7,Playback(this-call-may-be) exten => 3,8,Playback(recorded) exten => 3,9,Playback,(pls-wait-connect-call) exten => 3,10,SetMusicOnHold,default exten => 3,11,SetCallerID,3 exten => 3,12,SetCallerIDName,TechSupport exten => 3,13,Goto,queues|202|1 ; ;4 exten => 4,1,Playback,(systemstat) exten => 4,n,Hangup ; exten => 5,1,Background(staff-listing) exten => 5,n,Hangup ; ;5 exten => 6,1,Playback(vm-goodbye) exten => 6,n,Hangup ; ;7 exten => 7,1,Playback(vm-goodbye) exten => 7,n,Hangup ; ;8 exten => 8,1,Playback(vm-goodbye) exten => 8,n,Hangup ; ;9 Fax Extension exten => 9,1,Set(CALLEDFAX=${EXTEN}) exten => 9,2,Answer exten => 9,3,Goto(fax,${EXTEN},1) ; [macro-fax] exten => 9,1,Macro(faxreceive) ; requires fax addon and spandsp exten => h,1,System(/usr/local/share/asterisk/scripts/fax,sh "${CALLERIDNUM}" "${CALLEDFAX}" "${EXTNAME}" "${EXTEMAIL}" "${FAXFILE}" "${EXTCOMPANY}") ; ;[macro-faxreceive] ;exten => s,1,Set(FAXFILE=/var/spool/asterisk/fax/${CALLEDFAX}/${UNIQUEID}) ;exten => s,2,Set(${DB(EXTEMAIL=${MACRO_EXTEN}/xEmail)}); ;exten => s,3,NoOP() ;exten => s,4,Set(${DB(EXTNAME=${MACRO_EXTEN}/xName)}) ;exten => s,5,NoOP() ;exten => s,6,Set($DB(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) ; exten => 0,1,Dial(SIP/Operators exten|18|Tr) ; ; Repeat the previous menu exten => *,1,Goto(s,9) ; ; #=hangup exten => #,1,Background(goodbye) exten => #,2,Hangup ; exten => i,1,Background(pbx-invalid) ; "That's not valid, try again" exten => i,2,Wait(1) exten => i,3,Goto(s,9) ; exten = t,1,Playback(pls-wait-connect-call) exten = t,n,Goto(operator-queue,s,1) ; ;------------------------------------------------------------------- ; END - IVR Menu ;------------------------------------------------------------------- ;------------------------------------------------------------------- ; Start - Outbound mapping ;------------------------------------------------------------------- [sip-rollover] exten => _91NXXNXXXXXX,1,SetVar(PROTO=SIP|NEXTRY=5) exten => _91NXXNXXXXXX,2,Set(CALLERID(name)=Richard Neese) exten => _91NXXNXXXXXX,3,Set(CALLERID(number)=14122381009|a) exten => _91NXXNXXXXXX,4,Dial(${PROTO}/${EXTEN:2}@sip.broadvoice.com) exten => _91NXXNXXXXXX,5,Set(PROVIDER=IAX2/112603@asterlink|NEXTRY=11) exten => _91NXXNXXXXXX,6,Set(CALLERID(name)=Richard) exten => _91NXXNXXXXXX,7,Set(CALLERID(number)=18882566214|a) exten => _91NXXNXXXXXX,8,Goto(9) exten => _91NXXNXXXXXX,9,Dial(${PROVIDER}/${EXTEN:1}|30|TW) exten => _91NXXNXXXXXX,10,Goto(${NEXTRY}) exten => _91NXXNXXXXXX,11,Playback(number-not-answering) ;-------------------------------------------------------------------- ;[outbound] ;include => provider ;include => asterlink ;include => iaxtel ;include => sipphone ;include => fwd ; [provider] ;US LD & Canada ;exten => _NXXNXXXXXX,1,Set(CALLERID(name)=Richard Neese) ;exten => _NXXNXXXXXX,n,Set(CALLERID(number)=|a) ;exten => _NXXNXXXXXX,n,Dial(${PROTOCOL}/${EXTEN}@${COMPANY}) ;exten => _NXXNXXXXXX,n,Congestion ;exten => _NXXNXXXXXX,n,Hangup ; ; International ;exten => _011NXXNXXXXXX,1,Set(CALLERID(name)=Richard Neese) ;exten => _011NXXNXXXXXX,n,Set(CALLERID(number)=|a) ;exten => _011NXXNXXXXXX,n,Dial(SIP/${EXTEN}@sip.broadvoice.com) ;exten => _011NXXNXXXXXX,n,Congestion ;exten => _011NXXNXXXXXX,n,Hangup ; [asterlink] exten => _1NXXNXXXXXX,1,Set(CALLERID(name)=Richard) exten => _1NXXNXXXXXX,n,Set(CALLERID(number)=|a) exten => _1NXXNXXXXXX,n,Dial(IAX2/112603@asterlink/${EXTEN}) exten => _1NXXNXXXXXX,n,Congestion exten => _1NXXNXXXXXX,n,Hangup ; ;[iaxtel] ;exten => _1700NXXXXXX,1,Set(CALLERID(name)=) ;exten => _1700NXXXXXX,n,Set(CALLERID(number)=|a) ;exten => _1700NXXXXXX,n,Dial(IAX2/${IAXTELUSER}:{IAXTELPASS}@iaxtelcom/${EXTEN}@iaxtel) ;exten => _1700NXXXXXX,n,Congestion ;exten => _1700NXXXXXX,n,Hangup ; ;[sipphone] ;exten => _1747NXXXXXX,1,Set(CALLERID(name)=) ;exten => _1747NXXXXXX,n,Set(CALLERID(number)=|a) ;exten => _1747NXXXXXX,n,Dial(SIP/${EXTEN:1}@sipphone) ;exten => _1747NXXXXXX,n,Playback(invalid) ;exten => _1747NXXXXXX,n,Congestion ;exten => _1747NXXXXXX,n,Hangup ; ;[fwd] ;exten => _#6,1,Set(CALLERID(name)=) ;exten => _#6,n,Set(CALLERID(number)=|a) ;exten => _#6,n,Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2fwdnetnet/${EXTEN:1},60,r) ;exten => _#6,n,Congestion; ;exten => _#6,n,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 ; ;------------------------------------------------------- ;End - Outbound mapping ;------------------------------------------------------- ;------------------------------------------------------- ; Start - 900/976 Blocking - ;------------------------------------------------------- [blocked] exten => _900NXXXXXX,1,Playback(ss-noservice) exten => _1NXX976XXXX,1,Playback(ss-noservice) exten => _976XXXX,1,Playback(ss-noservice) ;-------------------------------------------------------- ; End - Blocking Calls 900/976 ;-------------------------------------------------------- ;-------------------------------------------------------- ; Start Basic *XX Exten Logic ;-------------------------------------------------------- ;-------------------------------------------------------- ;Basic *XX exten nmbrs in the US + Canada For Asterisk ;Including macros that go with the exten ;-------------------------------------------------------- [basic] include => acr include => cidb include => scw include => sca include => cb include => wcacb include => cw include => cf include => scf include => cfna include => cbb include => dnd include => hzdwol include => extended-local include => wthr-rgnl include => vm include => voicemail ;-------------------------------------------------------- ; *01 - Do Not Disturb Over Ride Management only internl exten ;-------------------------------------------------------- [dnd-bypass] exten => _*01XXXX,1,Dial(SIP/${ARG1}:2|20|r) ; 20sec timeout exten => _*01XXXX,2,Voicemail(u${ARG1}) exten => _*01XXXX,3,Hangup exten => _*01XXXX,102,Voicemail(b${ARG1}) exten => _*01XXXX,103,Hangup ;--------------------------------------------------------------------------------- ; *1 - * System Stataus & exten testing : Agi Requires sysstatagi ;--------------------------------------------------------------------------------- [exten-test] include => system-stat include => say-exten include => say-date-time include => echo include => tone include => rec-playback include => moh ;---------------------------------------------------------------------------------- ; *** - Paging via soundcard to a amp or paging system ;---------------------------------------------------------------------------------- [paging] ;This paging function uses the console and soundcard to do paging they a extenalpaging system ;exten => ***,1,Dial(console/dsp) ;exten => ***,n,Answer ;exten => ***,n,Wait(1) ;exten => ***,n,Playback(touchtone/1) ;exten => ***,n,Playback(touchtone/1) ;exten => ***,n,Playback(touchtone/1) ;exten => ***,n,Wait(1) ;exten => ***,n,Hangup ; ; *** - Paging via allcall.agi. This calls the phones listed in the agi and puts them in a confrence room ; you make your announcement then it kicks them. ;[system-page] ; Still developing ;exten => ***,1,AbsoluteTimeout(11) ;exten => ***,n,NoOp,${ARG1} ;exten => ***,n,AGI,callall|SIP/${ARG1} ${EX-DESIGN} ${EX-SALES1} ; ;[call-intercom] ;exten => s,1,AGI(callall|${CALLERIDNUM}|${CALLERIDNUM}|${ARG1}|${ARG1}) ;exten => s,n,Hangup ;exten => h,1,Hangup ; ;[add-to-intercom] ;exten => s,1,Playback(beep) ;exten => s,2,MeetMe(${iConf},${iConfParm}) ;exten => s,3,Macro(hangupcall) ;exten => h,1,Hangup ;---------------------------------------------------------- ; Exten *1 - *9 New Exten Line Testing Tools ;---------------------------------------------------------- ; *1 - System Status ;---------------------------------------------------------- [system-stat] exten => *1,1,AGI(systatagi) exten => *1,n,Wait(1) exten => *1,n,Playback(loadavgis) exten => *1,n,SayDigits(${LOADAVGPRE}) exten => *1,n,Playback(point) exten => *1,n,SayDigits(${LOADAVGSUF}) exten => *1,n,Wait(1) exten => *1,n,Playback(thereare) exten => *1,n,SayDigits(${NUMUSER}) exten => *1,n,Playback(userson) exten => *1,n,Wait(1) exten => *1,n,Hangup ;----------------------------------------------------------- ; *2 - Say Phone Number ;----------------------------------------------------------- [say-exten] exten => *2,1,Answer exten => *2,n,Playback(your-exten-num-is) exten => *2,n,SayDigits(${CALLERIDNUM}) exten => *2,n,Hangup ;----------------------------------------------------------- ; *3 - Say Date and Time ;----------------------------------------------------------- [say-date-time] exten => *3,1,Answer exten => *3,n,Playback(the-current-time-is) exten => *3,n,Datetime exten => *3,n,Hangup ;----------------------------------------------------------- ; *4 - Echo Test ;----------------------------------------------------------- [echo] exten => *4,1,Answer exten => *4,n,Playback(demo-echotest) exten => *4,n,Playback(beep) exten => *4,n,Echo exten => *4,n,Playback(demo-echodone) exten => *4,n,Hangup ;----------------------------------------------------------- ; *5 - Milliwatt Tone ;----------------------------------------------------------- [tone] exten => *5,1,Answer exten => *5,n,Milliwatt exten => *5,n,Hangup ;----------------------------------------------------------- ; *6 - Record Promt Test Format Gsm ;----------------------------------------------------------- [rec-playback] exten => *6,1,Answer exten => *6,n,Wait(1) exten => *6,n,Record(record:gsm) exten => *6,n,Wait(1) exten => *6,n,Playback(record) exten => *6,n,Hangup; Music On Hold ;----------------------------------------------------------- ; *7 - Music On Hold ;----------------------------------------------------------- [moh] exten => *7,1,Answer exten => *7,n,MusicOnHold(default) ;------------------------------------------------------------ ; *8 - Universal Time Clock Stream ;------------------------------------------------------------ exten => *8,1,Answer exten => *8,n,Playback(UTC Time clock) exten => *8,n,MP3Player(http://199.211.133.238/l3audio.mp3) exten => *8,n,Hangup ;----------------------------------------------------------- ; *9 - ;----------------------------------------------------------- ; Exten *10 - *20 weather & news ;----------------------------------------------------------- ; *10 - Reginal & Local Weather Hourly ;----------------------------------------------------------- [hzdwol] exten => *10,1,Answer exten => *10,n,Playback(national-weather-service) exten => *10,n,Playback(hazard-weather-outlook) exten => *10,n,System(/usr/local/bin/curl -s http://www.srh.noaa.gov/tsa/crs/mp3/OKCHAZARD.mp3 > /tmp/OKCHAZARD.mp3) exten => *10,n,MP3Player(/tmp/OKCHAZARD.mp3) exten => *10,n,System(rm /tmp/OKCHAZARD.mp3 -f) exten => *10,n,Playback(vm-goodbye) exten => *10,n,Hangup ; [extended-local]; + climit info exten => *11,1,Answer exten => *11,n,Playback(national-weather-service) exten => *11,n,Playback(local-forcast) exten => *11,n,Playback(fort-smith) exten => *11,n,Playback(arkansas) exten => *11,n,Playback(area) exten => *11,n,System(/usr/local/bin/curl -s http://www.srh.noaa.gov/tsa/crs/mp3/OKCZFPFSM.mp3 > /tmp/OKCZFPFSM.mp3) exten => *11,n,MP3Player(/tmp/OKCZFPFSM.mp3) exten => *11,n,System(rm /tmp/OKCZFPFSM.mp3 -f) exten => *11,n,Playback(vm-goodbye) exten => *11,n,Hangup [wthr-rgnl] ;regional exten => *12,1,Answer exten => *12,n,Playback(national-weather-service) exten => *12,n,Playback(regional-forcast) exten => *12,n,Playback(arkansas) exten => *12,n,Playback(texas) exten => *12,n,Playback(oklahoma) exten => *12,n,Playback(louisiana) exten => *12,n,Playback(missouri) exten => *12,n,Playback(area) exten => *12,n,System(/usr/local/bin/curl -s http://www.srh.noaa.gov/tsa/crs/mp3/OKCHWRFSM.mp3 > /tmp/OKCHWRFSM.mp3) exten => *12,n,MP3Player(/tmp/OKCHWRFSM.mp3) exten => *12,n,System(rm /tmp/OKCHWRFSM.mp3 -f) exten => *12,n,Playback(vm-goodbye) exten => *12,n,Hangup ; ;Local txt - speech exten => *13,1,Answer exten => *13,n,Playback(national-weather-service) exten => *13,n,Playback(local-forcast) exten => *13,n,Playback(fort-smith) exten => *13,n,Playback(arkansas) exten => *13,n,Playback(area) exten => *13,n,System(/usr/local/bin/curl -s ftp://weather.noaa.gov/data/forecasts/city/ar/fort_smith.txt > /tmp/weather.txt) exten => *13,n,System(/usr/local/bin/convert) exten => *13,n,Playback(/tmp/weather) exten => *13,n,System(rm /tmp/weather.* -f) exten => *13,n,Playback(vm-goodbye) exten => *13,n,Hangup ;---------------------------------------------------------- ; *14 - CNN = cable network news ;---------------------------------------------------------- [cnn] exten => *14X,1,Answer exten => *14X,n,Playback(today-on-cnn) exten => *14X,n,System(/usr/local/bin/curl -s ) exten => *14X,n,Wait(1) exten => *14X,n,MP3Player(/tmp/.mp3) exten => *14X,n,System(rm /tmp/ .mp3 -f) exten => *14X,n,Playback(vm-goodbye) exten => *14X,n,Hangup ;----------------------------------------------------------- ; *15 - Local News Headlines ;----------------------------------------------------------- [local-news] exten => *15,1,Answer exten => *15,n,Playback(today-lcl-news) exten => *15,n,Playback(fort-smith) exten => *15,n,Playback(swtimes) exten => *15,n,System(/usr/local/bin/curl -s ) exten => *15,n,MP3Player(/tmp/.mp3) exten => *15,n,System(rm /tmp/ .mp3 -f) exten => *15,n,Playback(vm-goodbye) exten => *15,n,Hangup ;----------------------------------------------------------- ; *16 - *19 Reserved For Local Assignment ;----------------------------------------------------------- ;Current Company Job Listings ;----------------------------------------------------------- [jobs-postings] exten => *20,1,Answer exten => *20,n,Playback(current-job-postings) exten => *20,n,System(/usr/local/bin/curl -s ) exten => *20,n,Wait(1) exten => *20,n,MP3Player(/tmp/.mp3) exten => *20,n,System(rm /tmp/ .mp3 -f) exten => *20,n,Playback(vm-goodbye) exten => *20,n,Hangup ;----------------------------------------------------------- ; *21 - *29 - Inturnal and Extenal Meet-Me Conference Rooms ;----------------------------------------------------------- [internal-conf] exten => _*2X,1,Answer exten => _*2X,n,Wait(1) exten => _*2X,n,MeetMe({$ARG1},pdcMs) exten => _*2X,n,4,Playback(vm-goodbye) exten => _*2X,n,5,Hangup ;---------------------------------------------------------- ; *30 - *39 - Reserved For Local Assignment ;---------------------------------------------------------- ; *40 - *46 - Reserved For Local Assignment ;---------------------------------------------------------- ;*47 - *48 Anonymous Call Rejection ;---------------------------------------------------------- [acr] ; *47 - Deactivation exten => *47,1,DBdel(${DB(ACR/${CALLERIDNUM})}) exten => *47,n,Answer exten => *47,n,Wait(1) exten => *47,n,Playback(anon-call-rej) exten => *47,n,Playback(deactivated) exten => *47,n,Hangup ; ; *48 - Activation exten => *48,1,Set(${DB(ACR/${CALLERIDNUM}=YES)}) exten => *48,n,Answer exten => *48,n,Wait(1) exten => *48,n,Playback(anon-call-rej) exten => *48,n,Playback(activated) exten => *48,n,Hangup ;----------------------------------------------------------- ; *49 - *50 Caller Id Blocking ;----------------------------------------------------------- [cidb] ; *49 - Deactivate exten => *49,1,DBdel(${DB(CIDB/${CALLERIDNUM})}) exten => *49,n,Answer exten => *49,n,Wait(1) exten => *49,n,Playback(caller-id-blk) exten => *49,n,Playback(deactivated) exten => *49,n,Hangup ; ; *50 - Activate exten => *50,1,Set(${DB(CIDB/${CALLERIDNUM}=YES)}) exten => *50,n,Answer exten => *50,n,Wait() exten => *50,n,Playback(caller-id-blk) exten => *50,n,Playback(activated) exten => *50,n,Hangup ;----------------------------------------------------------- ;*51 -*52 Call Back Busy ;----------------------------------------------------------- [cbb] ; *51 - Dectivate exten => *51,1,DBdel($DB(CBB/${CALLERIDNUM})}) exten => *51,n,Answer exten => *51,n,Wait(1) exten => *51,n,Playback(de-activated) exten => *51,n,Hangup ; ; *52 - Activate exten => *52,1,Set(${DB(CBB/${CALLERIDNUM}=YES)}) exten => *52,n,Answer exten => *52,n,Wait(1) exten => *52,n,Playback(activated) exten => *52,n,Hangup ;---------------------------------------------------------- ;*53 - *55 Selective Call Waiting ;---------------------------------------------------------- [scw] ; *53 - Deactivate exten => *53,1,DBdel(${DB(SCW/${CALLERIDNUM})}) exten => *53,n,DBdel(${DB(SCWN/${CALLERIDNUM})}) exten => *53,n,Answer exten => *53,n,Wait(1) exten => *53,n,Playback(deactivated) exten => *53,n,Hangup ; ; *54 - Activate exten => *54,1,Set(${DB(SCW/${CALLERIDNUM}=YES)}) exten => *54,n,Answer exten => *54,n,Wait(1) exten => *54,n,Playback(activated) exten => *54,n,Hangup ; ; *55 - Selective Call Waiting Number exten => _*55.,1,Set(${DB(SCWN/${EXTEN:3}=${EXTEN})}) exten => _*55.,n,Answer exten => _*55.,n,Wait(1) exten => _*55.,n,Playback(selective-call-waiting) exten => _*55.,n,Playback(for) exten => _*55.,n,Playback(extension) exten => _*55.,n,SayDigits(${CALLERIDNUM}) exten => _*55.,n,Playback(is-set-to) exten => _*55.,n,SayDigits(${EXTEN:3}) ;-------------------------------------------------------------- ; *56 - *58 Selective Call Acceptance ;-------------------------------------------------------------- [sca] ; *56 - Deactivation exten => *56,1,DBdel(${DB(SCA/${CALLERIDNUM})}) exten => *56,n,DBdel(${DB(SCAN/${CALLERIDNUM})}) exten => *56,n,Answer exten => *56,n,Wait(1) exten => *56,n,Playback(deactivated) exten => *56,n,Hangup ; ; *57 - Activation exten => *57,1,Set(${DB(SCA/${CALLERIDNUM}=YES)}) exten => *57,n,Answer exten => *57,n,Wait(1) exten => *57,n,Playback(activated) exten => *57,n,Hangup ; ; *58 - Selective Call exten number exten => _*58.,n,Playback(pls-entr-sca-numb) exten => _*58.,n,Set(${DB(SCAN/${CALLERIDNUM}=${EXTEN:3})}) exten => _*58.,n,Answer exten => _*58.,n,Wait(1) exten => _*58.,n,Playback(selective-call-acceptance) exten => _*58.,n,Playback(for) exten => _*58.,n,Playback(extension) exten => _*58.,n,SayDigits(${CALLERIDNUM}) exten => _*58.,n,Playback(is-set-to) exten => _*58.,n,SayDigits(${EXTEN:3}) ;--------------------------------------------------------------------- ;*60 - 63 - Reserved For Local Assignment ;--------------------------------------------------------------------- ; *64 - *67 Calling Blocking ;--------------------------------------------------------------------- [cb] ; *64 - Deactivation exten => *64,1,DBdel(${DB(CB/${CALLERIDNUM})}) exten => *64,n,Answer exten => *64,n,Wait(1) exten => *64,n,Playback(call-blocking) exten => *64,n,Playback(deactivated) exten => *64,n,Hangup ; ; *65 - Activation exten => *65,1,Set(${DB(CB/${CALLERIDNUM}=YES)}) exten => *65,n,Answer exten => *65,n,Wait(1) exten => *65,n,Playback(call-blocking) exten => *65,n,Playback(activated) exten => *65,n,Hangup ; ; *66 - Calling Blocking add nmbr to database exten => _*66.,1,Answer exten => _*66.,n,Set(${DB(CBN/${EXTEN:3}=${EXTEN:5})}) exten => _*66.,n,Wait(1) exten => _*66.,n,Playback(call-block-num) exten => _*66.,n,SayDigits(${EXTEN:2:3}) exten => _*66.,n,Playback(has-been-set-to) exten => _*66.,n,SayDigits(${EXTEN}) exten => _*66.,n,Hangup ; ; *67 - Calling Blocking Clear Number From Database exten => _*67.,1,Answer exten => _*67.,n,Set(${DB(CBN/${EXTEN:3})}) exten => _*67.,n,Wait(1) exten => _*67.,n,Playback(call-blocking-num) exten => _*67.,n,SayDigits(digits/${EXTEN:2:3}) exten => _*67.,n,Playback(has-been-cleared) exten => _*67.,n,Hangup ;---------------------------------------------------------------- ; *68 - Reserved For Local Assignment ;---------------------------------------------------------------- ;*69 - Who Called Me & Call Back ;---------------------------------------------------------------- [wcacb] exten => *69,1,Cut(CHANRES=CHANNEL|-|1) exten => *69,n,Cut(EXTENSION=CHANRES|/|2) exten => *69,n,Macro(calltrace,1,${EXTENSION}) ;[macro-calltrace] exten => s,1,Answer exten => s,2,Wait(1) exten => s,3,SetVar(${DB(LastCaller=LASTCALL/${ARG1})}) exten => s,4,GotoIf($[${LastCaller}]?5:10) exten => s,5,SayDigits(${LastCaller}) exten => s,6,DigitTimeout(3) exten => s,7,ResponseTimeout(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 ;[app-lastcallreturn] ;exten => s,1,Wait,1 ;exten => s,n,Answer ;exten => s,n,Playback(last-num-to-call) ;exten => s,n,Set(${DB(number=LCR/${CALLERIDNUM}/lastcall)}) ;exten => s,n,GotoIf($"${number}" = ""?s-nonum,1) ;exten => s,n,SayDigits(${number}) ;exten => s,n,Wait,.5 ;exten => s,n,SayDigits(${number}) ;exten => s,n,Wait,1 ;exten => s,n,Playback(to-call-num-press) ;exten => s,n,Playback(digits/1) ;exten => 1,1,Goto(outbound,${number},1) ;exten => s-nonum,1,Playback(unidentified-no-callback) ;exten => s-nonum,2,Hangup ;------------------------------------------------------------------------------- ; Call Waiting ;------------------------------------------------------------------------------- [cw] ; *70 - Deactivate exten => *70,1,DBdel(CW/${CALLERIDNUM}) exten => *70,n,Answer exten => *70,n,Wait(1) exten => *70,n,Playback(call-waiting) exten => *70,n,Playback(de-activated) exten => *70,n,Hangup ; ; *71 - Activate exten => *71,1,Set(${DB(CW/${CALLERIDNUM}=YES)}) exten => *71,n,Answer exten => *71,n,Wait(1) exten => *71,n,Playback(call-waiting) exten => *71,n,Playback(activated) exten => *71,n,Hangup ;-------------------------------------------------------------------------------- ; *72 - *73 Call Forwarding ;-------------------------------------------------------------------------------- [cf] ; * 72 - Deactivation exten => *72,1,Set(${DB(CF/${CALLERIDNUM})}) exten => *72,2,Answer exten => *72,3,Wait(1) exten => *72,4,Playback(call-fwd-cancelled) exten => *72,5,Hangup ; ; *73 - Activation exten => _*73.,1,Set(${DB(CF/${CALLERIDNUM}=${EXTEN:3})}) exten => _*73.,2,Answer exten => _*73.,3,Wait(1) exten => _*73.,4,Playback(call-fwd-unconditional) exten => _*73.,5,Playback(for) exten => _*73.,6,Playback(extension) exten => _*73.,7,SayDigits(${CALLERIDNUM}) exten => _*73.,8,Playback(is-set-to) exten => _*73.,9,SayDigits(${EXTEN:3}) ;-------------------------------------------------------------------------------- ; *74 - *76 Selective Call Forwarding ;-------------------------------------------------------------------------------- [scf] ; *74 - DeActivation exten => *74,1,DBdel(${DB(SCF/${CALLERIDNUM})}) exten => *74,n,Answer exten => *74,n,Wait(1) exten => *74,n,Playback(selective-call-fwd) exten => *74,n,Wait(1) exten => *74,n,Playback(deactivated) exten => *74,n,Hangup ; ; *75 - Selective Call Forwarding Number matching exten => _*75.,1,Set(${DB(SCFE/${CALLERIDNUM}=${EXTEN:3})}) exten => _*75.,n,Answer exten => _*75.,n,Wait(1) exten => _*75.,n,Playback(selective-call-forwarding) exten => _*75.,n,Playback(for) exten => _*75.,n,Playback(extension) exten => _*75.,n,SayDigits(${CALLERIDNUM}) exten => _*75.,n,Playback(is-set-to) exten => _*75.,n,SayDigits(${EXTEN:3}) ; ; *76 - Selective Call Forwarding exten => _*76.,1,Set(${DB(SCFN/${EXTEN:3}=${EXTEN:4})}) exten => _*76.,n,Answer exten => _*76.,n,Wait(1) exten => _*76.,n,Playback(selective-call-waiting) exten => _*76.,n,Playback(for) exten => _*76.,n,Playback(extension) exten => _*76.,n,SayDigits(${CALLERIDNUM}) exten => _*76.,n,Playback(is-set-to) exten => _*76.,n,SayDigits(${EXTEN:3}) ;------------------------------------------------------------------------------ ; *77 - *78 Call Forwarding Don't Answer ;------------------------------------------------------------------------------ [cfna] ; *77 - Deactivation exten => *77,1,DBdel(CFDNA/${CALLERIDNUM}) exten => *77,n,Answer exten => *77,n,Wait(1) exten => *77,n,Playback(call-fwd-no-ans) exten => *77,n,Playback(de-activated) exten => *77,n,Hangup ; *78 - Activation exten => _*78.,1,Set(${DB(CFDNA/${CALLERIDNUM}=${EXTEN:3})}) exten => _*78.,n,Answer exten => _*78.,n,Wait(1) exten => _*78.,n,Playback(call-fwd-no-ans) exten => _*78.,n,Playback(for) exten => _*78.,n,Playback(extension) exten => _*78.,n,SayDigits(${CALLERIDNUM}) exten => _*78.,n,Playback(is-set-to) exten => _*78.,n,SayDigits(${EXTEN:3}) ;------------------------------------------------------------------------------- ; *79 - *80 Call Forwarding Busy ;------------------------------------------------------------------------------- [cfb] ; *79 - Deactivation exten => *79,1,DBdel(CFB/${CALLERIDNUM}) exten => *79,n,Answer exten => *79,n,Wait(1) exten => *79,n,Playback(call-fwd-on-busy) exten => *79,n,Playback(de-activated) exten => *79,n,Hangup ; ; *80 - Activation exten => _*80.,1,Set(${DB(CFB/${CALLERIDNUM}=${EXTEN:3})}) exten => _*80.,n,Answer exten => _*80.,n,Wait(.5) exten => _*80.,n,Playback(call-fwd-on-busy) exten => _*80.,n,Playback(for) exten => _*80.,n,Playback(extension) exten => _*80.,n,SayDigits(${CALLERIDNUM}) exten => _*80.,n,Playback(is-set-to) exten => _*80.,n,SayDigits(${EXTEN:3}) ;------------------------------------------------------------------------------- ; *81 - *83 - Reserved For Local Assignment ;------------------------------------------------------------------------------- ; *84 - *85 Voicemail Checking / Retriving ;------------------------------------------------------------------------------- [voicemail] ;voice mailman Promts for mailbox nmbr and paswwor exten => *84,1,VoicemailMain exten => *84,n,Hangup ; ;voice mailman with exten/callerid checking. if callerid/exten match ;prompts for password eslse prompts for mailbox/password exten => *85,1,VoicemailMain(${CALLERIDNUM}) exten => *85,n,Hangup ;------------------------------------------------------------------------------- ; *86 - *87 voicemail ;------------------------------------------------------------------------------- [vm] ; *86 - Deactivation exten => *86,1,DBdel(${DB(VM/${CALLERIDNUM})}) exten => *86,n,Answer exten => *86,n,Wait(1) exten => *86,n,Playback(deactivated) exten => *86,n,Hangup ; ; *87 - Activation exten => *87,1,Set(${DB(VM/${CALLERIDNUM}=YES)}) exten => *87,n,Answer exten => *87,n,Wait(.5) exten => *87,n,Playback(activated) exten => *87,n,Hangup ;-------------------------------------------------------------------------------- ;*88 - *89 Do Not Disturb ;-------------------------------------------------------------------------------- [dnd] ; *88 - Deactivation exten => *88,1,Answer exten => *88,n,Set(${DB(DND/${CALLERIDNUM})}) exten => *88,n,Wait(.5) exten => *88,n,Playback(do-not-disturb) exten => *88,n,Playback(de-activated) exten => *88,n,Hangup ; ; *89 - Activation exten => *89,1,Answer exten => *89,n,Set(${DB(DND/${CALLERIDNUM}=YES)}) exten => *89,n,Wait(.5) exten => *89,n,Playback(do-not-disturb) exten => *89,n,Playback(activated) exten => *89,n,Hangup ; ;-------------------------------------------------------- ; *90 - *99 - Reserved For Local Assignment ;-------------------------------------------------------- ;-------------------------------------------------------- ; End - Basic *XX Exten Logic ;-------------------------------------------------------- ;-------------------------------------------------------- ; Start Basic Exten Logic ;-------------------------------------------------------- ;-------------------------------------------------------- ;Basic exten nmbrs For Asterisk ;Including macros that go with the exten ;-------------------------------------------------------- [basic-exten] include => outbound include => paging include => special include => digium include => parking include => internal-conf include => prompts include => tranfer-queue include => agentlogin include => devconf ; ;--------------------------------------------------------------- ;special lines set functions ;--------------------------------------------------------------- [special] ; 311 - non-emerg not yet setup for e911 Non Emerg exten => 311,1,Dial(SIP/local non emergancy nmbr here) exten => 311,2,Congestion exten => 311,102,Playback(ss-noservice) exten => 311,103,Congestion ; ; 411 - Directory Asistance exten => 411,1,Dial(SIP/411@gateway,30) exten => 411,2,Congestion exten => 411,102,Playback(ss-noservice) exten => 411,n,hangup ; ; 511 Wakeup Service exten => 511,1,Answer exten => 511,n,AGI(callback.agi) exten => 511,n,Hangup ; ; 611 - Repair line exten => 611,1,Dial(IAX2/1004|18|r) exten => 611,n,Voicemail(u611) exten => 611,n,Playback(vm-goodbye) exten => 611,n,Hangup ; ; 911 Emergancy ;exten => 911,1,Dial(SIP/${EXTEN}) ;exten => 911,n,Congestion exten => 911,1,Answer exten => 911,n,Playback(no-911-1) exten => 911,n,Congestion ;--------------------------------------------------------------- ; 2 - 92 Reserved For Local Assignment ;--------------------------------------------------------------- ; 93 - 95 Put call in the queue for the next available agent [tranfer-queue] exten => 93,1,Answer exten => 93,n,Wait,1 exten => 93,n,Queue(sales) exten => 93,n,Hangup ;--------------------------------- exten => 94,1,Answer exten => 94,n,Wait,1 exten => 94,n,Queue(billing) exten => 94,n,Hangup ;--------------------------------- exten => 95,1,Answer exten => 95,n,Wait,1 exten => 95,n,Queue(techsupport) exten => 95,n,Hangup ;------------------------------------------------------------------ ; 96 - 98 - Reserved For future queue tranfers ;------------------------------------------------------------------ ; 99 -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,n,SetMusicOnHold(default) exten => 99,n,Wait,1 exten => 99,n,AgentLogin ;------------------------------------------------------------------ ; 100-105 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] exten => 100,1,AddQueueMember(sales|SIP/${CALLERIDNUM}) exten => 100,n,Playback(agent-loginok) exten => 100,n,Hangup exten => 101,1,RemoveQueueMember(sales|SIP/${CALLERIDNUM}) exten => 101,n,Playback(agent-loggedoff) exten => 101,n,Hangup ; exten => 102,1,AddQueueMember(billing|SIP/${CALLERIDNUM}) exten => 102,n,Playback(agent-loginok) exten => 102,n,Hangup exten => 103,1,RemoveQueueMember(billing|SIP/${CALLERIDNUM}) exten => 103,n,Playback(agent-loggedoff) exten => 103,n,Hangup ; exten => 104,1,AddQueueMember(techsupport|SIP/${CALLERIDNUM}) exten => 104,n,Playback(agent-loginok) exten => 104,n,Hangup exten => 105,1,RemoveQueueMember(techsupport|SIP/${CALLERIDNUM}) exten => 105,n,Playback(agent-loggedoff) exten => 105,n,Hangup ;------------------------------------------------------------------- ; 106 - 199 - Reserved For Local Assignment ;------------------------------------------------------------------- ; 200 - 202 Basic Call Queue's 200-202 [queues] exten => 200,1,Answer exten => 200,n,Queue(sale|TtH) exten => 200,n,WaitMusicOnHold(45) exten => 200,n,Voicemail(u200) exten => 200,n,Playback(vm-goodbye) exten => 200,n,Hangup ; exten => 201,1,Answer exten => 201,n,Queue(billing|TtH) exten => 201,n,WaitMusicOnHold(45) exten => 201,n,Voicemail(u201) exten => 201,n,Playback(vm-goodbye) exten => 201,n,Hangup ; exten => 202,1,Answer exten => 202,n,Queue(techsupport|TtH) exten => 202,n,WaitMusicOnHold(45) exten => 202,n,Voicemail(u202) exten => 202,n,Playback(vm-goodbye) exten => 202,n,Hangup ;-------------------------------------------------------------------- ; 203 - 210 - Reserved For Local Assignment ;-------------------------------------------------------------------- ; 211 -used ;-------------------------------------------------------------------- ; 212 - 299 - Reserved For Local Assignment ;------------------------------------------------------------------------- ; 300 - 310 - Reserved For Local Assignment ;------------------------------------------------------------------------- ;311 used ;------------------------------------------------------------------------- ; 312 - 399 Reserved For Local Assignment ;------------------------------------------------------------------------- ; 400 - 410 Reserved For Local Assignment ;------------------------------------------------------------------------- ;411 used ;-------------------------------------------------------------------------- ; 412 - 499 - Reserved For Local Assignment ;--------------------------------------------------------------------------- ; 500 - Dials Digium Demo via IAX [digium] exten => 500,1,Dial(IAX2/guest@misery.digium.com/s@default) ; Call the Asterisk demo exten => 500,n,Hangup ;--------------------------------------------------------------------------- ; 501 - Dial Developers Confrance [devconf] exten => 501,1,Dial(IAX2/guest@66.250.68.194/996) exten => 501,n,Hangup ;---------------------------------------------------------------------------- ; 502 - 510 - Reserved For Local Assignment ;---------------------------------------------------------------------------- ; 511 used ;---------------------------------------------------------------------------- ; 512 - 599 Reserved For Local Assignment ;---------------------------------------------------------------------------- ; 601 - 610 Reserved For Local Assignment ;---------------------------------------------------------------------------- ; 611 used ;------------------------------------------------------------------------------ ; 612 - 699 Reserved For Local Assignment ;------------------------------------------------------------------------------ ; 700 - 709 Call Parking on Asterisk also includes blind parking [parking] exten => 700,1,Answer exten => 700,n,SetMusicOnHold(default) exten => 700,n,ParkAndAnnounce(PARKED|60|SIP/${EXTEN}|70|4) exten => _70X,1,ParkedCall(${EXTEN}) ;--------------------------------------------------------------------------------- ; 711 - 797 Reserved For Local Assignmen ;--------------------------------------------------------------------------------- ; 798 - 799 Confrance Stream Linsten to confrance call only ; requires ices and icecast. ;--------------------------------------------------------------------------------- [stream] ; Conference Room ;exten => 798,1,Answer ;exten => 798,n,Wait(1) ;exten => 798,n,MeetMe(809) ; Stream ;exten => 799,1,Answer ;exten => 799,n,Wait(1) ;exten => 799,n,Ices(/usr/local/etc/asterisk/asterisk-icesxml) ;------------------------------------------------------------------------------- ; 800 - 899 Reserved For Local Assignment ;---------------------------------[macro-add-caller-id] 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,Set(${DB(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,Set(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()----------------------------------------------- ;------------------------------------------------------------------------------- ; 900 - 910 Reserved For Local Assignment ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; 912 - 986 Reserved For Local Assignment ;------------------------------------------------------------------------------- ; 987 - Disa using voicemail passowords via agi ;[outside-inside] ;exten => 987,1,Answer ; 468 - INT ;exten => 987,n,Wait(1) ;exten => 987,n,Playback(please-enter-the) ;exten => 987,n,Playback(extension) ;exten => 987,n,Read(int_extension,then-press-pound) ;exten => 987,n,Playback(pls-enter-vm-password) ;exten => 987,n,Read(vm_passwd,then-press-pound) ;exten => 987,n,AGI(internal_authphp|${int_extension},${vm_passwd}) ;exten => 987,n,Set(CALLERIDNUM=${int_extension}) ;exten => 987,n,DISA(no-password|from-internal) ;exten => 987,101,Playback(vm-incorrect) ;exten => 987,102,Goto(3) ; ;exten => *987,1,Answer ;exten => *987,2,Read(ext_num,vm-extension) ;exten => *987,3,Wait(1) ;exten => *987,4,Read(ext_pwd,vm-password) ;exten => *987,5,Wait(1) ;exten => *987,6,agi,chk_vm_pwd.agi|/etc/asterisk/voicemail.conf|${ext_num}|${ext_pwd} ;exten => *987,7,GotoIf($["${result}" = "0"]?20:30) ;exten => *987,20,Playback(agent-loginok) ; ;exten => *987,21,Hangup() ;exten => *987,30,PlayBack(invalid) ;exten => *987,31,Hangup() ;------------------------------------------------------------------------------- ; 988 & 989 Pront recording and and special prompt recording + enable disable ;------------------------------------------------------------------------------- [prompts] ;----------------------------------------------------- ;988 - Prompt management ;----------------------------------------------------- exten => 988,1,Goto(prompt-management,s,1) ; [prompt-management] ; Flexible prompt recording exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,DigitTimeout(5) exten => s,n,Read(PROMPT_NUMBER|enter-prompt-number|3) exten => s,n,SayDigits(${PROMPT_NUMBER}) 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 => t,1,Playback(goodbye) exten => t,n,Hangup ; exten => i,1,Playback(pbx-invalid) exten => i,n,Goto(s,5) ; exten => 1,1,Playback(beep) exten => 1,n,Playback(bsky-prompt-${PROMPT_NUMBER}) exten => 1,n,Playback(beep) exten => 1,n,Goto(s,6) ; exten => 2,1,Goto(prompt-management-record,s,1) exten => *,1,Playback(goodbye) exten => *,n,Hangup ; [prompt-management-record] ; New prompt recording exten => s,1,Playback(vm-intro) exten => s,n,Record(tmp-newprompt:wav) exten => s,n,Playback(beep) exten => s,n,BackGround(tmp-newprompt) 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/tmp-newprompt.wav /var/lib/asterisk/sounds/prompt-${PROMPT_NUMBER}.wav) exten => 1,n,Playback(your-msg-has-been-saved) exten => 1,n,Goto(app-prompt-management,s,4) ; exten => 2,1,Goto(s,1) ; exten => *,1,Goto(app-prompt-management,s,4) ;------------------------------------------------------- ; 989 - Special announcement admin (Easy IVR) ;------------------------------------------------------- exten => 989,1,Goto(special-message,s,1) ; [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 ; ;---------------------------------------------------------------------------------- ; 997 - 999 Reserved For Assignment ;---------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------- ; End - Basic Exten Logic ;---------------------------------------------------------------------------------- ; Start Dundi-e164 Setup ;---------------------------------------------------------------------------------- ;[dundi-e164-customers] ; ; If you are an ITSP or Reseller, list your customers here ; ;exten => _12564286000,1,Dial(SIP/customer1) ;exten => _12564286001,1,Dial(IAX2/customer2) ; ;[dundi-e164-via-pstn] ; ; If you are freely delivering calls to the PSTN, list them here ; ;exten => _1256428XXXX,1,Dial(Zap/g2/${EXTEN:7}) ; Expose all of 256-428 ;exten => _1256325XXXX,1,Dial(Zap/g2/${EXTEN:7}) ; Ditto for 256-325 ; [dundi-e164-local] ; ; Context to put your dundi IAX2 or SIP user in for ; full access ; ;include => dundi-e164-canonical ;include => dundi-e164-customers ;include => dundi-e164-via-pstn ; ;[dundi-e164-switch] ; ; Just a wrapper for the switch ; ;switch => DUNDi/e164 ; ;[dundi-e164-lookup] ; ; Locally to lookup, try looking for a local E164 solution ; then try DUNDi if we don't have one ; ;include => dundi-e164-local ;include => dundi-e164-switch ; ; DUNDi can also be implemented as a Macro instead of using ; the Local channel driver ; ;[macro-dundi-e164] ; ; ARG1 is the extension to Dial ; ;exten => s,1,Goto(${ARG1},1) ;include => dundi-e164-lookup ; ;------------------------------------------------------------------------ ; End - Dundi ;------------------------------------------------------------------------ ;------------------------------------------------------------------------ ; Start - System Macro's area ;------------------------------------------------------------------------ ;--------------------------------------------------------------------------- ;festival ;--------------------------------------------------------------------------- ;[macro-festival]; Requiers festival to be installed and configured ;exten => s,1,Answer ;exten => s,2,Festival('') ;exten => s,3,Hangup ;--------------------------------------------------------------------------- [macro-record-on] exten => s,1,AGI(set-timestampagi) exten => s,2,Set(CALLFILENAME=${timestamp}-${ARG2}-${ARG1}) exten => s,3,Monitor(gsm,${CALLFILENAME}) ; [macro-record-cleanup] exten => s,1,GotoIf($[${CALLFILENAME} = ${NULL}]?6:2) exten => s,2,Set(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}-inwav ${CFBASE}-outwav > ${CFBASE}) exten => s,4,System(/bin/rm ${CFBASE}-inwav ${CFBASE}-outwav) ; 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 ;-------------------------------------------------------------------- ; Start - Internal Extension Dialing config / Macro ;-------------------------------------------------------------------- ; 1000 - 9999 Internal SIP/IAX/MGCP/H323/SCCP/SKINNY/ECT USER EXTEN ;--------------------------------------------------------------------------- [all-exten] exten => _1XXX,1,Macro(stdexten,${EXTEN}) ; exten => *1004,1,Dial(IAX2/1004|20|T) ; 20sec timeout exten => *1004,2,Voicemail(u1004) exten => *1004,3,Hangup exten => *1004,102,Voicemail(b1004) exten => *1004,103,Hangup ;--------------------------------------------------------------------------- ; [macro-stdexten] exten => s,1,SetVar((DNDStatus=DND/${ARG1}) exten => s,2,GotoIf(${DNDStatus}=YES?107:5) exten => s,3,Set(${DB(LASTCALL/${ARG1})=${CALLERIDNUM})}) exten => s,4,Dial(IAX2/${ARG1}|20|Tr) ; 20sec timeout exten => s,5,Voicemail(u${ARG1}) exten => s,6,Hangup exten => s,105,Voicemail(b${ARG1}) exten => s,106,Hangup;include => speeddial ; ; [macro-stdexten-new] ; still working on issues ; exten => s,1,GotoIf(${DB(CF/${ARG1})}?2:3) ;Gets Call Forward Number exten => s,2,Dial(SIP/${DB(CF/${ARG1})}/n) ;Dials the Forwarding Number ; exten => s,4,GotoIf(${DB(SCFE/${ARG1})}?5:6) ;Get Selective Call Forward Number exten => s,5,Dial(SIP./${DB(SCFN/${ARG1})}/n) ;Selective Call Forward ; exten => s,7,GotoIf(${DB(SCRN/${ARG1})}?8:9) ;Get Selective Call Rejection Status exten => s,8,Hangup ;Sends Rejected calls to a all extensions are busy macro. ; exten => s,9,Set(${DB(ACRStatus=ACR/${ARG1})}) exten => s,10,GotoIf(${ACRStatus}=YES?11:12) ;Get Anonymous Call Rejection Status exten => s,11,Macro(no-callerid) ; exten => s,12,Set(${DB(DNDStatus=DND/${ARG1})}) ;Sets the variable for the Do not disturb responce exten => s,13,GotoIf($DB({DNDStatus}=YES?18:14) ;Checks the Database for the status/ responce ; exten => s,14,Set(${DB(LASTCALL/${ARG1})=${CALLERIDNUM}) ;Places Current caller ID into the Database exten => s,15,Dial(SIP/${ARG1}|${ARG2}|r) ;Dials the extension and waits for the time out ; exten => s,16,GotoIf(${DB(CFNA/${ARG1})}?16:17) ;Call Forwarding On No Answer exten => s,17,Dial(SIP/${DB(CFNA/${ARG1})}/n) ;Dials the No Answer forward Number exten => s,18,Set(${DB(VMStatus=VM/${ARG1})}) ; Checks to see if user has voice mail active or disabled. exten => s,19,GotoIf(${VMStatus}=YES?20:118) ; If active it goes to voice mail. If not active it goes to busy- call checking macro. exten => s,20,Voicemail(u${ARG1}) ;Goes to the unavaible Voicemail exten => s,21,Playback(vm-goodbye) ;Plays Voicemail Goodbye exten => s,22,Hangup ;Does a hard hangup ; exten => s,116,GotoIf(${DB(CFB/${ARG1})}?117:118) ;Gets the Call Forwading On Busy status/number exten => s,117,Dial(Local/${DB(CFB/${ARG1})}/n) ;Dials the CallForwarding nmber/exten ; exten => s,118,Set(${DB(CBBStatus=CBB/${ARG1})}) exten => s,119,GotoIf(${CBBStatus}=YES?120:121) ;Checks to see if call back busy is activated. then if activated it exten => s,120,Macro(busy-callback) ;goes to the busy-call back macro below ; exten => s,121,Voicemail(b${ARG1}) ;Goes to the Busy Voicemail exten => s,122,Playback(vm-goodbye) ;Plays Voicemail Goodbye exten => s,123,Hangup ;Does a hard hangup ;If extension does not exist it gives tritone + number unassigned message to unasigned numbers exten => i,1,Answer exten => i,n,Playback(the-number-u-dialed,noanswer) exten => i,n,SayDigits(${ARG1}) exten => i,n,Playback(not-yet-assigned,noanswer) exten => i,n,Busy ; [macro-caller-id] 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(stdexten,s,12) ;landing point with caller id ; [macro-no-callerid] ; I use this to send people I dont want to deal with exten => s,1,Answer exten => s,n,Wait() exten => s,n,Playback(no-callerid) exten => s,n,Wait() exten => s,n,Playback(vm-goodbye) exten => s,n,Congestion exten => s,n,Hangup ; [macro-busy-callback] exten => s,1,Answer exten => s,n,Wait() exten => s,n,Background(exten-busy-callback) exten => s,n,DigitTimeout,5 exten => s,n,ResponseTimeout,1 ; exten => 1,1, ; ;-------------------------------------------------------------------- ; End - Interl Dialing config / Macro ;-------------------------------------------------------------------- ;------------------------------------------------------ ; Start - User Permissions/Privilages ;------------------------------------------------------ [admin] include => basic include => basic-exten include => exten-test include => all-exten include => asterlink ; ;------------------------------------------------------ ; End - User Permissions/Privilages ;------------------------------------------------------ ;------------------------------------------------------ ;End Of extensionsconf File ;------------------------------------------------------ ; ;------------------------------------------------------ ;items to be fixed and tested & implamented ;------------------------------------------------------ [macro-add-caller-id] 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,Set(${DB(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,Set(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()