[1.6.x] AgentCallBackLogin replacement: alternatives?

Using: Asterisk from source


I am attempting to port a call center asterisk setup from 1.4 to 1.6 while still achieving the same functionality provided by the AgentCallBackLogin (ACBL) function. I am having difficulty using the workaround solutions I have found to truly replicate the ACBL functionality.

I have researched the Asterisk forums up and down for fixes along with the Asterisk Wiki (such as the “cmd AgentCallbackLogin” page) and many internet sources, but am still coming up empty for a complete replacement. I would definitely appreciate any insight the professionals on this forum could contribute in solving this dilemma.

Here is a description of my project and some of the issues I have come up with:

The system I am working on upgrading (which currently runs on 1.4.x) has been setup to allow agent “hotdesking” where the agent dials a number, punches in their password and is then logged into the phone and their queues. This allows agent calls to be tracked via the queues log. It also allows agents who are not assigned to a queue to log in to any phone and receive general calls via their designated extension number.

The problem with the 1.6 replacement is that while a dialplan coupled with the asterisk DB works well to set up the hotdesking environment, there does not seem to be any functionality to completely replicate the ability to log agents into queues and track agents. For instance, previously the ACBL function pulled out all agent queue assignments from queues.conf and added the agents to every queue that they were a member of. With the dialplan, how is it possible to replicate that? The AddQueueMember function seems to only give the ability to assign a single agent to a queue, and then initiate a call to the agent when the queue is called without actually “Logging in” the agent.

Also, does anyone know what variables were set by the (1.4.x) agentcallbacklogin process? I looked into the agent_chan.c file to see if I could understand the logic, but I am not a C programmer and I could not follow the program flow very well. I know the AGENTBYCALLERID_${CALLERID(num)} variable gets set, but what tells asterisk that the agent is logged in so that the “agent show” command returns with an agent status as online? Is that status only possible in 1.6 if the agent is directly logged in with an open line? And, must the agent also have an open line to have the agent channel (Agent/${EXTEN}) available for calls?

Original code:
exten = _*XXX,1,AgentCallbackLogin(${EXTEN:1},${CALLERID(num)}@default)


Thank you in advance to anyone who can throw some ideas out there.

I have the same issue. Have tried a few solutions, but nothing found.