Summary:ASTERISK-12298: The strategy roundrobin or rrmemory does not work, only ringall
Reporter:Danillo Franscys Borges de Oliveira (danillo)Labels:
Date Opened:2008-07-02 06:49:04Date Closed:2011-06-07 14:03:08
Versions:Frequency of
Environment:Attachments:( 0) asterisk_roundrobin_problem.log
Description:I am trying to use the queue from asterisk to distribute my calls but only the strategy ringall is working. The strategy roundrobin or rrmemory does not work. I am using Openser together asterisk.



strategy  = ringall       ;The queue rings every available agent and connects
                         ;the call to whichever agent answers first.
joinempty = yes

strategy = roundrobin       ;rings interfaces in the order specified in this configuration file.
joinempty = yes

strategy = rrmemory       ;The queue cycles through the list of queue members, keeping
                         ;track of which member last received a call. The next time a
                         ;call needs to be distributed, Asterisk will continue from
                         ;this point in the list of queue members.
joinempty = yes

timeout = 10
member => SIP/103@openser
member => SIP/104@openser
member => SIP/105@openser



exten => _X.,1,Answer()
exten => _X.,n,NoOp(Call not allowed to ${EXTEN})
exten => _X.,n,Hangup()

exten => s,1,GotoIf($[${ISNULL(${ARG2})}]?normal:overflow)
exten => s,n(normal),Queue(${ARG1},r&t&T)
exten => s,n,Hangup()
exten => s,n(overflow),Queue(${ARG1},r&t&T,,,30)
exten => s,n,Goto(incoming,${ARG2},1)
exten => s,n,Hangup()

exten => _X.,1,NoOp(Ligacao para ${EXTEN})
exten => _X.,n,Dial(SIP/${EXTEN}@openser)
exten => _X.,n,Hangup()

exten => _X.,1,Goto(outgoing_calls,,1)
exten => 777,1,Macro(teste,teste1_members,108,30)
Comments:By: David Woolley (davidw) 2008-07-02 06:58:55

What do you mean by "does not work"?  rrmemory definitely works for the degenerate case of one available member.  Unfortunately the person here who might have tested it with multiple members is on a long holiday.

By: Joshua C. Colp (jcolp) 2008-07-02 21:23:45

Please be more specific and include console output with a description of exactly how it "does not work".

By: Danillo Franscys Borges de Oliveira (danillo) 2008-07-10 11:04:09


I attached the console output with the maximum debug and verbose level.
I am registering the queue members on Openser and when the queue is reached the members are not called although they are available and registered. After the timeout that I specified the call goes to the overflow extension, which normally rings and I can answer the call. If I configure the queue strategy as ringall the members are called (start ringing) without any problem.

By: Danillo Franscys Borges de Oliveira (danillo) 2008-07-11 15:38:38


By using a working around I could solve my problem. I verified in the module app_queue.c, routine is_our_turn that there is a check for the flag autofill, if it is not set only the queue head will be verified. After changing the autofill to 'no'in queues.conf the strategy roundrobin always work. Another way to correct this problem is specifing the correct modules loading order, I did the following: first chan_sip.so and after app_queue.so. It also works.

I think you can close this issue!!!

By: Jason Parker (jparker) 2008-11-18 16:28:32.000-0600


Module load order issue is documented.