TrixBox CE 2.6.2.2 running Asterisk 1.4.22-3. I’m attempting to get penalties to work with dynamic agents. It seems to be ignoring the penalties and running a normal round robin.
queues_additional.conf:
[303]
announce-frequency=0
announce-holdtime=no
autofill=yes
eventmemberstatus=no
eventwhencalled=no
joinempty=no
leavewhenempty=yes
maxlen=0
periodic-announce-frequency=0
queue-callswaiting=silence/1
queue-thereare=silence/1
queue-youarenext=silence/1
retry=5
strategy=roundrobin
timeout=15
weight=0
wrapuptime=0
member=Agent/200,1
member=Agent/201,2
I’d like it to ring Agent/200 first every time, unless busy or logged off.
From the 1.4.25 changelog:
2009-03-30 16:17 +0000 [r184980-185031] Mark Michelson mmichelson@digium.com
* apps/app_queue.c: Fix queue weight behavior so that calls in
low-weight queues are not inappropriately blocked. (This is
copied and pasted from the review request I made for this patch)
Asterisk has some odd behavior when queue weights are used. The
current logic used when potentially calling a queue member is: If
the member we are going to call is part of another queue and
_that other queue has any callers in it_ and has a higher weight
than the queue we are calling from, then don't try to contact
that member. The issue here is what I have marked with
underscores. If the higher-weighted queue has any callers in it
at all, then the queue member will be unreachable from the
lower-weighted queue. This has the potential to be really really
bad if using a queue strategy, such as leastrecent or
fewestcalls, with the potential to call the same member
repeatedly. The fix proposed by garychen on issue 13220 is very
simple and, as far as I can see, works well for this situation.
With this set of changes, the logic used becomes: If the member
we are going to call is part of another queue, the other queue
has a higher weight than the queue we are calling from, and the
higher weight queue has at least as many callers as available
members, then do not try to contact the queue member. If the
higher weighted queue has fewer callers than available members,
then there is no reason to deny the call to this member since the
other queue can afford to spare a member. Since the fix involved
writing a generic function for determining the number of
available members in the queue, I also modified the is_our_turn
function to make use of the new num_available_members function to
determine if it is our turn to try calling a member. There is one
small behavior change. Before writing this patch, if you had
autofill disabled, then if you were the head caller in a queue,
you would automatically be told that it was your turn to try
calling a member. This did not take into account whether there
were actually any queue members available to take the call. Now
we actually make sure there is at least one member available to
take the call if autofill is disabled. (closes issue #13220)
Reported by: garychen Review:
[reviewboard.digium.com/r/202/](http://reviewboard.digium.com/r/202/)
Not sure if it’s your problem but worth try this version if you can.
Cheers.
Marco Bruni
www.marcobruni.net
Don’t think so. I only have 1 queue setup currently, and it’s not using weighting.
Can anyone confirm that dynamic agents with penalties work (or don’t work)?
arkman
June 17, 2009, 9:46pm
7
Yes what? Yes, they work? Yes, they don’t work?