Queue Join Announcement Only If A Member Is Logged In

Hello,

I’m having a little trouble setting up my queue to only play the join announcement if there is at least one member logged in. In my case all the members are dynamic.

Currently if no one is logged in the join announcement is played then the voice mail announcement immediately after which is a little strange.

eg:
“Please hold to speak to a member of staff” -> “no one is available at the moment, please leave a message.”

This question was also asked back in 2011 with no answer:
http://www.freepbx.org/forum/freepbx/general-help/queue-join-announcement

Does anyone know if this is possible?

I’m thinking I will need to have a custom function.

A bash command to find out the number of dynamic members is:

asterisk -rx “queue show 1” | grep dynamic | wc -l

Set “Join Empty” to “no” which will immediately put them to the failover destination.

Hi James, thanks for that. Unfortunately even with join empty set to “no” the join announcement is played before the fail over destination.

I have also tried join empty set to strict with the same result.

I have managed to get it to work. !

In the file “/etc/asterisk/extensions_additional.conf” I moved the line where the join announcement it played after the fail over destination.

I my case I changed:

exten => 1,n,ExecIf($["${QJOINMSG}"!=""]?Playback(${QJOINMSG}, ))


exten => 1,n(gotodest),GotoIf($["${QDEST}"=""]?app-announcement-6,s,1:${CUT(QDEST,^,1)},${CUT(QDEST,^,2)},${CUT(QDEST,^,3)})

to

exten => 1,n(gotodest),GotoIf($["${QDEST}"=""]?app-announcement-6,s,1:${CUT(QDEST,^,1)},${CUT(QDEST,^,2)},${CUT(QDEST,^,3)}) ... ... exten => 1,n,ExecIf($["${QJOINMSG}"!=""]?Playback(${QJOINMSG}, ))

My only problem now is that this file is dynamic and as overwritten every time anything is changed in freepbx web gui.

Does you know how the make this change persistent?

Copy the entire context from extensions_additional.conf to extensions_freepbx_override.conf make your changes there then reload, now they will persist between reloads.