A friend and I have recently added the ability to announce the callers position in the call queue every x seconds.. or even just inject an anouncement every x seconds. All setup in queues.conf and can be setup per queue. My next project is to add the ability to announce the callers estimated wait time. I want some feedback to see whats the best method to calculate that? What do you want just minutes? or minutes and seconds? Or the option to use one or the other? I'm thinking (totaltime / totalcalls) - (now - qe->start) = current estimated wait time. Which would update after each call is hungup. http://bugs.digium.com/bug_view_page.php?bug_id=0000214 Please let me know what you would like to see!?!?! Thanks, bkw
If I was calling I would like to know either how long the the person that's been in the queue the longest has been waiting OR an average of how long the callers were in the queue before they were answered (over the last X (where x in a config option) mins On Fri, 2003-09-05 at 14:05, Brian West wrote:> A friend and I have recently added the ability to announce the callers > position in the call queue every x seconds.. or even just inject an > anouncement every x seconds. All setup in queues.conf and can be setup > per queue. > > My next project is to add the ability to announce the callers estimated > wait time. I want some feedback to see whats the best method to calculate > that? What do you want just minutes? or minutes and seconds? Or the > option to use one or the other? > > I'm thinking (totaltime / totalcalls) - (now - qe->start) = current > estimated wait time. Which would update after each call is hungup. > > http://bugs.digium.com/bug_view_page.php?bug_id=0000214 > > > Please let me know what you would like to see!?!?! > > Thanks, > bkw > _______________________________________________ > Asterisk-Users mailing list > Asterisk-Users@lists.digium.com > http://lists.digium.com/mailman/listinfo/asterisk-users-- BTEL Consulting 850-484-4535 x2111 (Office) 504-595-3916 x2111 (Experimental) 877-552-0838 (Backup Phone)
On Fri, 2003-09-05 at 14:05, Brian West wrote:> A friend and I have recently added the ability to announce the callers > position in the call queue every x seconds.. or even just inject an > anouncement every x seconds. All setup in queues.conf and can be setup > per queue. > > My next project is to add the ability to announce the callers estimated > wait time. I want some feedback to see whats the best method to calculate > that? What do you want just minutes? or minutes and seconds? Or the > option to use one or the other? > > I'm thinking (totaltime / totalcalls) - (now - qe->start) = current > estimated wait time. Which would update after each call is hungup.I do not use queues, so accept my comments as only an opinion of how I would like to experience them if I where a person in a queue. Your wait time is not very accurate unless you have sufficiently large enough pools of people to service them to offset little abnormalities. So I would say it would be good to define an acceptable list of announcements, then round up to the first available announcement and play from there. Have to look up be something like... under 3 minutes under 5 minutes under 8 minutes under 10 minutes under 15 minutes under 20 minutes If I ever heard a time over 20 minutes I'd hang up and call back later, or stop doing business with the company. This limits down your number of prompts and lowers the expectation of wait time accuracy. -- Steven Critchfield <critch@basesys.com>
There is one thing you have to look out for. Wait time is affected only by the number of calls in front of you, not total calls, the number of agents answering, and the length of calls. I say this because if you are going to update the announcer x seconds, depending on the calculation the caller may experience, "your wait time is 5 minutes", "your wait time is 25 minutes", "your wait time is 7 minutes". That makes me want to hang up as well. On our (non Asterisk) phone system we avoid this by just announcing the average wait time once, when the caller enters the queue. I think the proper calculation should be a running average of time to answer over the last X period, with a factor taking in to account average agents logged in over that period. Something like average wait time per agent per period. Then factor that against your current queue position (calls entering behind you have no affect on your wait time) and current number of agents (more could log in to help out or drop off). What the proper period factor is I don't know. 30 seconds, 1 minute, after each hang up? Too frequently it will fluctuate wildly. Too infrequent it will show residual affects. -----Original Message----- From: Steven Critchfield [mailto:critch@basesys.com] Sent: Friday, September 05, 2003 02:25 To: asterisk-users@lists.digium.com Subject: Re: [Asterisk-Users] app_queue input needed... On Fri, 2003-09-05 at 14:05, Brian West wrote:> A friend and I have recently added the ability to announce the callers > position in the call queue every x seconds.. or even just inject an > anouncement every x seconds. All setup in queues.conf and can be setup > per queue. > > My next project is to add the ability to announce the callers estimated > wait time. I want some feedback to see whats the best method to calculate > that? What do you want just minutes? or minutes and seconds? Or the > option to use one or the other? > > I'm thinking (totaltime / totalcalls) - (now - qe->start) = current > estimated wait time. Which would update after each call is hungup.I do not use queues, so accept my comments as only an opinion of how I would like to experience them if I where a person in a queue. Your wait time is not very accurate unless you have sufficiently large enough pools of people to service them to offset little abnormalities. So I would say it would be good to define an acceptable list of announcements, then round up to the first available announcement and play from there. Have to look up be something like... under 3 minutes under 5 minutes under 8 minutes under 10 minutes under 15 minutes under 20 minutes If I ever heard a time over 20 minutes I'd hang up and call back later, or stop doing business with the company. This limits down your number of prompts and lowers the expectation of wait time accuracy. -- Steven Critchfield <critch@basesys.com> _______________________________________________ Asterisk-Users mailing list Asterisk-Users@lists.digium.com http://lists.digium.com/mailman/listinfo/asterisk-users -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20030905/5da8c1d3/attachment.htm
Brian, I just finished doing both of these mods myself. The patch is available here: http://asterisk.toad.net/app_queue.c-pos+holdtimepatch You might take a look and see if it helps you at all. I make no claims that mine is a definitive version; I just did it to suit my own needs. A couple of things you might want to watch out for with your own coding: - someone had posted a similar patch in June (from pbx.usedontmiss.com) from which I borrowed some ideas, however, this version made the mistake of announcing queue position from inside a thread-locked code section, which will interrupt music-on-hold for all callers while their positions are announced. My version does the announcements outside of the thread-lock. See end of leave_queue. - If you are caller #4 and callers #3 and #2 leave in rapid succession, you'll be trying to announce position to caller #4 twice, quickly, possibly interleaving your announcements. To solve this problem, no announcement is made if a position announcement was last made within the last 15 seconds. See the first couple of lines of say_position. My version operates along these lines: - To turn on position/holdtime announcements, just define 'announcetimeout' in queues.conf; position/holdtime announcements will be made at that interval. - The guts of the operation is in say_position and get_avg_holdtime; changes to the rest of the code have been minimized. - No position/holdtime announcement is made if the caller is the only caller in the queue when they enter the queue. - A special 'you're next' announcement is played when position == 1 - Holdtime is only announced if it is 4 minutes or greater; this is arbitrary and could be rolled into a configurable queues.conf setting. - You need to add the following files to /var/lib/asterisk/sounds: YouAreNext "You are now first in line; your call will be next" ThereAre "There are currently..." CallsWaiting "Calls Waiting" AvgHoldTime "The approximate average hold time is currently..." Minutes "Minutes" ThankYou "Thank you for your patience" It would be cool if we could get Mark to have Allison record these files for distribution with the package, once this family of features is committed to app_queue. I like the idea of rounding up to "under 5, under 10, under 15" announcements as well, as it would sound less cheesy and be better at setting realistic, but not exact, holdtime expectations. I also want to see the ability to fail out of a queue (perhaps defined in terms of X number of retry/timeout cycles) and will be working on this today some. Seems like there are several people working on this family of problems (pos/holdtime/fail out) and it might make sense for us to work together some and standardize our approach. Otherwise we're going to end up with 5 versions of app_queue. Dave ====================================================================David C. Troy [dave@toad.net] 410-384-2500 Sales ToadNet - Want to go fast? 410-544-1329 FAX 570 Ritchie Highway, Severna Park, MD 21146-2925 www.toad.net On Fri, 5 Sep 2003, Brian West wrote:> A friend and I have recently added the ability to announce the callers > position in the call queue every x seconds.. or even just inject an > anouncement every x seconds. All setup in queues.conf and can be setup > per queue. > > My next project is to add the ability to announce the callers estimated > wait time. I want some feedback to see whats the best method to calculate > that? What do you want just minutes? or minutes and seconds? Or the > option to use one or the other? > > I'm thinking (totaltime / totalcalls) - (now - qe->start) = current > estimated wait time. Which would update after each call is hungup. > > http://bugs.digium.com/bug_view_page.php?bug_id=0000214 > > > Please let me know what you would like to see!?!?! > > Thanks, > bkw > _______________________________________________ > Asterisk-Users mailing list > Asterisk-Users@lists.digium.com > http://lists.digium.com/mailman/listinfo/asterisk-users >