We have a small call center and are trying to use Asterisk queues. We have configured two queues and agents, our operators log in via AgentLogin() application and all works fine.
But sometimes when operators SIP-phone goes offline or operator logs off, Asterisk doesn’t change agent status to “offline”. As a result, operators cant login for next time and we have wrong statistics of their worktime.
I’ve tried playing with persistentagents/autologoffunavail options but with no result. Normally, I use CLI command ‘agent logoff’ to log out agent manually, but even it doesn’t help sometimes. So I think it’s a bug.
How about running a script with a cron job that checks to see if the phones are available. If they are not to log them off. You can also tell them that they must log off when they leave or they are penalized. The latter seems to work pretty well.
I have done some tests, so let me explain the situation again.
The main problem is that Asterisk doesn’t change agent status when his SIP-session has ended incorrectly (soft-phone crashed, office switch rebooted).
So if agent logs in and then kills his 3CX-phone program with Task Manager, Asterisk will still connects callers with that agent. As a result, callers listen to silence for a while and then have to hang up a call.
Is it a bug? If not, how can I prevent this behavior?
[May 27 15:53:25] NOTICE: chan_sip.c:22850 sip_poke_noanswer: Peer ‘201’ is now UNREACHABLE! Last qualify: 101
beast*CLI> sip show peers
Name/username Host Dyn Nat ACL Port Status
201/201 184.108.40.206 D 20312 UNREACHABLE
The SIP-connection is broken now but Agent/1 is still active:
[quote]beast*CLI> agent show
[color=#FF0000]1 (Will Meadows) logged in on SIP/201-00000001 is idle (musiconhold is ‘default’)[/color]
2 (Will Meadows) not logged in (musiconhold is ‘default’)
2 agents configured [1 online , 1 offline]
beast*CLI> queue show
test has 0 calls (max unlimited) in ‘rrmemory’ strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Agent/2 (Invalid) has taken no calls yet
[color=#FF0000] Agent/1 (Not in use) has taken no calls yet[/color]
He’s using qualify, which does ensure that there is regular SIP traffice, to allow the connection loss to be detected. He has also confirmed that the connection loss IS being detected, just not actioned by app_queue.c.