I have sent this before but here is how I do agent login and queue:
; #### Agent login logout ####
exten => *20,1,Verbose(2,Doing agent login/logout)
exten => *20,n,Answer()
exten => *20,n,wait(.0.5)
exten => *20,n,Read(AgentNumber,agent-user)
exten => *20,n,Set(UserID=${DB(ExtenToUser/${AgentNumber})})
exten => *20,n,GotoIf($["${UserID}"=""]?NOUSER)
exten => *20,n,Set(AgentStatus=${DB(users/${UserID}/AgentStatus)})
exten => *20,n,GotoIf($["${AgentStatus}"="1"]?VERIFY)
exten => *20,n,GotoIf($["${AgentStatus}"="2"]?VERIFY)
exten => *20,n(NOUSER),Playback(cfmc/bad-agent)
exten => *20,n,Playback(vm-goodbye)
exten => *20,n,Hangup()
exten => *20,n(VERIFY),VMAuthenticate(${agentnumb...@ourvm)
exten => *20,n,GotoIf($["${AgentStatus}"="2"]?AGENTOFF)
exten => *20,n,Set(DB(users/${UserID}/AgentStatus)=2)
exten => *20,n,Set(DB(users/${UserID}/AgentDevice)=${CUT(CHANNEL,-,1)})
exten => *20,n,AddQueueMember(support,Local/Queue${AgentNumber}
@ansqueue,,,,${C$
; AQMSTATUS can be ADDED | MEMBERALREADY | NOSUCHQUEUE
exten => *20,n,Playback(agent-loginok)
exten => *20,n,Verbose(2,Agent ${AgentNumber} added ${DB(users/$
{UserID}/AgentD$
exten => *20,n,Hangup()
exten => *20,n(AGENTOFF),Set(DB(users/${UserID}/AgentStatus)=1)
exten => *20,n,Set(OldVal=${DB_DELETE(users/${UserID}/AgentDevice)})
exten => *20,n,RemoveQueueMember(support,Local/Queue${AgentNumber}
@ansqueue)
exten => *20,n,Playback(agent-loggedoff)
exten => *20,n,Verbose(2,Agent ${AgentNumber} removed)
exten => *20,n,Hangup()
exten => 201,1,Verbose(2,Doing support call)
exten => 201,n,Answer()
exten => 201,n,Wait(0.5)
;exten => 201,n,Set(qac=${QUEUE_MEMBER(support,free)})
exten => 201,n,Set(qac=${QUEUE_MEMBER_COUNT(support)})
exten => 201,n,GotoIf($[${qac} > 0]?HAVEAGNT)
exten => 201,n,Verbose(2,No agents free in support queue)
exten => 201,n,Playback(cfmc/support-no-agent)
exten => 201,n,Voicemail(2...@ourvm,u)
exten => 201,n,Playback(goodbye)
exten => 201,n,Hangup()
exten => 201,n(HAVEAGNT),Playback(cfmc/support-intro)
exten => 201,n,Verbose(2,Queuing caller for support agent)
exten => 201,n,Queue(support,nrt,,,120)
exten => 201,n,Verbose(2,Support agent did not answer call)
exten => 201,n,Voicemail(2...@ourvm,b)
exten => 201,n,Playback(goodbye)
exten => 201,n,Hangup()
[ansqueue]
exten => _Queue.,1,Set(AgentNumber=${EXTEN:5})
exten => _Queue.,n,Set(UserID=${DB(ExtenToUser/${AgentNumber})})
exten => _Queue.,n,Set(AgentDevice=${DB(users/${UserID}/AgentDevice)})
;exten => _Queue.,n,Verbose(2,Agent ${AgentNumber} status is $
{DEVICE_STATE(${A$
exten => _Queue.,n,Verbose(2,Agent ${AgentNumber} status is ${DEVSTATE
(${AgentD$
;exten => _Queue.,n,GotoIf($["${DEVICE_STATE($
{AgentDevice})}"="NOT_INUSE"]?DIA$
exten => _Queue.,n,GotoIf($["${DEVSTATE(${AgentDevice})}"="NOT_INUSE"]?
DIALIT)
exten => _Queue.,n,Busy()
exten => _Queue.,n,Hangup()
exten => _Queue.,n(DIALIT),Dial(${AgentDevice},,g)
exten => _Queue.,n,Hangup()
--
Jim Dickenson
mailto:[email protected]
CfMC
http://www.cfmc.com/
On Nov 2, 2009, at 8:44 AM, Lenz Emilitri wrote:
We were thinking about doing something similar as well. A lot of
people are asking for this. If there is anybody else interested, we
could share the load....
I was thinking about creating a context like @agents, so that when
you do the log-on you basically add Local/1...@agents as a member of
the queue. When you ring it, it basically looks up for the actual
device in AstDB and dials it like:
Queue -> (member) Local/1...@agents -> (astdb) SIP/234
I think that we should be able to forward channel state as well
(using hints? I've never done it) so that app_queue does not try
dialling agents that are busy.
I was thinking about storing queue-agent associations into config
strings, and/or AstDB, and/or http over curl. And yes, ideally it
should work fine on 1.4's as well....
Things that should be working from version one:
- logging compatible with older asterisk's
- authentication using Voicemail
-.plug and play on most systems
- channel states
- pause/unpause with pause codes
- ...you tell me....
Anybody interested?
l.
2009/10/30 Mariano Lecuona <[email protected]>
Hi all,
I would like to know if there is any application replacement for the
AgentCallBackLogin() from asterisk 1.4 on asterisk 1.6. I know, from
what I've read that the call back login agent can be done using a
smart dialplan as showed on the docs. But I cannot thinks a flexible
dialplan for a dinamic reassignation of agents to different queues
every day.
Thanks in advance.
Mariano
_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
Loway - home of QueueMetrics - http://queuemetrics.com
_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users