[asterisk-users] Call queues on load-balanced asterisks

Thomas Liu
2011-01-11T16:14:41Z

Hi Pan & Dhaval,

We have implemented a FastAGI based queue with Erlang for a inbound call
center, and call this new application as FlexQueue.
All calls distributed on multiple asterisk boxes go through and are
controlled by that same remote fastagi server.

It can routing calls to any destination, by any business rules. It don't
rely on the db for agent/call status store & query.
It's event driven and dict based agent/call store & query, with very
good
performance, and low cpu power consumption.

I think for your requirement, app_queue could not fulfill that.

Best Regards,

Thomas Liu
----------------------------------------------------------------------------
-----------------------------
WShuttle Infotech Ltd.? http://www.wshuttle.com?/ http://www.lookmypc.com
http://www.vicidial.cn / http://www.call-center-software.com.cn
Tel: +86 20 39230098 39230096
Mobile : +86 1390 3051 930
HK DID: +852 6950 0916, Macau DID: +853 6285 0645
Email: thomas.liu at wshuttle.com
MSN:thomaslly at 21cn.com, QQ: 332148339, Skype:tonylly
Yahoo Messenger: thomaslly
Address:? Room# 302, Building T8, Dongmen Plaza, Shuishi Reserved Area,
Guangzhou Higher Education Mega Center, Guangzhou,
Guangdong Province, China.?? Zip code: 510006
----------------------------------------------------------------------------
--------------


> Hello Dhaval (and others),
>
> As far as I can tell, realtime queue will not solve my problem. I can
statically
> define the same queue with the same members on two machines as well. I was
planning
> to use realtime anyway. The issue is the actual queueing of the incoming
calls.
>
> Let?s say I define the queue "IT-support" with members Local/100
and
Local/101
> on both machines. The first call comes in and is distributed by Kamailio
to Asterisk
> A, and answered by 100. The next call comes in to Asterisk B, and is
answered by
> 101. At this point, both members are busy. Call 3 now comes in and is sent
to Asterisk
> A, where it waits for a free member. Call 4 comes in and is also sent to
Asterisk
> A, as is Call 5. Then call 6 is sent to Asterisk B. At this point 100
finishes
> his call and becomes free. Which call is delivered to 100? As far as I can
tell,
> that?s a 50/50 chance between call 3 and call 6. This is not correct
behaviour!
> Call 6 should wait until calls 3, 4 and 5 (from the other server) have all
been
> delivered.
>
> In the example above: When call 3 comes in, Asterisk A may even try to
deliver
> it to 101, who gets call waiting indication. He will now have two
simultaneous
> calls from the same queue!
>
> I have not found any way to share information about calls waiting in the
queue,
> wait times, member states and so on between the two servers.
>
> Unless you guys know of a way, I think I'm going to have to ask the
customer to
> change their design to master-slave (with failover) instead of
load-balanced.
>
> With kind regards,
> Pan
>
> > Hello Pan,
> >
> > You can user DB for this just make real time configuration of Queue
and
make
> > all asterisk server connected to Same DB if more load then use
replication
> > for different server on DB, also So that Quque name should be same for
all
> > server and asterisk can call same agent.
> >
> > you didnot mentioned that which purpose youwere use queue other wise i
can
> > give answer in better way.
> >
> > regards
> > Dhaval
> >
> > On Fri, Jan 7, 2011 at 5:08 PM, Pan B. Christensen <pan at
ibidium.no>
wrote:
> >
> >>  Hello,
> >>
> >> I have been asked to implement the following design:
> >>
> >> Load-balanced Kamailio servers handling registrations and routing.
> >> Load-balanced asterisk feature servers handling voicemail and
other
things
> >> Kamailio cannot do. Plus several load-balanced gateways, but they
are
not
> >> relevant to my question.
> >>
> >> All this is working fine.
> >>
> >> I've now been asked to start implementing calling queues, and
my
question
> >> is this:
> >> How can I implement the same queue on multiple Asterisk servers?
> >>
> >> Let's say that 10 people call the same queue. These calls
would then
> >> currently be distributed 5 to Asterisk A and 5 to Asterisk B. How
can I
make
> >> Asterisk A respect the 5 people queued on the other server and
vice
versa?
> >>
> >> Will the customer need to change their design to make the feature
servers
> >> master-slave with failover instead of load-balanced?
> >>
> >> Mvh
> >> Pan