Как дать возможность отключить всех участников в amazon chime?

Мне нужно дать возможность одному участнику отключить звук для всех остальных участников с помощью amazon chime. Я использую amazon-chime-sdk-js.

1 ответ

Currently, there is no for mute/unmute Remote Attendee or mute all/unmute all option available in Amazon Chime SDK But yes we can use real-time messaging to achive this

Добавлять realtimeSubscribeToReceiveDataMessage на {channel-name} поэтому, когда пользователь присоединяется к собранию, он получит сообщение по этому каналу.

Как указано в приведенном ниже фрагменте кода

      const realtimeSubscribeToReceiveGeneralDataMessage = async () => {
chime.audioVideo &&
  (await chime.audioVideo.realtimeSubscribeToReceiveDataMessage(MessageTopic.GeneralDataMessage, async (data) => {
    const receivedData = (data && data.json()) || {};
    const { type, attendeeId } = receivedData || {};
    if (attendeeId !== chime.attendeeId && type === 'MUTEALL') {
      chime.audioVideo && (await chime.audioVideo.realtimeMuteLocalAudio());
    } else if (attendeeId !== chime.attendeeId && type === 'STOPALLVIDEO') {
      chime.audioVideo && (await chime.audioVideo.stopLocalVideoTile());
    }
  }));

Где chime.attendeeId ваш идентификатор участника и GeneralDataMessage это имя канала И вам нужно добавить кнопку, чтобы отключить все и остановить все видео

                     <Button
                type="button"
                onClick={() => {
                  chime.sendMessage(MessageTopic.GeneralDataMessage, {
                    type: 'MUTEALL',
                  });
                }}
              >
                {'Mute All'}
              </Button>

              <Button
                type="button"
                onClick={() => {
                  chime.sendMessage(MessageTopic.GeneralDataMessage, {
                    type: 'STOPALLVIDEO',
                  });
                }}
              >
                {'Stop All Video'}
              </Button>

Вот способ отправки сообщений всем удаленным участникам через канал

      sendMessage = (data) => {
new AsyncScheduler().start(() => {
  const payload = {
    ...data,
    attendeeId: this.attendeeId || '',
    name: this.rosterName || '',
  };
  this.audioVideo &&
    this.audioVideo.realtimeSendDataMessage(MessageTopic.GeneralDataMessage, payload, ChimeSdkWrapper.DATA_MESSAGE_LIFETIME_MS);

  this.publishMessageUpdate(
    new DataMessage(
      Date.now(),
      MessageTopic.GeneralDataMessage,
      new TextEncoder().encode(payload),
      this.meetingSession.configuration.credentials.attendeeId || '',
      this.meetingSession.configuration.credentials.externalUserId || '',
    ),
  );
});

Вот вопрос для справки: нажмите здесь

Другие вопросы по тегам