{agents.conf}
[general]
;
; Define whether callbacklogins should be stored in astdb for
; persistence. Persistent logins will be reloaded after
; Asterisk restarts.
;
persistentagents=yes
;
; Agent configuration
;
;
[agents]
;
; Define autologoff times if appropriate. This is how long
; the phone has to ring with no answer before the agent is
; automatically logged off (in seconds)
;
autologoff=15
;
; Define ackcall to require an acknowledgement by '#' when
; an agent logs in using agentcallbacklogin. Default is "no".
;
;ackcall=no
;
; Define wrapuptime. This is the minimum amount of time when
; after disconnecting before the caller can receive a new call
; note this is in milliseconds.
;
wrapuptime=5000
;
; Define the default musiconhold for agents
; musiconhold => music_class
;
musiconhold => native
;
; Define updatecdr. This is whether or not to change the source
; channel in the CDR record for this call to agent/agent_id so
; that we know which agent generates the call
;
updatecdr=yes
;
; Group memberships for agents (may change in mid-file)
;
;group=3
;group=1,2
;group=
;
; --------------------------------------------------
; This section is devoted to recording agent's calls
; The keywords are global to the chan_agent channel driver
;
; Enable recording calls addressed to agents. It's turned off by default.
; recordagentcalls=yes
;
; The format to be used to record the calls: wav, gsm, wav49.
; By default its "wav".
recordformat=wav
;
; Insert into CDR userfield a name of the the created recording
; By default it's turned off.
;createlink=yes
;
; The text to be added to the name of the recording. Allows forming a url link.
;urlprefix=http://localhost/calls/
;
; The optional directory to save the conversations in. The default is
; /var/spool/asterisk/monitor
;savecallsin=/var/calls
;
; An optional custom beep sound file to play to always-connected agents.
;custom_beep=beep
;
; --------------------------------------------------
;
; This section contains the agent definitions, in the form:
;
; agent => agentid,agentpassword,name
;
;Evolution
agent => 1000,2222,Morgan Goodfellow
agent => 1001,2222,Dan Black
agent => 1003,2222,Eleana
agent => 1004,2222,Elizabeth
agent => 1005,2222,Nancy
agent => 1002,2222,Steve Smith
agent => 1006,2222,Brian Smith
agent => 1007,2222,Jason Mathison
;PTS Agents
agent => 3501,2222,PTS1
agent => 3502,2222,PTS2
agent => 3503,2222,PTS3
agent => 3504,2222,PTS4
agent => 3505,2222,PTS5
agent => 3506,2222,PTS6
agent => 8006412930,2222,PTS7
agent => 999,2222,test account
{queues.conf}
[general]
;
; Global settings for call queues
;
; Persistent Members
; Store each dynamic agent in each queue in the astdb so that
; when asterisk is restarted, each agent will be automatically
; readded into their recorded queues. Default is 'yes'.
;
persistentmembers = yes
;
; Note that a timeout to fail out of a queue may be passed as part of
; an application call from extensions.conf:
; Queue(queuename|[options]|[optionalurl]|[announceoverride]|[timeout])
; example: Queue(dave|t|||45)
;[markq]
;
; A sample call queue
;
; Musiconhold sets which music applies for this particular
; call queue (configure classes in musiconhold.conf)
;
musiconhold = default
;
; An announcement may be specified which is played for the member as
; soon as they answer a call, typically to indicate to them which queue
; this call should be answered as, so that agents or members who are
; listening to more than one queue can differentiated how they should
; engage the customer
;
;announce = queue-markq
;
; A strategy may be specified. Valid strategies include:
;
; ringall - ring all available channels until one answers (default)
; roundrobin - take turns ringing each available interface
; leastrecent - ring interface which was least recently called by this queue
; fewestcalls - ring the one with fewest completed calls from this queue
; random - ring random interface
; rrmemory - round robin with memory, remember where we left off last ring pass
;
;strategy = ringall
;
; Second settings for service level (default 0)
; Used for service level statistics (calls answered within service level time
; frame)
;servicelevel = 60
;
; A context may be specified, in which if the user types a SINGLE
; digit extension while they are in the queue, they will be taken out
; of the queue and sent to that extension in this context.
;
;context = qoutcon
;
; How long do we let the phone ring before we consider this a timeout...
;
;timeout = 15
;
; How long do we wait before trying all the members again?
;
;retry = 5
;
; Weight of queue - when compared to other queues, higher weights get
; first shot at available channels when the same channel is included in
; more than one queue.
;
;weight=0
;
; After a successful call, how long to wait before sending a potentially
; free member another call (default is 0, or no delay)
;
;wrapuptime=15
;
; Maximum number of people waiting in the queue (0 for unlimited)
;
;maxlen = 0
;
;
; How often to announce queue position and/or estimated holdtime to caller (0=off)
;
;announce-frequency = 90
;
;
; How often to make any periodic announcement (see periodic-announce)
;
;periodic-announce-frequency=60
;
; Should we include estimated hold time in position announcements?
; Either yes, no, or only once.
; Hold time will be announced as the estimated time,
; or "less than 2 minutes" when appropriate.
;
;announce-holdtime = yes|no|once
;
; What's the rounding time for the seconds?
; If this is non-zero, then we announce the seconds as well as the minutes
; rounded to this value.
;
; announce-round-seconds = 10
;
; Use these sound files in making position/holdtime announcements. The
; defaults are as listed below -- change only if you need to.
;
;queue-youarenext = queue-youarenext ; ("You are now first in line.")
;queue-thereare = queue-thereare ; ("There are")
;queue-callswaiting = queue-callswaiting ; ("calls waiting.")
;queue-holdtime = queue-holdtime ; ("The current est. holdtime is")
;queue-minutes = queue-minutes ; ("minutes.")
;queue-seconds = queue-seconds ; ("seconds.")
;queue-thankyou = queue-thankyou ; ("Thank you for your patience.")
;queue-lessthan = queue-less-than ; ("less than")
;queue-reporthold = queue-reporthold ; ("Hold time")
;periodic-announce = queue-periodic-announce ; ("All reps busy / wait for next")
;
; Calls may be recorded using Asterisk's monitor resource
; This can be enabled from within the Queue application, starting recording
; when the call is actually picked up; thus, only successful calls are
; recorded, and you are not recording while people are listening to MOH.
; To enable monitoring, simply specify "monitor-format"; it will be disabled
; otherwise.
;
; You can specify the monitor filename with by calling
; Set(MONITOR_FILENAME=foo)
; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
;
; monitor-format = gsm|wav|wav49
;
; If you wish to have the two files joined together when the call ends, set this
; to yes.
;
; monitor-join = yes
;
; This setting controls whether callers can join a queue with no members. There
; are three choices:
;
; yes - callers can join a queue with no members or only unavailable members
; no - callers cannot join a queue with no members
; strict - callers cannot join a queue with no members or only unavailable
; members
;
; joinempty = yes
;
; If you wish to remove callers from the queue when new callers cannot join,
; set this setting to one of the same choices for 'joinempty'
;
; leavewhenempty = yes
;
;
; If this is set to yes, the following manager events will be generated:
; AgentCalled, AgentDump, AgentConnect, AgentComplete
; (may generate some extra manager events, but probably ones you want)
;
; eventwhencalled = yes
;
; If this is set to no, the following manager events will be generated:
; QueueMemberStatus
; (may generate a WHOLE LOT of extra manager events)
;
; eventmemberstatusoff = no
;
; If you wish to report the caller's hold time to the member before they are
; connected to the caller, set this to yes.
;
; reportholdtime = no
;
;
; If you wish to have a delay before the member is connected to the caller (or
; before the member hears any announcement messages), set this to the number of
; seconds to delay.
;
; memberdelay = 0
;
; If timeoutrestart is set to yes, then the timeout for an agent to answer is
; reset if a BUSY or CONGESTION is received. This can be useful if agents
; are able to cancel a call with reject or similar.
;
; timeoutrestart = no
;
; Each member of this call queue is listed on a separate line in
; the form technology/dialstring. "member" means a normal member of a
; queue. An optional penalty may be specified after a comma, such that
; entries with higher penalties are considered last.
;
;member => Zap/1
;member => Zap/2
;member => Agent/1001
;member => Agent/1002
;
; Note that using agent groups is probably not what you want. Strategies do
; not propagate down to the Agent system so if you want round robin, least
; recent, etc, you should list all the agents in this file individually and not
; use agent groups.
;
;member => Agent/@1 ; Any agent in group 1
;member => Agent/:1,1 ; Any agent in group 1, wait for first
; available, but consider with penalty
[evolution]
musiconhold = native
announce-holdtime = yes
timeoutrestart = yes
strategy = leastrecent
timeout = 600
servicelevel = 60
wrapuptime=15
retry = 5
announce-frequency = 90
periodic-announce-frequency=60
monitor-format = wav
monitor-join = yes
joinempty = no
reportholdtime = yes
member => Agent/1000
member => Agent/1001
member => Agent/1002
member => Agent/1003
member => Agent/1004
member => Agent/1005
member => Agent/1006
member => Agent/1007
[Lex_Live_Inbound]
musiconhold = default
announce-holdtime = yes
timeoutrestart = yes
strategy = leastrecent
timeout = 15
servicelevel = 60
wrapuptime=15
retry = 5
announce-frequency = 90
periodic-announce-frequency=60
monitor-format = wav
monitor-join = yes
joinempty = no
reportholdtime = yes
member => Agent/126
member => Agent/120
member => Agent/3505
{extensions.conf}
[general]
static=yes
writeprotect=no
[globals]
CONSOLE => Console/dsp
IAXINFO => guest
TRUNKMSD => 1
[macro-global_crossing]
exten => s,1,SetAccount(${ARG1})
exten => s,2,Answer()
exten => s,3,GotoIfTime(*|*|4|jul?evolution,50001,1)
exten => s,4,GotoIfTime(7:00-20:00|mon-fri|*|*?evolution,90000,1)
exten => s,5,GotoIfTime(20:01-6:59|mon-fri|*|*?evolution,50001,1)
exten => s,6,GotoIfTime(*|sat-sun|*|*?evolution,50001,1)
[global_crossing]
include => macro-global_crossing
exten => 8131,1,Macro(global_crossing,8131)
exten => 0662,1,Macro(global_crossing,0662)
exten => 0919,1,Macro(global_crossing,0919)
exten => 2084,1,Macro(global_crossing,2084)
exten => 9437,1,Macro(global_crossing,9437)
exten => 1863,1,Macro(global_crossing,1863)
exten => 2075,1,Macro(global_crossing,2075)
exten => 2098,1,Macro(global_crossing,2098)
exten => 3604,1,Macro(global_crossing,3604)
exten => 4023,1,Macro(global_crossing,4023)
exten => 8356,1,Goto(8888,1)
exten => 6061,1,Goto(progrexion,102,1)
exten => 8241,1,Goto(progrexion,220,1)
exten => 9372,1,Goto(progrexion,202,1)
exten => 9386,1,Goto(progrexion,204,1)
exten => 8107,1,Goto(progrexion,206,1)
exten => 7058,1,Goto(progrexion,205,1)
exten => 0894,1,Goto(progrexion,225,1)
exten => 5409,1,Goto(progrexion,109,1)
exten => 9745,1,Goto(progrexion,201,1)
exten => 0137,1,Goto(progrexion,114,1)
exten => 8039,1,Goto(progrexion,103,1)
exten => 3357,1,Goto(progrexion,106,1)
exten => 3468,1,Goto(progrexion,109,1)
exten => 2467,1,Goto(progrexion,112,1)
exten => 7309,1,Goto(progrexion,107,1)
exten => 4185,1,Goto(progrexion,142,1)
exten => 7453,1,Goto(progrexion,131,1)
exten => 7488,1,Goto(progrexion,108,1)
[custom-callboth2]
exten => _1XXXNXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1XXXNXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1NXXNXXXXXX,3,AGI(/var/www/asterisk/bin/callout.mysql.php|${EXTEN})
exten => _NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _NXXXXXX,3,AGI(/var/www/asterisk/bin/callout.mysql.php|${EXTEN})
[macro-progrexion_exten]
exten => s,1,SetAccount(Progrexion)
exten => s,2,Dial(SIP/${ARG2},20)
exten => s,3,VoiceMail(${ARG1}@${ARG3})
exten => s,4,PlayBack(vm-goodbye)
exten => s,5,Hangup()
[macro-evolution_exten]
exten => s,1,SetAccount(Evolution)
exten => s,2,Dial(SIP/${ARG2},20)
exten => s,3,VoiceMail(${ARG1}@${ARG3})
exten => s,4,PlayBack(vm-goodbye)
exten => s,5,Hangup()
[macro-cmg_exten]
exten => s,1,SetAccount(Progrexion)
exten => s,2,SetVar(CALLFILENAME=${UNIQUEID})
exten => s,3,MixMonitor(${CALLFILENAME}.wav)
exten => s,4,Dial(SIP/${ARG2},20)
exten => s,5,PlayBack(vm-goodbye)
exten => s,6,Hangup()
[Evolution_IVR]
exten => 4942,1,SetAccount(Evolution_IVR)
exten => 4942,2,Goto(evolution,90001,1)
exten => 4913,1,SetAccount(Evolution_IVR)
exten => 4913,2,Goto(evolution,8888,1)
[Evolution_ACD]
include => global_crossing
exten => 8131,1,Queue(evolution)
[Progrexion_Inbound]
exten => 7716,1,Goto(progrexion,103,1)
exten => 0182,1,Goto(progrexion,9999,1)
[progrexion]
include => global_crossing
include => Progrexion_Inbound
; ${ARG1} - Extension
; ${ARG2} - Device(s) to ring
; ${ARG3} - Voicemail Context
;Agent Login
exten => 2001,1,wait(2)
exten => 2001,2,AgentLogin()
exten => 2001,3,Hangup
exten => _1XXXNXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _1800NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _NXXXXXX,1,Dial(Zap/g2/801${EXTEN:0})
exten => 8500,1,VoicemailMain(@progrexion)
exten => #1,1,VoicemailMail(@progrexion)
exten => 9999,1,Answer()
exten => 9999,2,SetMusicOnHold(default)
exten => 9999,3,DigitTimeout(2)
exten => 9999,4,ResponseTimeout(10)
exten => 9999,5,Background(ivr)
exten => 1,1,Directory(progrexion,progrexion,f)
exten => 2,1,Goto(112,1)
exten => 3,1,Goto(127,1)
exten => 4,1,Goto(114,1)
exten => 5,1,Goto(106,1)
exten => 6,1,Goto(107,1)
exten => 7,1,Goto(1000,1)
exten => 8,1,Goto(102,1)
exten => 0,1,Goto(1000,1)
exten => 9,1,VoicemailMain(@progrexion)
exten => 900,1,Wait(2)
exten => 900,2,Record(/tmp/asterisk-recording:gsm)
exten => 900,3,Wait(2)
exten => 900,4,Playback(/tmp/asterisk-recording)
exten => 900,5,Wait(2)
exten => 900,6,Hangup
exten => 201,1,Macro(progrexion_exten,201,201,progrexion)
exten => 202,1,Macro(progrexion_exten,202,202,progrexion)
exten => 203,1,Macro(progrexion_exten,203,203,progrexion)
exten => 204,1,Macro(progrexion_exten,204,204,progrexion)
exten => 205,1,Macro(progrexion_exten,205,205,progrexion)
exten => 206,1,Macro(progrexion_exten,206,206,progrexion)
exten => 220,1,Macro(progrexion_exten,220,220,progrexion)
exten => 252,1,Macro(progrexion_exten,252,252,progrexion)
exten => 253,1,Macro(progrexion_exten,253,253,progrexion)
exten => 254,1,Macro(progrexion_exten,254,254,progrexion)
exten => 257,1,Macro(progrexion_exten,257,257,progrexion)
exten => 258,1,Macro(progrexion_exten,258,158,progrexion)
exten => 261,1,Macro(progrexion_exten,261,261,progrexion)
exten => 262,1,Macro(progrexion_exten,262,262,progrexion)
exten => 225,1,Macro(progrexion_exten,225,225,progrexion)
exten => 127,1,Macro(progrexion_exten,127,127,progrexion)
exten => 157,1,Macro(progrexion_exten,157,157,progrexion)
exten => 107,1,Macro(progrexion_exten,107,107,progrexion)
exten => 112,1,Macro(progrexion_exten,112,112,progrexion)
exten => 102,1,Macro(progrexion_exten,102,102,progrexion)
exten => 131,1,Macro(progrexion_exten,131,131,progrexion)
exten => 121,1,Macro(progrexion_exten,121,121,progrexion)
exten => 109,1,Macro(progrexion_exten,109,109,progrexion)
exten => 106,1,Macro(progrexion_exten,106,106,progrexion)
exten => 103,1,Macro(progrexion_exten,103,103,progrexion)
exten => 120,1,Macro(progrexion_exten,120,120,progrexion)
exten => 126,1,Macro(progrexion_exten,126,126,progrexion)
exten => 114,1,Macro(progrexion_exten,114,114,progrexion)
exten => 156,1,Macro(progrexion_exten,156,156,progrexion)
exten => 124,1,Macro(progrexion_exten,124,124,progrexion)
exten => 125,1,Macro(progrexion_exten,125,125,progrexion)
exten => 122,1,Macro(progrexion_exten,122,122,progrexion)
exten => 123,1,Macro(progrexion_exten,123,123,progrexion)
exten => 142,1,Macro(progrexion_exten,142,142,progrexion)
exten => 108,1,Macro(progrexion_exten,108,108,progrexion)
exten => 6000,1,Macro(progrexion_exten,6000,6000,progrexion)
exten => 6001,1,Macro(progrexion_exten,6001,6001,progrexion)
;exten => 6002,1,Macro(progrexion_exten,6002,6002,progrexion)
exten => 6003,1,Macro(progrexion_exten,6003,6003,progrexion)
exten => 2000,1,Macro(progrexion_exten,2000,2000,progrexion)
exten => 2001,1,Macro(progrexion_exten,2001,2001,progrexion)
[CMG]
include => global_crossing
exten => _1XXXNXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1XXXNXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1XXXNXXXXXX,3,Dial(Zap/g3/${EXTEN:1})
exten => _1800NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1800NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1800NXXXXXX,3,Dial(Zap/g2/${EXTEN:1})
exten => _1866NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1866NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1866NXXXXXX,3,Dial(Zap/g2/${EXTEN:1})
exten => _1877NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1877NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1877NXXXXXX,3,Dial(Zap/g2/${EXTEN:1})
exten => _1888NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _1888NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _1888NXXXXXX,3,Dial(Zap/g2/${EXTEN:1})
exten => _NXXXXXX,1,SetVar(CALLFILENAME=${UNIQUEID})
exten => _NXXXXXX,2,MixMonitor(/recordings/${CALLFILENAME}.wav)
exten => _NXXXXXX,3,Dial(Zap/g3/801${EXTEN:0})
exten => 6001,1,Macro(cmg_exten,6001,6001,CMG)
;Agent Login
exten => 2001,1,wait(2)
exten => 2001,2,AgentLogin(||${ARG2}@CMG)
exten => 3508,1,Macro(cmg_exten,3508,3508)
exten => 3509,1,Macro(cmg_exten,3509,3509)
exten => 3510,1,Macro(cmg_exten,3510,3510)
exten => 3511,1,Macro(cmg_exten,3511,3511)
exten => 3515,1,Macro(cmg_exten,3515,3515)
exten => 3516,1,Macro(cmg_exten,3516,3516)
exten => 3517,1,Macro(cmg_exten,3517,3517)
exten => 3518,1,Macro(cmg_exten,3518,3518)
exten => 3504,1,Macro(cmg_exten,3504,3504)
exten => 3561,1,Macro(cmg_exten,3561,3561)
exten => 3562,1,Macro(cmg_exten,3562,3562)
exten => 3563,1,Macro(cmg_exten,3563,3563)
exten => 3564,1,Macro(cmg_exten,3564,3564)
exten => 3565,1,Macro(cmg_exten,3565,3565)
exten => 3501,1,Macro(cmg_exten,3501,3501)
exten => 3502,1,Macro(cmg_exten,3502,3502)
exten => 3503,1,Macro(cmg_exten,3503,3503)
exten => 3505,1,Macro(cmg_exten,3505,3505)
exten => 3506,1,Macro(cmg_exten,3506,3506)
exten => 3566,1,Macro(cmg_exten,3566,3566)
exten => 3567,1,Macro(cmg_exten,3567,3567)
exten => 3568,1,Macro(cmg_exten,3568,3568)
exten => 3569,1,Macro(cmg_exten,3569,3569)
exten => 3570,1,Macro(cmg_exten,3570,3570)
exten => 3522,1,Macro(cmg_exten,3522,3522)
exten => 3523,1,Macro(cmg_exten,3523,3523)
exten => 3524,1,Macro(cmg_exten,3524,3524)
exten => 3525,1,Macro(cmg_exten,3525,3525)
exten => 3529,1,Macro(cmg_exten,3529,3529)
exten => 3530,1,Macro(cmg_exten,3530,3530)
exten => 3531,1,Macro(cmg_exten,3531,3531)
exten => 3532,1,Macro(cmg_exten,3532,3532)
exten => 3533,1,Macro(cmg_exten,3533,3533)
exten => 3534,1,Macro(cmg_exten,3534,3534)
exten => 3535,1,Macro(cmg_exten,3535,3535)
exten => 4000,1,Macro(cmg_exten,4000,4000)
[evolution]
include => Evolution_IVR
include => Evolution_ACD
exten => _1XXXNXXXXXX,1,Dial(Zap/g4/${EXTEN:1})
exten => _1800NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _1866NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _1877NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _1888NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
exten => _NXXXXXX,1,Dial(Zap/g4/801${EXTEN:0})
exten => 50001,1,VoiceMail(50001@evolution)
;exten => 90000,1,GotoIfTime(*|*|4|jul?evolution,50001,1) ; -- Holiday --
;exten => 90000,2,GotoIfTime(7:00-20:00|mon-fri|*|*?evolution,90000,1) ; -- Open Hours --
;exten => 90000,3,GotoIfTime(20:01-6:59|mon-fri|*|*?evolution,50001,1) ; -- Closed Hours --
;exten => 90000,4,GotoIfTime(*|sat-sun|*|*?evolution,50001,1) ; -- Closed Weekends --
exten => 90000,1,Answer()
exten => 90000,2,SetMusicOnHold(native)
exten => 90000,3,PlayBack(evo_acd)
exten => 90000,4,Queue(evolution|n|||)
exten => 90001,1,AGI(/home/greg/ivr/ev_ivr.php)
;auto attendant
exten => 6406,1,Goto(8888,1)
exten => 8500,1,VoicemailMain(@evolution)
exten => 8888,1,Answer()
exten => 8888,2,SetMusicOnHold(native)
exten => 8888,3,DigitTimeout(2)
exten => 8888,4,ResponseTimeout(10)
exten => 8888,5,Background(evolution_ivr)
exten => 8888,6,Hangup()
;Dial by name directory
exten => 1,1,Directory(evolution,evolution,f)
exten => 2,1,Goto(10000,1)
exten => 3,1,Goto(10001,1)
exten => 4,1,Goto(10002,1)
exten => 100,1,Macro(evolution_exten,100,ev_100,evolution)
exten => 103,1,Macro(evolution_exten,103,ev_103,evolution)
exten => 106,1,Macro(evolution_exten,106,ev_106,evolution)
exten => 107,1,Macro(evolution_exten,107,ev_107,evolution)
exten => 6002,1,SetCallerID("Sjon Benson" <9998887777>)
exten => 6002,2,Macro(evolution_exten,6002,6002,evolution)
;Agent Login
exten => 2001,1,wait(2)
exten => 2001,2,AgentLogin()
exten => 2001,3,Hangup
;agent phones
exten => 120,1,Macro(evolution_exten,120,ev_120,evolution)
exten => 121,1,Macro(evolution_exten,121,ev_121,evolution)
exten => 122,1,Macro(evolution_exten,122,ev_122,evolution)
exten => 2002,1,wait(2)
exten => 2002,2,RemoveQueueMember()