amazon-chime-sdk-js icon indicating copy to clipboard operation
amazon-chime-sdk-js copied to clipboard

Mute Remote Attendee

Open Mattwhooo opened this issue 5 years ago • 20 comments

What are you trying to do?

I'm trying to mute a remote attendee. This implies some sort of host for the meeting, but controlling who has access to this functionality can be implemented in the client.

How can the documentation be improved to help your use case?

I can't find any documentation on this. The feature may not exist, in which case this is a feature request

What documentation have you looked at so far?

I've read through the readme, getting started, and looked at the api docs for AudioVideoFacade.

Mattwhooo avatar Apr 03 '20 15:04 Mattwhooo

I have the same request. Also unable to find anything related to muting someone else.

peternijssen avatar Apr 08 '20 09:04 peternijssen

Chime SDK does not support muting remote attendees. The current version (1.2.1) supports the following use cases around audio:

  • Mute and unmute yourself.
  • Disable the unmute. If you want to prevent users from unmuting themselves (for example during a presentation), use these methods rather than keeping track of your own can-unmute state.
  • Subscribe to volume changes of a specific attendee e.g. You can use this to build a real-time volume indicator UI.
  • Detect the most active speaker.

simmkyu avatar Apr 10 '20 18:04 simmkyu

Thanks for the confirmation @simmkyu

Obviously there are ways to work around this and trigger other users to mute (I'm currently using websockets to send a message outside of Chime that forces the user to mute themselves), but that is not ideal. A selection of Admin/Host actions would be a nice addition to the SDK and this feature would certainly be a part of that. In the same vein the following might also be relevant:

  • Mute all attendees
  • Turn off video for attendee
  • Turn off video for all attendees
  • Remove attendee (though i guess this can be done with a delete_attendee call to the api)

Mattwhooo avatar Apr 10 '20 19:04 Mattwhooo

Obviously there are ways to work around this and trigger other users to mute (I'm currently using websockets to send a message outside of Chime that forces the user to mute themselves), but that is not ideal.

In the Classroom Demo (mute here), we have also implemented the mute-all option using a WebSocket API in API Gateway, but I agree it would be better if Chime SDK supports it.

We will update change logs and docs when we support remote control features. Thank you for the suggestion.

simmkyu avatar Apr 10 '20 20:04 simmkyu

Thanks again. Can I also suggest a definitive list of demo apps built with the Chime SDK somewhere. The classroom demo is new to me

Mattwhooo avatar Apr 10 '20 21:04 Mattwhooo

A good point - we have a PR (#258) for reorganizing README files. In the root README, we will list all demo apps built with Chime SDK, including two demos in separate repos.

  • Recording demo - Record the meeting's audio, video and screen share and stream output to a specified Amazon S3 bucket.
  • Virtual classroom - An online classroom built with Electron and React
    • AWS blog: https://aws.amazon.com/blogs/business-productivity/building-a-virtual-classroom-application-using-the-amazon-chime-sdk/

simmkyu avatar Apr 10 '20 21:04 simmkyu

This hasn't been spelled out explicitly but we are looking a server SDK api to mute audio and/or video for an attendee. Note this is a borderline security issue for us. There is no good way to prevent someone from effectively zoombombing an open meeting. E.g. A open town hall meeting anybody can join. While we can add a layer in the client to give the host control to mute attendees (like sending an event to all clients to mute), a malicious user could create a custom client and feed it the joinToken, etc and be immune to any mute request from our layer. A host could kick the attendee (via DeleteAttendee), but since it's an open meeting the malicious user can easily rejoin.

mooflu avatar Apr 30 '20 20:04 mooflu

I have to agree this is a borderline security problem. The Chime SDK is pretty useless for us if it allows a malicious user to share screen or open the mic anytime.

rubenfonseca avatar May 12 '20 09:05 rubenfonseca

You can build this functionality using Chime SDK Data messages via web sockets to broadcast a 'mute Y command' in a meeting and the party in question can execute a local mute.

vidya-mohan avatar Jun 16 '20 22:06 vidya-mohan

@vidya-mohan it can be done but that doesn't mean it can be done in a secure way, that is the issue basically. To me it would make sense to add a role to an attendee like host/viewer where for a host it would be possible to control viewers and viewers can be restricted in actions (like unmuting).

Looking at https://aws.github.io/amazon-chime-sdk-js/modules/apioverview.html#9-send-and-receive-data-messages-optional it seems there is a concept of "moderator attendee" but I can't find anything on how to work with this in the SDK.

slootjes avatar Jun 17 '20 07:06 slootjes

@simmkyu Is it possible that in the future there'll be a way, via the server side, to restrict an attendee from unmuting themselves? As currently, on the client side of a web application integrating the chime sdk, it's possible that someone can utilize the browser's dev. console to allow unmuting one self.

john-raymon avatar Feb 04 '21 01:02 john-raymon

We don't have a plan yet to support remote controls using the server-side APIs.

You can ensure that the "muted" attendees join a meeting with the null audio input device as described here. Even if the "muted" attendees unmute themselves in the browser console, other attendees cannot hear audio.

await meetingSession.audioVideo.chooseAudioInputDevice(null);
meetingSession.audioVideo.realtimeMuteLocalAudio();
await meetingSession.audioVideo.start();

But again, they can find a way to choose an audio input device in the browser console and unmute themselves.

simmkyu avatar Feb 04 '21 19:02 simmkyu

So in other words; Chime will not be able to offer a reliable/secure implementation which makes it not suitable for many use cases :(

slootjes avatar Feb 04 '21 20:02 slootjes

@slootjes thank you for your interest in the SDK. The team would be interested in the specific use cases you are trying to enable with the feature - please share via https://pages.awscloud.com/GLOBAL-aware-GC-Amazon-Chime-SDK-2020-reg.html. We will keep the issue open until we can support it in the platform.

At present, remote mute can be enabled with an integration with data messages - much like shown https://github.com/aws-samples/amazon-chime-sdk-classroom-demo/blob/9dfc7647b409cb2e0ad10c9db030afd4382e9a99/app/hooks/useFocusMode.tsx#L25

vidya-mohan avatar Feb 06 '21 00:02 vidya-mohan

@Mattwhooo @peternijssen @slootjes @john-raymon @rubenfonseca We just launched the ability to control capabilities for each attendee on the backend via createAttendee API. Could you check it out?

ltrung avatar Jun 03 '22 17:06 ltrung

@ltrung That's awesome and great to hear! Great job, excited to check it out tonight. 🎉👏🏼

john-raymon avatar Jun 03 '22 18:06 john-raymon

We went with another vendor for our use case but I will for sure give this a try soon, thanks for implementing this and tagging me.

slootjes avatar Jun 03 '22 19:06 slootjes

I am also trying to implement remote mute, so that an attendee can mute another attendee remotely. Is there any new feature in the SDK to accomplish this? Or the only way to do it is by using data messages, sending a message to the remote attendee and on message handling do a local mute?

iencotech avatar Jul 26 '23 14:07 iencotech

I am also trying to implement remote mute, so that an attendee can mute another attendee remotely. Is there any new feature in the SDK to accomplish this? Or the only way to do it is by using data messages, sending a message to the remote attendee and on message handling do a local mute?

u got Any solution for that?

hdsensation avatar Aug 29 '23 05:08 hdsensation

@iencotech @hdsensation It looks like you can update a given attendee using https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_UpdateAttendeeCapabilities.html

burnhamrobertp avatar Dec 14 '23 20:12 burnhamrobertp