Newbie Question About Queue Announcements

Hi all,

I’m setting up my first queue and running into an issue. I went through some training online and it seemed obvious to me that the “Join Announcement” in my queue would only play if an agent was logged into the queue. (“Join Empty” is set to “No”.)

However that isn’t happening.

When there are no agents logged into the queue, the Join Announcement plays and then the call is immediately sent to the Final Destination. The queue only has a single dynamic member, which is logged out when this happens.

So did I totally misunderstand how the Join Announcement is supposed to function? Or have I screwed up the configuration?


Did you read the tooltip? The “Join Announcement” will always be played immediately after the caller gets into the queue.

Yes, and the same verbiage is in the queues documentation as well. But I thought the “Join Empty” option would disallow them from joining the queue if no agents were logged in. My rationale is, if the Join Announcement is played when when a caller joins the queue, and the Join Empty option is set to “No”, and there are no agents logged into this queue, then the caller would never join the queue and the Join Announcement would never play.

That was my reasoning anyway. Is that a totally wrong assumption or have I misconfigured something?


The word ‘Join’ announcement is technically incorrect, since it’s really a pre-announcement. Meaning, there’s nothing in the actual Asterisk queue config that allows you to set such an announcement. It is usually a Playback() before the Queue() application.

My suggestion is to use something like:

exten => s,n,ExecIf($["${QUEUE_MEMBER(Q100,logged)}"!="0"]?Playback(join-ann-audio))

Source: Asterisk 18 Function_QUEUE_MEMBER - Asterisk Project - Asterisk Project Wiki


That worked perfectly. If I understand this correctly, the dialplan config will be overwritten any time I make changes in the VitalPBX GUI, and I’ll have to manually re-apply this change each time. Any tips on making this more permanent?

Create a custom conf file /etc/asterisk/vitalpbx/extensions__90-custom.conf

Add the below:

exten => s,1,Noop(Entering custom pre queue announcement context in extensions__90-custom.conf)
exten => s,n,ExecIf($["${QUEUE_MEMBER(Q100,logged)}"!="0"]?Playback(join-ann-audio))
exten => s,n,Goto(${ARG1},${ARG2},${ARG3})

Create a custom context:

Description: Q100 Pre Announcement
Context: custom-pre-queue
Extension: s
Priority: 1

Destination: Queues > 100

With that being said, you will need a new dialplan bloc for every queue. If/once VitalPBX decides to properly implement the custom context module to be able to make use of all GoSub features as mentioned here: Custom Context GoSub functionalities then you would be able to do something like this:

exten => s,1,Noop(Entering custom pre queue announcement context for queue ${ARG1} in extensions__90-custom.conf)
exten => s,n,ExecIf($["${QUEUE_MEMBER(Q${ARG1},logged)}"!="0"]?Playback(${ARG2}))
exten => s,n,Return()
1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.