[asterisk-users] Agent Callback Login in 1.4

Alexandre Snarskii snar at paranoia.ru
Mon Sep 17 08:36:09 CDT 2007


On Mon, Sep 17, 2007 at 05:31:30AM -0400, Watkins, Bradley wrote:
> 
> > On a side note, does anyone have the URL to the AEL example so I can
> > write out an extensions.conf version for the wiki?
> 
> It's called queues-with-callback-members.txt in the /docs directory in
> the source tree.

Well, this is a good starting point, but this document not 
addressing some issues arising when you trying to move your
existing AgentCallbackLogin-based setup to new one. 

Since the last week I'm preparing for such transition, and 
my findings may be useful for others: 

- there are no way to determine which agent is logged on which channel
from cli. For example, after we had authenticated agent and added him
with AddQueueMember(support,SIP/5464,,,) all I can see in cli is: 
vc*CLI> queue show support 
support      has 0 calls (max 8) in 'roundrobin' strategy (3s holdtime), W:0, 
 C:1, A:2, SL:0.0% within 0s 
    Members: 
      SIP/5464 (dynamic) (Not in use) has taken 1 calls (last was 24 secs ago)
Well, there is a possibility to explicitly 'name' agent, using
AddQueueMember(support,SIP/5464,,,Agent/1001), but the cli result is the
same... Patch for this issue is 2-line one, does anybody think that 
it's a good idea to open bug on it ? 

- AgentMonitorOutgoing just does not work with new setup, because
it's not agent logged in but just interface added... (Workaround: 
after successful login of agent issue Set(GLOBAL(AGENTBYCALLERID_5464)=1001),
that will help AgentMonitorOutgoing). 
The same workaround applies to populating CDR's with agent names 
for outbound calls. 

- CDR's not updated with agent 'names' for incoming calls, and the only 
workaround I found is to store agent-channel relationships in the same 
database you using for cdr's and fire triggers on cdr insertion to fix.. 
However, it does not helps when cdr's stored in file..
(May be I should write a patch to apps/app_queue.c, adding option
updatecdr, which mimics agents.conf one ? Should be about 10-lines one.. )

- In situations when agent leaves his phone without explicit logout,
there is no easy way to trigger logoff when next agent logs in on the 
same phone.. For CallbackLogin's we using ugly dialplan hack named
System('asterisk -rx "agent logoff ${AGENTBYCALLERID_${CALLERID(num)}}"')
but in any way, we have a way to do it... With dynamic members that
hack does not work, and you have no way to get list of queues, so
you can iterate them, looking is that interface is member of queue and 
remove it from one.. (well, my workaround to achieve so is to implement
login/logout logic in AGI, and get list of queues from queues.conf). 

- ChanSpy(Agent/) does not work in this setup. And ChanSpy(SIP/) is too 
dangerous, at least in our situation (one of our call-center applications 
is an office front-end, and giving call-center managers ability to Spy on 
CEO/CFO/CTO/ calls is a really bad idea..). I suppose, that can be helped
with setting SPYGROUP before call enters queue and resetting it when 
call is transferred to back-office, but not tested it yet. 

- and, as I had not yet finished our transision, this list is surely 
incomplete :) 




More information about the asterisk-users mailing list