Not working penaltychange


I have a queue configured for each and I would want Extension 100 to ring for 5 seconds and then start ringing both extension 100 & 110 until the call is answered or the timeout is reached.

I try to do it through a penalty, but it doesn’t work.
there is always a call only to number 100


exten => ${NUM001},1,SET(CALLERID(name)=‘test’)
same => n,Answer()
same => n,Set(QUEUE_MIN_PENALTY=1)
same => n,Set(QUEUE_MAX_PENALTY=1)
same => n,Queue(3TIL,record_call)
same => n,Hangup()


strategy = ringall
announce-frequency = 0
timeout =10
retry = 1

member => SIP/100,1
member => SIP/110,2


penaltychange => 5,1,2

If I edit the queuerules.conf file to values 5,2,2, then first number 100 is called, then after five seconds the call switches to number 110

How to solve this problem?

I’m surprised it doesn’t wait to timeout + retry. At a guess, it must be working out that the first agent cannot go the whole 10 seconds.

I wouldn’t expect the penalties to be taken into account until the current round of ringing had ended, after timeout, as, from what I remember, the complete list of eligible members is worked out at the start of each cycle.

Does it ring both at the 11 seconds point?

here I lied a little.
In fact, within ten seconds number 100 rings, and then from 11 seconds only number 110 starts ringing. Sorry for the misinformation

I found a similar article that solves my problem but solves the global asterisk problem

My experience with penalties are, that Asterisk evaluates the lowest penalty first. If an agent is available, their phone will ring, and other, higher, penalties are not taken into account.

So if your queue contains the members

100, penalty 1
110, penalty 2

If 100 is not busy or paused, then 110 will never ring.

What you CAN do, is to rotate the penalties.

penaltychange => 5,2,2
penaltychange => 10,1,2
penaltychange => 15,2,2
penaltychange => 20,1,2
penaltychange => 25,2,2
penaltychange => 30,1,2
penaltychange => 35,2,2

You will, of cause, need to repeat the lines, until you have enough to cover the entire time the caller is in the queue.

This should depend on the strategy, and, for ringall, I’m pretty sure htat all eligible members are rung at once.

With ring all, I have to use the above mentioned rules, in order to make Asterisk ring first all penalty 1 members, then penalty 2, and so forth, unless all members on the lowest penalty are busy/paused, no one on the next penalty level will be called… It may be a bug, and not intended behaviour, but that’s how it has been working for me, since at least Asterisk 13.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.