I am using FreePBX to configure my server, but can also edit the actual files if necessary. I have a queue with a retry time of 0, ringinuse=no and ringall strategy. The setup aims to distribute calls from multiple clients to agents such that the first caller rings all devices, while the second and subsequent callers wait in the queue until a device becomes available. This is functioning as expected.
However, I’m encountering an issue: if an agent declines or ignores a call, they continue to receive retries from that same caller, when the wanted behaviour is that the caller is not reconnected to the same agent for the duration of that call session, effectively treating the ignored call as busy for that particular agent. Is there any way to achieve this behaviour?
I want to keep the functionality where callers remain in line waiting for available devices instead of the call being terminated immediately if there are no agents. From my understanding I need the retry on for that, hence I can’t simply turn off the feature.
[ The answer about FreePBX suggests this may no longer be the case.
It looks as though support for something like this was introduced in Asterisk 11.11.0, but I’ve been unable to recover a change log, even from the wayback machine, or work out what option controls this behaviour. ]
I believe it is still the case that app_queue starts each retry round with a clean slate. Any state changes for the member (autopause, round robin position, or last used time) apply to the queue, as a whole, not the current caller (and two of those three don’t apply to ringall).
You can achieve the desired behavior by adjusting agent penalties, dynamically penalizing agents who ignore or decline calls, and implementing custom dialplan logic to route subsequent calls from the same caller to different agents based on their recent call behavior. Testing in a controlled environment and consulting with experts is recommended before making changes.
I don’t think the OPs agents are being lazy. Although they haven’t clearly explained their goals, I think that there are reasons why some agents will not deal with certain customers. The requirement seems to be for just the call, which I read as an approximation of just the customer.
Assuming this is the patch:
It isn’t in the current code, and it appears to lock the agent out of the queue for all callers, until a call fails because all the members are locked out in this way, at which point they are all reset. This is based on looking at the patch for only a few minutes, and I may have missed something. In particular, the exact reset condition probably needs looking at more closely.
Although there is a suggestion that the patch used by the FreePBX commercial module was mainlined in 11.11.0, the move to github means I’ve been unable to recover the changelog for that version, to establish exactly what was integrated.
The patch has to be GPL licensed, so anyone with the commercial module would have the right to request the source code of the modified Asterisk, and redistribute that, but not the FreePBX module.