Call queuing behavior

Home » Asterisk Users » Call queuing behavior
Asterisk Users 2 Comments

I’m trying to implement a very simple call queue for a small, low volume helpdesk. We have 2-5 agents, and rarely does the queue get more than 1 or 2 callers deep. I’m using the ringall strategy and I want calls answered in FIFO order.

Say caller A calls the queue, and there is one member logged in. Asterisk rings the member.

Now, caller B calls. Asterisk rings the member. Now the member’s handset is showing two incoming calls.

This particular member is a bit lazy or busy, so he waits 30 seconds, and the first call times out. Asterisk says, “Nobody picked up in 30000 ms”, the caller hears the periodic announcement, and Asterisk stops ringing the member.

Now, the member is unbusy, so he answers a call. But, he’s connected to caller B, even though caller A called first. That’s not what I’d expect – I want callers to be answered in FIFO order.

I suspect there’s some interaction with the “ringinuse” and “timeout” settings here. I had thought, maybe I’ll make the timeout very long. Since I’m using ringall, I don’t have to worry about a lazy/dead member not answering and thus preventing the caller from being presented to the next member. However, if I do this, I can’t seem to make it longer than 60 seconds, and also the caller seems to only be presented with announcements when the timeout expires. I’d like to tell the caller every 30 seconds that they can press 0 to leave a voicemail, regardless of any other queue activity.

ringinuse=no might be nice, also so if there are more than three callers in the queue I don’t eat up all the call appearance buttons on my member’s handsets. However, I read that only SIP channels can report “in use”, and my members are on OOH323 channels. So, that’s out. Coincidentally, I could make my “members” be just one, which is a hunt group implemented in another PBX. I’d then want Asterisk to present one caller to this one member, and keep presenting that caller to the one member until it’s answered, or the caller has been waiting over five minutes, when he’s sent to voicemail. Only then is the next caller presented. Even though I’d think it would be easy for app_queue to know that the member is busy (after all, it’s calling them), there doesn’t seem to be any way to direct app_queue to not throw every caller in the queue at the one member.

Any ideas on how I might approach a better solution?

2 thoughts on - Call queuing behavior

  • I think I’ve found a solution. This forum thread describes a similar situation:

    http://forums.asterisk.org/viewtopic.php?f=1&t=79450

    I set autofill=no in queues.conf. This seems to make more sense when strategy=ringall. Now any member is only ever presented with one caller, and it’s always the next caller in the queue. If the timeout expires, they are presented with the same caller again. For a larger call center, this would be an unacceptable bottleneck, but for my situation it’s ideal.

  • On Fri, 10 Feb 2012 16:08:28 -0500
    Phil Frost wrote:

    […]

    Yes, I was going to suggest autofill=no, until I saw your reply. But
    I do have one thing to add, just to put it out there…

    I can’t really think of a situation where you would want autofill=yes
    with ringall. They seem to me to be entirely mutually exclusive. It
    may be a good idea for Asterisk to either document that they don’t work
    well together, or to make ringall disable autofill. Any comments?