Leave When Empty - Normal Behavior?

Hey All, we are currently running Asterisk 1.8.3 along with FreePBX 2.8.1.3.

I am unsure if this is normal behavior or actually something not working correctly.

We have a number of queues with agents logging in and out through an API. They log into the queues when they start their shift and log out completely when they leave for the day.

The queues are set as Join Empty: NO & Leave When Empty: YES.

IE: If there are four agents logged in and all four of them are set on PAUSE, then any new caller trying to join that queue will be routed to whatever fail-over destination is set for that queue.

If this is normal behavior I would like to find a way around this, so that any caller can join the queue regardless of an agents PAUSE status, however, I would still like any callers to be failed over if all the agents happen to logout completely.

Thanks!

Depends whether or not you are using a supported version, or even the no longer supported 1.6.2. Version 1.6.2 introduced individual controls on each condition for leaving. All versions before that do have the problem that everyone on pause will cause an exit, and also that the possible leave empty conditions don’t exactly correspond with the join empty conditions…

Only 1.8.x versions are now supported, and I think they all have the new leave when empty flexibility.

As you have a 1.8 version, you should have control of the individual conditions.

[quote=“david55”]Depends whether or not you are using a supported version, or even the no longer supported 1.6.2. Version 1.6.2 introduced individual controls on each condition for leaving. All versions before that do have the problem that everyone on pause will cause an exit, and also that the possible leave empty conditions don’t exactly correspond with the join empty conditions…

Only 1.8.x versions are now supported, and I think they all have the new leave when empty flexibility.

As you have a 1.8 version, you should have control of the individual conditions.[/quote]

Sorry if I misunderstood, but I know we have 3 different options available within FreePBX, YES / NO / STRICT.

None of these options would work in our situation, as YES/STRICT will treat member on PAUSE as unavailable, therefore if all agents are on a call/on PAUSE, it will send all callers to the fail-over destination.

After some more searching, we found this: voip-info.org/wiki/view/Aste … ueues.conf

After implementing this, it caused Asterisk to give some crazy behavior, unregistered all non-active SIP registrations and prevented any outgoing calls.

[2011-04-29 12:11:54] NOTICE[2255]: chan_sip.c:23511 handle_request_register: Registration from ‘sip:2143@REMOVED’ failed for ‘192.168.202.79:5060’ - No matching peer found

We switched back and reloaded asterisk and everything went back to normal.

Regardless, the LOOSE option is exactly what we are looking for, except that it pretty much boinked the system when we tried to implement it.

Opened a bug report here: issues.asterisk.org/view.php?id=19205

Anyone else have a similar experience when trying to use the LOOSE feature.

You are being limited by your GUI. If you configure Asterisk itself, you have full control. The three modes you mention are legacy options that select particular combinations of the more general cases.

Yes, we modified the GUI to represent the LOOSE option, also implemented it inside Asterisk, but it resulted in very unwanted behavior.

LOOSE - is just one more option.

; paused: a member is not considered available if he is paused ; penalty: a member is not considered available if his penalty is less than QUEUE_MAX_PENALTY ; inuse: a member is not considered available if he is currently on a call ; ringing: a member is not considered available if his phone is currently ringing ; unavailable: This applies mainly to Agent channels. If the agent is a member of the queue ; but has not logged in, then do not consider the member to be available ; invalid: Do not consider a member to be available if he has an "invalid" device state. ; This generally is caused by an error condition in the member's channel driver. ; unknown: Do not consider a member to be available if we are unable to determine the member's ; current device state. ; wrapup: A member is not considered available if he is currently in his wrapuptime after ; taking a call.

; yes - (empty) for joinempty; penalty,paused,invalid for leavewhenempty ; no - penalty,paused,invalid for joinempty; (empty) for leavewhenempty ; strict - penalty,paused,invalid,unavailable ; loose - penalty,invalid