I’m working in the queue code and have stumbled across a weird scenario involving penalties and queue rules. If two agents have penalties 0 and 1 in a RINGALL queue, then only the agent with penalty 0 will be called. If I try raising the QUEUE_MAX_PENALTY to say, 5, I would expect the agent with a penalty of 1 to also be called. This is not the case, however. There’s one line of code that checks an agent’s priority to be called (aka metric), and it is based on penalty. Finding the best agent to call is based on the lowest metric value, which will always be the agent with the lowest penalty with current Asterisk. Changing this line to always have the metric be 0 for RINGALL allows the other agent to be called once its penalty falls within the allowable range (between QUEUE_MIN_PENALTY and QUEUE_MAX_PENALTY).
Are there any use cases that this would break? Is there something I’m not thinking of that you guys are using this for? I would like as much feedback as possible so that any change made does not cause problems for others, since the code is rather old.
Thanks in advance!