Hi Pan & Dhaval, In the past 8 weeks, we have delivered a load-balanced asterisks (1.4) based call center with our flexqueue application for icson.com. It has the below features,
1. 2 x asterisk 1.4 boxes, 1 x mysql db box and 1 x flexqueue box(the two are failover configured with heartbeat and custom script, and mysql master-slave replication between two svr), 2 x kamailio boxes(failover configured), 1 x file server boxes, 1 x app server , run freepbx & queuemetrics. all 8 server are dell r310. 2. the gateway is one mx100 with 4 E1 lines plugged, the incoming calls go to kamailio2 , and routed to ast1/ast2 in round robin mode. 3. all agent phones registered to kamailio 1, and the extensions are still maintained with freepbx 4.On asterisks, all trunks with destination to pstn or agent phones, go to kamailio1; and incoming calls trunk from kamailio2. 5.admin also use freepbx to configure inbound routes, ivrs, announcements, timeconditions, and recordings , etc. the configuration files are generated on the fly for flexqueue when apply changes. Dialplans for inbound routes are also automatically generated and distributed to ast1 & ast2, in these dialplan, fastagi application is installed as well to point to flexqueue. 6.flexqueue interprets the call flow configured on freepbx, and create the queues configured on freepbx, but it's shared among all asterisk boxes. 7.flexqueue interface with queuemetrics , and send all necessary queue logs to queuemetrics for complete reporting & QA purpose. 8.flexqueue has a agent phone panel, and a supervisor monitoring & management panel. Agent can logon his/her phone panel to have features like, incoming call popup, parking, Outbound dial, hold/unhold, transfer (cold/warm/to another queue), hangup, wrapup , pause/resume, etc. the supervisor can logon his/her monitoring & management panel, to view realtime event-driven agent info, queue info, and calls on-going. Besides, supervisor can also listen to agents, barge agents' talk, and qc call records & recordings quickly. 9.flexqueue provide web api for customer's CRM, which is asp.net based, to make agent can click-dial in their web crm application, and playback recordings to the agent's phone by clicking playback button beside crm communication records. The above system has been put into production from today, it's fully load-balanced asterisks based call queues or call centers. the gateways , the asterisk boxes can be added/removed any time. The fault asterisk box will be detected, and bypassed from routing destinations. I wish it's a good reference for your guys who want to create the same infrastructures. 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: [email protected] MSN:[email protected], 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 ---------------------------------------------------------------------------- -------------- > -----Original Message----- > From: Thomas Liu [mailto:[email protected]] > Sent: Wednesday, January 12, 2011 12:15 AM > To: '[email protected]' > Subject: RE: Call queues on load-balanced asterisks > > 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: [email protected] > MSN:[email protected], 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 -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
