<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I have sent this before but here is how I do agent login and queue:<div><br></div><div><div>; #### Agent login logout ####</div><div>exten => *20,1,Verbose(2,Doing agent login/logout)</div><div>exten => *20,n,Answer()</div><div>exten => *20,n,wait(.0.5)</div><div>exten => *20,n,Read(AgentNumber,agent-user)</div><div>exten => *20,n,Set(UserID=${DB(ExtenToUser/${AgentNumber})})</div><div>exten => *20,n,GotoIf($["${UserID}"=""]?NOUSER)</div><div>exten => *20,n,Set(AgentStatus=${DB(users/${UserID}/AgentStatus)})</div><div>exten => *20,n,GotoIf($["${AgentStatus}"="1"]?VERIFY)</div><div>exten => *20,n,GotoIf($["${AgentStatus}"="2"]?VERIFY)</div><div>exten => *20,n(NOUSER),Playback(cfmc/bad-agent)</div><div>exten => *20,n,Playback(vm-goodbye)</div><div>exten => *20,n,Hangup()</div><div>exten => *20,n(VERIFY),VMAuthenticate(${AgentNumber}@ourvm)</div><div>exten => *20,n,GotoIf($["${AgentStatus}"="2"]?AGENTOFF)</div><div>exten => *20,n,Set(DB(users/${UserID}/AgentStatus)=2)</div><div>exten => *20,n,Set(DB(users/${UserID}/AgentDevice)=${CUT(CHANNEL,-,1)})</div><div>exten => *20,n,AddQueueMember(support,Local/Queue${AgentNumber}@ansqueue,,,,${C$</div><div><div>; AQMSTATUS can be ADDED | MEMBERALREADY | NOSUCHQUEUE</div><div>exten => *20,n,Playback(agent-loginok)</div><div>exten => *20,n,Verbose(2,Agent ${AgentNumber} added ${DB(users/${UserID}/AgentD$</div><div>exten => *20,n,Hangup()</div><div>exten => *20,n(AGENTOFF),Set(DB(users/${UserID}/AgentStatus)=1)</div><div>exten => *20,n,Set(OldVal=${DB_DELETE(users/${UserID}/AgentDevice)})</div><div>exten => *20,n,RemoveQueueMember(support,Local/Queue${AgentNumber}@ansqueue)</div><div>exten => *20,n,Playback(agent-loggedoff)</div><div>exten => *20,n,Verbose(2,Agent ${AgentNumber} removed)</div><div>exten => *20,n,Hangup()</div><div><br></div><div><br></div><div><div>exten => 201,1,Verbose(2,Doing support call)</div><div>exten => 201,n,Answer()</div><div>exten => 201,n,Wait(0.5)</div><div>;exten => 201,n,Set(qac=${QUEUE_MEMBER(support,free)})</div><div>exten => 201,n,Set(qac=${QUEUE_MEMBER_COUNT(support)})</div><div>exten => 201,n,GotoIf($[${qac} > 0]?HAVEAGNT)</div><div>exten => 201,n,Verbose(2,No agents free in support queue)</div><div>exten => 201,n,Playback(cfmc/support-no-agent)</div><div>exten => 201,n,Voicemail(201@ourvm,u)</div><div>exten => 201,n,Playback(goodbye)</div><div>exten => 201,n,Hangup()</div><div>exten => 201,n(HAVEAGNT),Playback(cfmc/support-intro)</div><div>exten => 201,n,Verbose(2,Queuing caller for support agent)</div><div>exten => 201,n,Queue(support,nrt,,,120)</div><div>exten => 201,n,Verbose(2,Support agent did not answer call)</div><div>exten => 201,n,Voicemail(201@ourvm,b)</div><div>exten => 201,n,Playback(goodbye)</div><div>exten => 201,n,Hangup()</div><div><br></div><div><br></div><div><div>[ansqueue]</div><div>exten => _Queue.,1,Set(AgentNumber=${EXTEN:5})</div><div>exten => _Queue.,n,Set(UserID=${DB(ExtenToUser/${AgentNumber})})</div><div>exten => _Queue.,n,Set(AgentDevice=${DB(users/${UserID}/AgentDevice)})</div><div>;exten => _Queue.,n,Verbose(2,Agent ${AgentNumber} status is ${DEVICE_STATE(${A$</div><div>exten => _Queue.,n,Verbose(2,Agent ${AgentNumber} status is ${DEVSTATE(${AgentD$</div><div>;exten => _Queue.,n,GotoIf($["${DEVICE_STATE(${AgentDevice})}"="NOT_INUSE"]?DIA$</div><div>exten => _Queue.,n,GotoIf($["${DEVSTATE(${AgentDevice})}"="NOT_INUSE"]?DIALIT)</div><div>exten => _Queue.,n,Busy()</div><div>exten => _Queue.,n,Hangup()</div><div>exten => _Queue.,n(DIALIT),Dial(${AgentDevice},,g)</div><div>exten => _Queue.,n,Hangup()</div><div><br></div></div></div></div><div>
<span class="Apple-style-span" style="font-family: Helvetica; "><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">-- </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">Jim Dickenson</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><a href="mailto:dickenson@cfmc.com">mailto:dickenson@cfmc.com</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">CfMC</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><a href="http://www.cfmc.com/">http://www.cfmc.com/</a></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></div></div></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On Nov 2, 2009, at 8:44 AM, Lenz Emilitri wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>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....</div><div><br></div><div>I was thinking about creating a context like @agents, so that when you do the log-on you basically add Local/106@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:</div>
<div><br></div><div>Queue -> (member) Local/106@agents -> (astdb) SIP/234</div><div><br></div><div>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.</div>
<div><br></div><div>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....</div><div><br></div><div>Things that should be working from version one:</div>
<div>- logging compatible with older asterisk's</div><div>- authentication using Voicemail</div><div>-.plug and play on most systems</div><div>- channel states</div><div>- pause/unpause with pause codes</div><div>- ...you tell me....</div>
<div><br></div><div>Anybody interested?</div><div>l.</div><div><br></div><br><div class="gmail_quote">2009/10/30 Mariano Lecuona <span dir="ltr"><<a href="mailto:mlecuona@gmail.com">mlecuona@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi all,<div><br></div><div>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.</div>
<div><br></div><div>Thanks in advance.</div><div><br></div><font color="#888888"><div>Mariano</div>
</font><br>_______________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com/" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
<a href="http://lists.digium.com/mailman/listinfo/asterisk-users" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-users</a><br></blockquote></div><br><br clear="all"><br>-- <br>Loway - home of QueueMetrics - <a href="http://queuemetrics.com/">http://queuemetrics.com</a><br>
<br>
_______________________________________________<br>-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com">http://www.api-digital.com</a> --<br><br>asterisk-users mailing list<br>To UNSUBSCRIBE or update options visit:<br> <a href="http://lists.digium.com/mailman/listinfo/asterisk-users">http://lists.digium.com/mailman/listinfo/asterisk-users</a></blockquote></div><br></div></body></html>