Summary:ASTERISK-20987: non-admin users, who join muted conference are not being muted
Reporter:hristo (hristo)Labels:
Date Opened:2013-01-25 10:30:35.000-0600Date Closed:2016-02-05 11:51:51.000-0600
Versions:11.2.0 Frequency of
is related toASTERISK-18204 Mute All Participants
Environment:debian squeeze 64-bitAttachments:
Description:If an admin user sets global conference mute via 'admin_toggle_mute_participants' it only affects users, who are currently in the conference. Any new (or reconnecting) non-admin users, who join the conference after that are not being muted.

I would certainly expect that once a conference is muted for all non-admin users, then it must remain muted, even when for example a user drops out of the conference and reconnects or new (late) users connect after it has started.

This would have been trivial to resolve in the dialplan if the conference muted/unmuted state was somehow exposed via a variable or function (like CONFERENCE_INFO or similar), but without this I would consider it a bug.
Comments:By: Rusty Newton (rnewton) 2013-01-28 13:49:44.680-0600

I agree that most would expect this feature to behave in the way you describe. It's also my experience that a "mute everyone but the admin" feature behaves as you desire on other non-Asterisk conference systems. However, I do not know the author's original intent here.

I've linked issue ASTERISK-18204 where the original author submitted the feature for inclusion.

I'll ping Kevin Reeves to see if he would like to modify the feature with the improvement you request.  Also, you might ping dev list to see who has interest in taking this on.

By: hristo (hristo) 2013-01-29 10:30:57.120-0600

On a second thought, it now seems more reasonable to simply have the muted state exposed to the dialplan (like for example the 'locked' state via CONFERENCE_INFO) and if connecting to a muted conference to set the user profile accordingly. This will keep the current confbridge logic as is and at the same time will provide users with a choice whether to mute newly connecting users or not.

The only downside that I see to this approach is a race condition that will be introduced in case a conference is unmuted between the time the check is made and the time the user is actually connected to it. This can easily be several seconds until all announcement are played and and then the user will end up muted in a conference that is already unmuted, but I still think that this will be much better, than the current behavior.

I am not a programmer, but I had a quick look at the code in app_confbridge.c and it sure seems like a simple copy/paste of the part that reports the "locked" status and then simply changing "locked" to "muted" should do the trick.

By: Rusty Newton (rnewton) 2013-01-29 13:42:54.499-0600

Looks like some good ideas.

I can't imagine a use case where you would only want to mute the current participants, and not any joining participants. However having the option seems like a good thing as long as it doesn't make things overly complex.

I'm not a developer either. You probably want to grab the interest of a developer to work on this. I recommend you share those ideas on the dev list, or in #asterisk-dev.

By: Richard Mudgett (rmudgett) 2016-01-25 14:06:02.278-0600

Have you considered using the {{confbridge.conf}} {{startmuted=yes}} option?  You can also set the option using the {{CONFBRIDGE(user,startmuted)}} dialplan function.

By: Richard Mudgett (rmudgett) 2016-01-27 17:58:50.667-0600

Patches available on the public gerrit.