After few hundreds calls and testing, I have now the complete picture of when a queue call, answered by an agent and transferred to another number is logged as “TRANSFERRED” in the queue_log. Maybe this can be worth to be added to the wiki.asterisk.org after confirmation.
In my example, I was using the Local channel and the first thing I noticed was about the “local call optimization”. If I set the agent is configured in the form of Local/something@context**/n**, then the call transfer is NEVER logged.
However, if the agent is configured in the form of Local/something@context, then the call transfer is logged only and only if there is no MixMonitor running on the call.
Now the big question. How to record a queue call, use a Local channel for calling agents and log the transfer for the calls?
When agent receives call from queue, call is not in queue anymore. Though it is not logged by queue_log.
You can receive TRANSFER event only if you do trasfer into queue.
I am not really sure what you said is correct. When an agent receives a call from queue, the queue is still tracking the call. The queue logs correctly when it hangup the call, just the “BLINDTRANSFER” and “ATTENDEDTRANSFER” events are not logged. Take in mind the server assisted transfer is performed.
When Local channels are involved and not optimized away then you aren’t transferring the person in the queue. You are transferring the Local channel elsewhere. To the Queue nothing has changed about the situation.
Sorry for reviving this post, but I thought it was better than creating a new one.
I think I didn’t understand what you said here jColp, how could I “optimize” a channel?
My scenario is that realtime agents with interface local/xxxx@context don’t have their transfers logged, but if I manually insert an agent with interface PJSIP/xxxx, it’s transfer does get stored, but I really need a context for keeping control in my dialplan before dialing the agents.
A Local channel that does not have /n at the end of it will try to optimize itself out if possible. This isn’t always possible though, in which case the Local channel will remain.
Found a solution for myself, will post it here in case it helps anyone.
I my case, the agent uses an interface to transfer the caller to a survey before hanging up the call. We search all the active channels in Asterisk and get the one with Channel “local/agent@context” and with Application “AppQueue” and send this channel to a Manager’s BlindTransfer action.
This way the agent call is finished, the caller is transfered to the survey and the event BLINDTRANSFER is logged into queue_log.