Moderators: gerski, enjay, williamconley, Op3r, Staydog, gardo, mflorell, MJCoate, mcargile, Kumba, Michael_N
Below is our sip.conf setting:
[general]
port = 5060
bindaddr = 0.0.0.0
context = from-pstn
; register SIP account on remote machine if using SIP trunks
register => xx.xxx.xxx.xx (our AsteriskIP)@ xx.xxx.xxx.xx (ourtelecomproviderip):5060
;
; setup account for SIP trunking:
[SIPtrunk]
disallow=all
allow=ulaw
allow=alaw
type=friend
username=testSIPtrunk
secret=test
host=xx.xxx.xxx.xx (ourtelecomproviderip)
dtmfmode=rfc2833
insecure=verycanreinvite=no
qualify=yes
[gs102]
disallow=all
allow=ulaw
allow=alaw
type=peer
# username=gs102
# secret=test
host=ourtelecomproviderip
dtmfmode=rfc2833
qualify=1000
mailbox=102
[spa2000]
disallow=all
allow=ulaw
allow=alaw
type=friend
username=spa2000
secret=test
host=dynamic
dtmfmode=rfc2833
qualify=1000
mailbox=2000
[spa2001]
disallow=all
allow=ulaw
allow=alaw
type=friend
username=spa2001
secret=test
host=dynamic
dtmfmode=inband
canreinvite=no
qualify=1000
mailbox=2001
; XXX Not yet implemented XXX
;
static=yes
;
; if static=yes and writeprotect=no, you can save dialplan by
; CLI command 'save dialplan' too
;
writeprotect=no
;
; 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).
;
; 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 1.0 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 extensions.conf or
; one of its included files, will remain set to the previous value.
;
clearglobalvars=no
;
; If priorityjumping is set to 'yes', then applications that support
; 'jumping' to a different priority based on the result of their operations
; will do so (this is backwards compatible behavior with pre-1.2 releases
; of Asterisk). Individual applications can also be requested to do this
; by passing a 'j' option in their arguments.
;
priorityjumping=no
;
; 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 "filename.conf"
; The "Globals" category contains global variables that can be referenced
; in the dialplan with ${VARIABLE} or ${ENV(VARIABLE)} for Environmental
; variables,
; ${${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/g1
TRUNK=Zap/g2 ; Trunk interface
;
; Note the 'g2' in the TRUNK variable above. It specifies which group (defined
; in zapata.conf) to dial, i.e. 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
;
; 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 (e.g. _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.
;
;[context]
;exten => someexten,priority[+offset][(alias)],application(arg1,arg2,...)
;exten => someexten,priority[+offset][(alias)],application,arg1|arg2...
;
; Timing list for includes is
;
; <time range>|<days of week>|<days of month>|<months>
;
;include => daytime|9:00-17:00|mon-fri|*|*
;
; ignorepat can be used to instruct drivers to not cancel dialtone upon
; receipt of a particular pattern. The most commonly used example is
; of course '9' like this:
;
;ignorepat => 9
;
; so that dialtone remains even after dialing a 9.
;
;
; Sample entries for extensions.conf
;
;
[dundi-e164-canonical]
;
; List canonical entries here
;
;exten => 12564286000,1,Macro(std-exten,6000,IAX2/foo)
;exten => _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7})
[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 E.164 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
;
; Here are the entries you need to participate in the IAXTEL
; call routing system. Most IAXTEL numbers begin with 1-700, but
; there are exceptions. For more information, and to sign
; up, please go to www.gnophone.com or www.iaxtel.com
;
[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)
;
; The SWITCH statement permits a server to share the dialplain with
; another server. Use with care: Reciprocal switch statements are not
; allowed (e.g. both A -> B and B -> A), and the switched server needs
; to be on-line or else dialing can be severly delayed.
;
[iaxprovider]
;switch => IAX2/user:[key]@myserver/mycontext
[trunkint]
;
; International long distance through trunk
;
exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
exten => _9011.,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunkld]
;
; Long distance context accessed through trunk
;
exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
exten => _91NXXNXXXXXX,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunklocal]
;
; Local seven-digit dialing accessed through trunk interface
;
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunktollfree]
;
; Long distance context accessed through trunk interface
;
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[international]
;
; Master context for international long distance
;
ignorepat => 9
include => longdistance
include => trunkint
[longdistance]
;
; Master context for long distance
;
ignorepat => 9
include => local
include => trunkld
[local]
;
; Master context for local, toll-free, and iaxtel calls only
;
ignorepat => 9
include => default
include => parkedcalls
include => trunklocal
include => iaxtel700
include => trunktollfree
include => iaxprovider
;
; You can use an alternative switch type as well, to resolve
; extensions that are not known here, for example with remote
; IAX switching you transparently get access to the remote
; Asterisk PBX
;
; switch => IAX2/user:password@bigserver/local
;
; An "lswitch" is like a switch but is literal, in that
; variable substitution is not performed at load time
; but is passed to the switch directly (presumably to
; be substituted in the switch routine itself)
;
; lswitch => Loopback/12${EXTEN}@othercontext
;
; An "eswitch" is like a switch but the evaluation of
; variable substitution is performed at runtime before
; being passed to the switch routine.
;
; eswitch => IAX2/context@${CURSERVER}
[macro-stdexten];
;
; Standard extension macro:
; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
; ${ARG2} - Device(s) to ring
;
exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum
exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status
(NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${ARG1}) ; If unavailable, send to
voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(b${ARG1}) ; If busy, send to voicemail
w/ busy announce
exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the
user into VoicemailMain
[macro-stdPrivacyexten];
;
; Standard extension macro:
; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
; ${ARG2} - Device(s) to ring
; ${ARG3} - Optional DONTCALL context name to jump to (assumes the
s,1 extension-priority)
; ${ARG4} - Optional TORTURE context name to jump to (assumes the
s,1 extension-priority)`
;
exten => s,1,Dial(${ARG2},20|p) ; Ring the interface, 20 seconds
maximum, call screening option (or use P for databased call screening)
exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status
(NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${ARG1}) ; If unavailable, send to
voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(b${ARG1}) ; If busy, send to voicemail
w/ busy announce
exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
exten => s-DONTCALL,1,Goto(${ARG3},s,1) ; Callee chose
to send this call to a polite "Don't call again" script.
exten => s-TORTURE,1,Goto(${ARG4},s,1) ; Callee chose
to send this call to a telemarketer torture script.
exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the
user into VoicemailMain
[demo]
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,1 ; Wait a second, just for fun
exten => s,n,Answer ; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
exten => s,n,WaitExten ; Wait for an extension to be dialed.
exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
exten => 2,n,Goto(s,instruct)
exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french
exten => 3,n,Goto(s,restart) ; Start with the congratulations
exten => 1000,1,Goto(default,s,1)
;
; We also create an example user, 1234, who is on the console and has
; voicemail, etc.
;
exten => 1234,1,Playback(transfer,skip) ; "Please hold while..."
; (but skip if channel is not up)
exten => 1234,n,Macro(stdexten,1234,${CONSOLE})
exten => 1235,1,Voicemail(u1234) ; Right to voicemail
exten => 1236,1,Dial(Console/dsp) ; Ring forever
exten => 1236,n,Voicemail(u1234) ; Unless busy
;
; # for when they're done with the demo
;
exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo"
exten => #,n,Hangup ; Hang them up.
;
; A timeout and "invalid extension rule"
;
exten => t,1,Goto(#,1) ; If they take too long, give up
exten => i,1,Playback(invalid) ; "That's not valid, try again"
;
; Create an extension, 500, for dialing the
; Asterisk demo.
;
exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,n,Dial(IAX2/guest@misery.digium.com/s@default) ; Call the
Asterisk demo
exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site
exten => 500,n,Goto(s,6) ; Return to the start over message.
;
; Create an extension, 600, for evaulating echo latency.
;
exten => 600,1,Playback(demo-echotest) ; Let them know what's going on
exten => 600,n,Echo ; Do the echo test
exten => 600,n,Playback(demo-echodone) ; Let them know it's over
exten => 600,n,Goto(s,6) ; Start over
; Extension 3001 rings IAX phone
exten => 301,1,Dial(IAX2/firefly01@firefly01/s)
exten => 301,2,Voicemail,u301 ; Send to voicemail...
;
; Give voicemail at extension 8500
;
exten => 8500,1,VoicemailMain
exten => 8500,n,Goto(s,6)
;
; Here's what a phone entry would look like (IXJ for example)
;
;exten => 1265,1,Dial(Phone/phone0,15)
;exten => 1265,n,Goto(s,5)
;[mainmenu]
;
; Example "main menu" context with submenu
;
;exten => s,1,Answer
;exten => s,n,Background(thanks) ; "Thanks for calling press 1 for
sales, 2 for support, ..."
;exten => s,n,WaitExten
;exten => 1,1,Goto(submenu,s,1)
;exten => 2,1,Hangup
;include => default
;
;[submenu]
;exten => s,1,Ringing ; Make them comfortable with 2 seconds of ringback
;exten => s,n,Wait,2
;exten => s,n,Background(submenuopts) ; "Thanks for calling the sales
department. Press 1 for steve, 2 for..."
;exten => s,n,WaitExten
;exten => 1,1,Goto(default,steve,1)
;exten => 2,1,Goto(default,mark,2)
[default]
;
; By default we include the demo. In a production system, you
; probably don't want to have the demo there.
;
include => demo
;
; An extension like the one below can be used for FWD, Nikotel, sipgate etc.
; Note that you must have a [sipprovider] section in sip.conf
;
;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r)
; Real extensions would go here. Generally you want real extensions to be
; 4 or 5 digits long (although there is no such requirement) and start with a
; single digit that is fairly large (like 6 or 7) so that you have plenty of
; room to overlap extensions and menu options without conflict. You can alias
; them with names, too, and use global variables
;exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1,Joe Schmoe ; Channel
hints for presence
;exten => 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer
;exten => 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed
;exten => 6245,n,Voicemail(u6245) ; Voicemail (unavailable)
;exten => 6245,s+1,Hangup ; s+1, same as n
;exten => 6245,dial+101,Voicemail(b6245) ; Voicemail (busy)
;exten => 6361,1,Dial(IAX2/JaneDoe,,rm) ; ring without time limit
;exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14)
;exten => 6394,1,Dial(Local/6275/n) ; this will dial ${MARK}
;exten => 6275,1,Macro(stdexten,6275,${MARK}) ; assuming ${MARK} is
something like Zap/2
;exten => mark,1,Goto(6275|1) ; alias mark to 6275
;exten => 6536,1,Macro(stdexten,6236,${WIL}) ; Ditto for wil
;exten => wil,1,Goto(6236|1)
;
; Some other handy things are an extension for checking voicemail via
; voicemailmain
;
;exten => 8500,1,VoicemailMain
;exten => 8500,n,Hangup
;
; Or a conference room (you'll need to edit meetme.conf to enable this room)
;
;exten => 8600,1,Meetme(1234)
;
; Or playing an announcement to the called party, as soon it answers
;
;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg))
;
; For more information on applications, just type "show applications" at your
; friendly Asterisk CLI prompt.
;
; 'show application <command>' will show details of how you
; use that particular application in this file, the dial plan.
;
[general]
static=yes
writeprotect=no
[globals]
CONSOLE=Console/dsp ; Console interface for demo
TRUNK=Zap/g1 ; Trunk interface
TRUNKX=Zap/g2 ; 2nd trunk interface
TRUNKIAX=IAX2/ASTtest1:test@xx.xxx.xxx.xx (ourtelecom provider ip):4569 ; IAX trunk interface
[default]
; Extension 8600 + 8601 conference rooms
exten => 8600,1,Meetme,8600
exten => 8601,1,Meetme,8601
; Extension 102 - Grandstream hardphone
exten => 102,1,Playback,transfer|skip ; "Please hold while..."
exten => 102,2,Dial,sip/gs102|20|to ; Ring, 20 secs max
exten => 102,3,Voicemail,u102 ; Send to voicemail...
; Extension 2000 Sipura line 1
exten => 2000,1,Dial,sip/spa2000|30|to ; Ring, 30 secs max
exten => 2000,2,Voicemail,u2000 ; Send to voicemail...
; Extension 2001 Sipura line 2
exten => 2001,1,Dial,sip/spa2001|30|to ; Ring, 30 secs max
exten => 2001,2,Voicemail,u2001 ; Send to voicemail...
; Extension 2020 rings both sipura lines
exten => 2001,1,Dial,sip/spa2000&sip/spa2001|30|to ; Ring, 30 secs max
exten => 2001,2,Voicemail,u2000 ; Send to voicemail...
; Extension 301 rings the firefly softphone
exten => 301,1,Dial,(IAX2/firefly01@firefly01/s)
exten => 301,2,Hangup
; Extension 3429 - Inbound 800 number (1-800-555-3429)
exten => _**3429,1,Ringing
exten => _**3429,2,Answer
exten => _**3429,3,Dial,sip/spa2000&sip/spa2001|30|to ; Ring, 30 secs max
exten => _**3429,4,Voicemail,u2000 ; Send to voicemail...
; Extension 3429 - with ANI [callerID]
exten => _*NXXNXXXXXX*3429,1,Ringing
exten => _*NXXNXXXXXX*3429,2,Answer
exten => _*NXXNXXXXXX*3429,3,Dial,sip/spa2000&sip/spa2001|30|to ; Ring, 30
secs max
exten => _*NXXNXXXXXX*3429,4,Voicemail,u2000 ; Send to voicemail...
; dial a long distance outbound number to the UK
exten => _01144XXXXXXXXXX,1,Dial(${TRUNKX}/${EXTEN:1},55,tTo)
exten => _01144XXXXXXXXXX,2,Hangup
; dial a long distance outbound number to Australia
exten => _901161XXXXXXXXX,1,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _901161XXXXXXXXX,2,Hangup
; dial an 800 outbound number
exten => _1800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1800NXXXXXX,2,Hangup
exten => _1888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1888NXXXXXX,2,Hangup
exten => _1877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1877NXXXXXX,2,Hangup
exten => _1866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1866NXXXXXX,2,Hangup
; dial a local 727 outbound number with area code
exten => _727NXXXXXX,1,Dial(${TRUNK}/1${EXTEN:1},,tTo)
exten => _727NXXXXXX,2,Hangup
; dial a local 813 outbound number with area code
exten => _813NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _813NXXXXXX,2,Hangup
; dial a long distance outbound number
exten => _1NXXNXXXXXX,1,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _1NXXNXXXXXX,2,Hangup
; dial a local outbound number (modified because of only LD T1)
exten => _NXXXXXX,1,Dial(${TRUNK}/1727${EXTEN:1},,tTo)
exten => _NXXXXXX,2,Hangup
; barge monitoring extension
exten => 8159,1,ZapBarge
exten => 8159,2,Hangup
; # timeout invalid rules
exten => #,1,Playback(invalid) ; "Thanks for trying the demo"
exten => #,2,Hangup ; Hang them up.
exten => t,1,Goto(#,1) ; If they take too long, give up
exten => i,1,Playback(invalid) ; "That's not valid, try again"
; Give voicemail at extension 8500
exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)
; ASTERISK AGENTS LOGINS FOR QUEUES (NOT part of VICIDIAL)
; the following assumes phone agent login and exten are 3 digits and the same
; also assumes that 3-digit login is present in agents.conf and queueus.conf
;Agent Logout then stay onhook, DIAL 54 + 3-digit ID
exten => _54XXX,1,AgentCallbackLogin(||)
; the following are used to login and logout of Asterisk Queues from phone
;Agent Login then stay offhook on the phone, DIAL 55 + 3-digit ID
exten => _55XXX,1,AgentLogin(${EXTEN:1})
;Agent Login then stay onhook, phones will ring, DIAL 56 + 3-digit ID
exten => _56XXX,1,AgentCallbackLogin(||${EXTEN:1}@default)
######------ END extensions.conf example ------######
### OPTIONAL SIP trunk extensions entries for long distance dialing over SIP
exten => _1NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1NXXNXXXXXX,2,Dial(sip/${EXTEN}@SIPtrunk,55,o)
exten => _1NXXNXXXXXX,3,Hangup
r older versions
exten => h,1,DeadAGI(call_log.agi,${EXTEN}) ; DeadAGI is new
exten => h,2,DeadAGI(VD_hangup.agi,PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME})
; Extension 3429 - Inbound 800 number (1-800-555-3429)
exten => _**3429,1,Ringing
exten => _**3429,2,AGI(call_log.agi,${EXTEN})
exten => _**3429,3,Answer
exten => _**3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _**3429,5,Voicemail,u2000
; Extension 3429 - with ANI [callerID]
exten => _*NXXNXXXXXX*3429,1,Ringing
exten => _*NXXNXXXXXX*3429,2,AGI(call_log.agi,${EXTEN})
exten => _*NXXNXXXXXX*3429,3,Answer
exten => _*NXXNXXXXXX*3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _*NXXNXXXXXX*3429,5,Voicemail,u2000
; Extension 7275551212 - Inbound local number from PRI with 10 digit delivery
exten => 7275551212,1,Ringing
exten => 7275551212,2,Wait(1)
exten => 7275551212,3,AGI(call_logCID.agi,${EXTEN}-----${CALLERID}-----${CALLERIDNUM}-----${CALLERIDNAME})
exten => 7275551212,4,Answer
exten => 7275551212,5,Dial,sip/spa2000&sip/spa2001|30|to
exten => 7275551212,6,Voicemail,u2000
; dial a long distance outbound number to the UK
exten => _01144XXXXXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _01144XXXXXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},55,tTo)
exten => _01144XXXXXXXXXX,3,Hangup
; dial a long distance outbound number to Australia
exten => _01161XXXXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _01161XXXXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _01161XXXXXXXXX,3,Hangup
; dial an 800 outbound number
exten => _1800NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1800NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1800NXXXXXX,3,Hangup
exten => _1888NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1888NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1888NXXXXXX,3,Hangup
exten => _1877NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1877NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1877NXXXXXX,3,Hangup
exten => _1866NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1866NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _1866NXXXXXX,3,Hangup
; dial a local 727 outbound number with area code
exten => _727NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _727NXXXXXX,2,Dial(${TRUNK}/1${EXTEN:1},,tTo)
exten => _727NXXXXXX,3,Hangup
; dial a local 813 outbound number with area code
exten => _813NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _813NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _813NXXXXXX,3,Hangup
; dial a long distance outbound number
exten => _1NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _1NXXNXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _1NXXNXXXXXX,3,Hangup
nbound 800-----x-----y-----z-----w)
exten => _**3429,4,Answer
exten => _**3429,5,Dial,sip/spa2000&sip/spa2001|30|to
exten => _**3429,6,Voicemail,u2000
; Extension 3429 - with ANI [callerID]
exten => _*NXXNXXXXXX*3429,1,Ringing
exten => _*NXXNXXXXXX*3429,2,AGI(call_log.agi,${EXTEN})
exten => _*NXXNXXXXXX*3429,3,AGI(call_inbound.agi,spa2000-----8005553429-----Inbound
800-----x-----y-----z-----w)
exten => _*NXXNXXXXXX*3429,3,Answer
exten => _*NXXNXXXXXX*3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _*NXXNXXXXXX*3429,5,Voicemail,u2000
; parameters for agi-VDADcloser.agi (2 fields separated by five dashes "-----"):
; 1. the full extension formatted by VICIDIAL for internal transfers * separated
; 2. the word START to denote the beginning of the acceptance of the transfer
; inbound VICIDIAL transfer calls [can arrive through PRI T1 crossover
or IAX channel]
exten => _0009.,1,Answer ; Answer the line
exten => _0009.,2,AGI(agi-VDADcloser.agi,${EXTEN}-----START)
exten => _0009.,3,Hangup
; parameters for agi-VDADcloser_inbound....agi (7 fields separated by
five dashes "-----"):
; 1. the full name of the IN GROUP to be used in vicidial for the inbound call
; 2. the phone number that was called, for the log entry
; 3. the callerID or lead_id of the person that called(usually overridden)
; 4. the park extension audio file name if used
; 5. the status of the call initially(usually not used)
; 6. the list_id to insert the new lead under if it is new (and
callerID available)
; 7. the phone dialing code to insert with the new lead if new (and
callerID available)
; inbound VICIDIAL call with CID delivery through T1 PRI
exten => 1234,1,Ringing ; call ringing
exten => 1234,2,Wait(1) ; Wait 1 second for CID
delivery from PRI
exten => 1234,3,Answer ; Answer the line
exten => 1234,4,AGI(agi-VDADcloser_inboundCID.agi,CL_GALLERIA-----7275555134-----Closer-----park----------999-----1)
exten => 1234,5,Hangup
; inbound VICIDIAL call with ANI delivery through robbed-bit T1
(*NXXNXXXXXX*DNIS)
exten => 1234,1,Answer ; Answer the line
exten => 1234,2,AGI(agi-VDADcloser_inboundANI.agi,CL_GALLERIA-----7275555134-----Closer-----park----------999-----1)
exten => 1234,3,Hangup
; inbound VICIDIAL call with prompt for 4-digit fronter code
exten => 1234,1,Answer ; Answer the line
exten => 1234,2,AGI(agi-VDADcloser_inbound.agi,CL_GALLERIA-----7275555134-----Closer-----park----------999-----1)
exten => 1234,3,Hangup; dial a local outbound number (modified because
of only LD T1)
exten => _NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _NXXXXXX,2,Dial(${TRUNK}/1727${EXTEN:1},,tTo)
exten => _NXXXXXX,3,Hangup
; ZapBarge direct channel extensions
exten => 8612001,1,ZapBarge(1)
exten => 8612002,1,ZapBarge(2)
exten => 8612003,1,ZapBarge(3)
exten => 8612004,1,ZapBarge(4)
exten => 8612005,1,ZapBarge(5)
exten => 8612006,1,ZapBarge(6)
exten => 8612007,1,ZapBarge(7)
exten => 8612008,1,ZapBarge(Cool
exten => 8612009,1,ZapBarge(9)
exten => 8612010,1,ZapBarge(10)
exten => 8612011,1,ZapBarge(11)
exten => 8612012,1,ZapBarge(12)
exten => 8612013,1,ZapBarge(13)
exten => 8612014,1,ZapBarge(14)
exten => 8612015,1,ZapBarge(15)
exten => 8612016,1,ZapBarge(16)
exten => 8612017,1,ZapBarge(17)
exten => 8612018,1,ZapBarge(1Cool
exten => 8612019,1,ZapBarge(19)
exten => 8612020,1,ZapBarge(20)
exten => 8612021,1,ZapBarge(21)
exten => 8612022,1,ZapBarge(22)
exten => 8612023,1,ZapBarge(23)
exten => 8612024,1,ZapBarge(24)
exten => 8600011,1,Meetme,8600011|q
exten => 8600012,1,Meetme,8600012|q
exten => 8600013,1,Meetme,8600013|q
exten => 8600014,1,Meetme,8600014|q
exten => 8600015,1,Meetme,8600015|q
exten => 8600016,1,Meetme,8600016|q
exten => 8600017,1,Meetme,8600017|q
exten => 8600018,1,Meetme,8600018|q
exten => 8600019,1,Meetme,8600019|q
exten => 8600020,1,Meetme,8600020|q
exten => 8600021,1,Meetme,8600021|q
exten => 8600022,1,Meetme,8600022|q
exten => 8600023,1,Meetme,8600023|q
exten => 8600024,1,Meetme,8600024|q
exten => 8600025,1,Meetme,8600025|q
exten => 8600026,1,Meetme,8600026|q
exten => 8600027,1,Meetme,8600027|q
exten => 8600028,1,Meetme,8600028|q
exten => 8600029,1,Meetme,8600029|q
exten => 8600051,1,Meetme,8600051
exten => 8600052,1,Meetme,8600052
exten => 8600053,1,Meetme,8600053
exten => 8600054,1,Meetme,8600054
exten => 8600055,1,Meetme,8600055
exten => 8600056,1,Meetme,8600056
exten => 8600057,1,Meetme,8600057
exten => 8600058,1,Meetme,8600058
exten => 8600059,1,Meetme,8600059
exten => 8600060,1,Meetme,8600060
exten => 8600061,1,Meetme,8600061
exten => 8600062,1,Meetme,8600062
exten => 8600063,1,Meetme,8600063
exten => 8600064,1,Meetme,8600064
exten => 8600065,1,Meetme,8600065
exten => 8600066,1,Meetme,8600066
exten => 8600067,1,Meetme,8600067
exten => 8600068,1,Meetme,8600068
exten => 8600069,1,Meetme,8600069
exten => 8600070,1,Meetme,8600070
exten => 8600071,1,Meetme,8600071
exten => 8600072,1,Meetme,8600072
exten => 8600073,1,Meetme,8600073
exten => 8600074,1,Meetme,8600074
exten => 8600075,1,Meetme,8600075
exten => 8600076,1,Meetme,8600076
exten => 8600077,1,Meetme,8600077
exten => 8600078,1,Meetme,8600078
exten => 8600079,1,Meetme,8600079
exten => 8600080,1,Meetme,8600080
exten => 8600081,1,Meetme,8600081
exten => 8600082,1,Meetme,8600082
exten => 8600083,1,Meetme,8600083
exten => 8600084,1,Meetme,8600084
exten => 8600085,1,Meetme,8600085
exten => 8600086,1,Meetme,8600086
exten => 8600087,1,Meetme,8600087
exten => 8600088,1,Meetme,8600088
exten => 8600089,1,Meetme,8600089
exten => 8600090,1,Meetme,8600090
exten => 8600091,1,Meetme,8600091
exten => 8600092,1,Meetme,8600092
exten => 8600093,1,Meetme,8600093
exten => 8600094,1,Meetme,8600094
exten => 8600095,1,Meetme,8600095
exten => 8600096,1,Meetme,8600096
exten => 8600097,1,Meetme,8600097
exten => 8600098,1,Meetme,8600098
exten => 8600099,1,Meetme,8600099
exten => 8600100,1,Meetme,8600100
; quiet entry and leaving conferences for VICIDIAL
exten => 78600051,1,Meetme,8600051|q
exten => 78600052,1,Meetme,8600052|q
exten => 78600053,1,Meetme,8600053|q
exten => 78600054,1,Meetme,8600054|q
exten => 78600055,1,Meetme,8600055|q
exten => 78600056,1,Meetme,8600056|q
exten => 78600057,1,Meetme,8600057|q
exten => 78600058,1,Meetme,8600058|q
exten => 78600059,1,Meetme,8600059|q
exten => 78600060,1,Meetme,8600060|q
exten => 78600061,1,Meetme,8600061|q
exten => 78600062,1,Meetme,8600062|q
exten => 78600063,1,Meetme,8600063|q
exten => 78600064,1,Meetme,8600064|q
exten => 78600065,1,Meetme,8600065|q
exten => 78600066,1,Meetme,8600066|q
exten => 78600067,1,Meetme,8600067|q
exten => 78600068,1,Meetme,8600068|q
exten => 78600069,1,Meetme,8600069|q
exten => 78600070,1,Meetme,8600070|q
exten => 78600071,1,Meetme,8600071|q
exten => 78600072,1,Meetme,8600072|q
exten => 78600073,1,Meetme,8600073|q
exten => 78600074,1,Meetme,8600074|q
exten => 78600075,1,Meetme,8600075|q
exten => 78600076,1,Meetme,8600076|q
exten => 78600077,1,Meetme,8600077|q
exten => 78600078,1,Meetme,8600078|q
exten => 78600079,1,Meetme,8600079|q
exten => 78600080,1,Meetme,8600080|q
exten => 78600081,1,Meetme,8600081|q
exten => 78600082,1,Meetme,8600082|q
exten => 78600083,1,Meetme,8600083|q
exten => 78600084,1,Meetme,8600084|q
exten => 78600085,1,Meetme,8600085|q
exten => 78600086,1,Meetme,8600086|q
exten => 78600087,1,Meetme,8600087|q
exten => 78600088,1,Meetme,8600088|q
exten => 78600089,1,Meetme,8600089|q
exten => 78600090,1,Meetme,8600090|q
exten => 78600091,1,Meetme,8600091|q
exten => 78600092,1,Meetme,8600092|q
exten => 78600093,1,Meetme,8600093|q
exten => 78600094,1,Meetme,8600094|q
exten => 78600095,1,Meetme,8600095|q
exten => 78600096,1,Meetme,8600096|q
exten => 78600097,1,Meetme,8600097|q
exten => 78600098,1,Meetme,8600098|q
exten => 78600099,1,Meetme,8600099|q
exten => 78600100,1,Meetme,8600100|q
; quiet monitor extensions for meetme rooms (for room managers)
exten => 68600051,1,Meetme,8600051|mq
exten => 68600052,1,Meetme,8600052|mq
exten => 68600053,1,Meetme,8600053|mq
exten => 68600054,1,Meetme,8600054|mq
exten => 68600055,1,Meetme,8600055|mq
exten => 68600056,1,Meetme,8600056|mq
exten => 68600057,1,Meetme,8600057|mq
exten => 68600058,1,Meetme,8600058|mq
exten => 68600059,1,Meetme,8600059|mq
exten => 68600060,1,Meetme,8600060|mq
exten => 68600061,1,Meetme,8600061|mq
exten => 68600062,1,Meetme,8600062|mq
exten => 68600063,1,Meetme,8600063|mq
exten => 68600064,1,Meetme,8600064|mq
exten => 68600065,1,Meetme,8600065|mq
exten => 68600066,1,Meetme,8600066|mq
exten => 68600067,1,Meetme,8600067|mq
exten => 68600068,1,Meetme,8600068|mq
exten => 68600069,1,Meetme,8600069|mq
exten => 68600070,1,Meetme,8600070|mq
exten => 68600071,1,Meetme,8600071|mq
exten => 68600072,1,Meetme,8600072|mq
exten => 68600073,1,Meetme,8600073|mq
exten => 68600074,1,Meetme,8600074|mq
exten => 68600075,1,Meetme,8600075|mq
exten => 68600076,1,Meetme,8600076|mq
exten => 68600077,1,Meetme,8600077|mq
exten => 68600078,1,Meetme,8600078|mq
exten => 68600079,1,Meetme,8600079|mq
exten => 68600080,1,Meetme,8600080|mq
exten => 68600081,1,Meetme,8600081|mq
exten => 68600082,1,Meetme,8600082|mq
exten => 68600083,1,Meetme,8600083|mq
exten => 68600084,1,Meetme,8600084|mq
exten => 68600085,1,Meetme,8600085|mq
exten => 68600086,1,Meetme,8600086|mq
exten => 68600087,1,Meetme,8600087|mq
exten => 68600088,1,Meetme,8600088|mq
exten => 68600089,1,Meetme,8600089|mq
exten => 68600090,1,Meetme,8600090|mq
exten => 68600091,1,Meetme,8600091|mq
exten => 68600092,1,Meetme,8600092|mq
exten => 68600093,1,Meetme,8600093|mq
exten => 68600094,1,Meetme,8600094|mq
exten => 68600095,1,Meetme,8600095|mq
exten => 68600096,1,Meetme,8600096|mq
exten => 68600097,1,Meetme,8600097|mq
exten => 68600098,1,Meetme,8600098|mq
exten => 68600099,1,Meetme,8600099|mq
exten => 68600100,1,Meetme,8600100|mq
; park channel for client GUI parking, hangup after 30 minutes
; create a GSM formatted audio file named "park.gsm" that is 30 minutes long
; and put it in /var/lib/asterisk/sounds
exten => 8301,1,Answer
exten => 8301,2,AGI(park_CID.agi)
exten => 8301,3,Playback(park)
exten => 8301,4,Hangup
exten => 8303,1,Answer
exten => 8303,2,AGI(park_CID.agi)
exten => 8303,3,Playback(conf)
exten => 8303,4,Hangup
; park channel for client GUI conferencing, hangup after 30 minutes
; create a GSM formatted audio file named "conf.gsm" that is 30 minutes long
; and put it in /var/lib/asterisk/sounds
exten => 8302,1,Answer
exten => 8302,2,Playback(conf)
exten => 8302,3,Hangup
; default audio for safe harbor 2-second-after-hello message then hangup
; create a GSM formatted audio file complies with safe harbor rules
; and put it in /var/lib/asterisk/sounds then change filename below
exten => 8307,1,Answer
exten => 8307,2,Playback(vm-goodbye)
exten => 8307,3,Hangup
; this is used for recording conference calls, the client app sends the filename
; value as a callerID recordings go to /var/spool/asterisk/monitor (WAV)
exten => 8309,1,Answer
exten => 8309,2,Monitor(wav,${CALLERIDNAME})
exten => 8309,3,Wait,3600
exten => 8309,4,Hangup
; this is used for recording conference calls, the client app sends the filename
; value as a callerID recordings go to /var/spool/asterisk/monitor (GSM)
exten => 8310,1,Answer
exten => 8310,2,Monitor(gsm,${CALLERIDNAME})
exten => 8310,3,Wait,3600
exten => 8310,4,Hangup
; this is used for playing a message to an answering machine forwarded
from AMD in VICIDIAL
; replace conf with the message file you want to leave
exten => 8320,1,WaitForSilence(2000,2) ; AMD got machine. leave
message after recording
exten => 8320,2,Playback(conf)
exten => 8320,3,AGI(VD_amd_post.agi,${EXTEN})
exten => 8320,4,Hangup
; this is used to allow the GUI to send you directly into voicemail
; don't forget to set GUI variable $voicemail_exten to this extension
exten => 8501,1,VoicemailMain(s${CALLERIDNUM})
exten => 8501,2,Hangup
; this is used to allow the GUI to send live calls directly into voicemail
; don't forget to set GUI variable $voicemail_dump_exten to this extension
exten => _85026666666666.,1,Wait(2)
exten => _85026666666666.,2,Voicemail(${EXTEN:14})
exten => _85026666666666.,3,Hangup
; this is used for sending DTMF signals within conference calls, the client app
; sends the digits to be played in the callerID field
; sound files must be placed in /var/lib/asterisk/sounds
exten => 8500998,1,Answer
exten => 8500998,2,Playback(silence)
exten => 8500998,3,AGI(agi-dtmf.agi)
exten => 8500998,4,Hangup
; prompt recording AGI script, ID is 4321
exten => 8168,1,Answer
exten => 8168,2,AGI(agi-record_prompts.agi)
exten => 8168,3,Hangup
; playback of recorded prompts
exten => _851XXXXX,1,Answer
exten => _851XXXXX,2,Playback(${EXTEN})
exten => _851XXXXX,3,Hangup
; VICIDIAL_auto_dialer transfer script:
exten => 8365,1,AGI(call_log.agi,${EXTEN})
exten => 8365,2,AGI(agi-VDADtransfer.agi,${EXTEN})
exten => 8365,3,AGI(agi-VDADtransfer.agi,${EXTEN})
exten => 8365,4,AGI(agi-VDADtransfer.agi,${EXTEN})
exten => 8365,5,Hangup
; VICIDIAL_auto_dialer transfer script SURVEY at beginning:
exten => 8366,1,AGI(call_log.agi,${EXTEN})
exten => 8366,2,AGI(agi-VDADtransferSURVEY.agi,${EXTEN})
exten => 8366,3,AGI(agi-VDADtransferSURVEY.agi,${EXTEN})
exten => 8366,4,AGI(agi-VDADtransferSURVEY.agi,${EXTEN})
exten => 8366,5,Hangup
; VICIDIAL_auto_dialer transfer script Load Balance Overflow:
exten => 8367,1,AGI(call_log.agi,${EXTEN})
exten => 8367,2,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,3,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,4,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,5,Hangup
; VICIDIAL_auto_dialer transfer script Load Balanced:
exten => 8368,1,AGI(call_log.agi,${EXTEN})
exten => 8368,2,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,3,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,4,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,5,Hangup
; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
exten => 8369,1,AGI(call_log.agi,${EXTEN})
exten => 8369,2,AMD(3500|1500|300|5000|120|50|5|256)
exten => 8369,3,AGI(VD_amd.agi,${EXTEN})
exten => 8369,4,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8369,5,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8369,6,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8369,7,Hangup
; VICIDIAL auto-dial reminder script
exten => 8372,1,AGI(call_log.agi,${EXTEN})
exten => 8372,2,AGI(agi-VDADautoREMINDER.agi,${EXTEN})
exten => 8372,3,AGI(agi-VDADautoREMINDER.agi,${EXTEN})
exten => 8372,4,AGI(agi-VDADautoREMINDER.agi,${EXTEN})
exten => 8372,5,Hangup
### OPTIONAL IAX Load Balance extens to allow for Overflow and Balanced VDAD
### In this setup, the serverIP is the prefix followed by agent conf_exten
### If you have more than 1 server doing VICIDIAL outbound, these lines are
### REQUIRED for Load Balancing to work properly
### server 1 extens:
exten => _our telecom provider ip*8600XXX,1,Dial(${TRUNKIAX2}/${EXTEN:16},55,o)
exten => _our telecom provider ip*8600XXX,2,Hangup
### server 2 extens:
exten => _our server ip*8600XXX,1,Dial(${TRUNKIAX1}/${EXTEN:16},55,o)
exten => _our server ip*8600XXX,2,Hangup
Users browsing this forum: Google [Bot], Majestic-12 [Bot] and 39 guests