Commit Graph

2771 Commits

Author SHA1 Message Date
Anton Georgiev
02bd94a400
Merge pull request #21008 from prlanzarin/u27/feat/ice-restart
feat: add experimental support for ICE restart
2024-09-13 10:24:35 -04:00
Arthur B. Grossi
c7b03ee13d
fix(users-context): phantom user (#20253)
* fix(users-context): add missing logs

* fix(user-persistent-data): collection publication selector for viewers

Fixes the collection's selector when publishing it to viewers.

* fix(users-context): correctly add user persistent data

Changes the logic of the add_user_persistent_data action in users
context, so that the user information already in the context is merged
with the new one. Also, do not flip the logged out status of users added
by user_persisted_data anymore.
2024-09-13 08:49:44 -04:00
prlanzarin
3c4e3de286 feat: add WebRTC stats information to client logs
We should be able to capture  WebRTC stats in some form for post-processing
so that it helps on debugging support requests (and other use cases, e.g.:
improving field trial analysis on test servers).
Although much of WebRTC stats information can be gathered via server side
components, none have logs as structured for proper post-processing as
the client logs - so we're going the client route for now.

Capture WebRTC stats information for audio and screen sharing via:
  - Audio logCodes: new `stats` extraInfo field
    - `audio_joined`
    - `audio_failure`
    - `sfuaudio_error_retry_through_relay`
    - `sfuaudio_error_try_to_reconnect`
  - Screen share logCodes: new `stats` extraInfo field
    - screenshare_presenter_start_success
    - screenshare_viewer_start_success
    - screenshare_broker_failure

Additionally, add an option to periodically capture WebRTC stats information
for all relevant peers. This is disabled by default since the log can be
verbose (and, consequentially, network taxing when using external
logging targets). It can be enabled via `public.stats.logMediaStats` in
settings.yml. The default interval is 30s. The periodic log format is as
follows:
  - logCode: `mediaStats`
  - extraInfo.stats: an aggregated stats object of all peers (equivalent
    to the `Copy` function in the Connection Status modal).
2024-08-27 14:00:26 -03:00
prlanzarin
d2dde8a9b1 feat: add experimental support for ICE restart
We currently use full renegotiation for audio, video, and screen sharing
reconnections, which involves re-creating transports and signaling channels
from scratch. While effective in some scenarios, this approach is slow and,
especially with outbound cameras and screen sharing, prone to failures.

To counter that, WebRTC provides a mechanism to restart ICE without needing
to re-create the peer connection. This allows us to avoid full renegotiation
and bypass some server-side signaling limitations. Implementing ICE restart
should make outbound camera/screen sharing reconnections more reliable and
faster.

This commit implements the ICE restart procedure for all WebRTC components,
based on bbb-webrtc-sfu >= v2.15.0-beta.0, which added support for ICE restart
requests. This feature is off by default. To enable it, adjust the following
flags:

- `/etc/bigbluebutton/bbb-webrtc-sfu/production.yml`: `allowIceRestart: true`
- `/etc/bigbluebutton/bbb-html5.yml`: `public.kurento.restartIce`
  * Refer to the inline documentation; this can be enabled on the client side
    per media type.
  * Note: The default max retries for audio is lower than for cameras/screen
    sharing (1 vs 3). This is because the full renegotiation process for audio
    is more reliable, so ICE restart is attempted first, followed by full
    renegotiation if necessary. This approach is less suitable for cameras/
    screen sharing, where longer retry periods for ICE restart make sense
    since full renegotation there is... iffy.
2024-08-23 09:59:51 -03:00
Gustavo Trott
c441b8531a
fix: Dial-in -- add missing webcamBackground prop for dial-in users (#20799) 2024-07-30 11:27:40 -04:00
Anton Georgiev
5387fef101
Merge pull request #20703 from danielpetri1/webcam-background-url
feat: Accept custom webcamBackgroundURL
2024-07-23 15:55:56 -04:00
Daniel Petri Rocha
fa0ad14c35
feat(bbb-html5): Ban specific users from the public chat (#20585)
* Initial user lock changes

* Show lock icon
2024-07-17 12:56:33 -04:00
Daniel Petri Rocha
a71527a825 Persist webcamBackground in the client 2024-07-09 12:13:50 +00:00
Paul Trudel
b697667364
feat(events): Add user custom data to events.xml (#20566)
* Send custom user data to akka apps

* Add user custom data to registered user

* Add user custom data to user join event

* Store user custom data in Redis

* Rename userCustomData to customParameters

* Rename xml tag to userdata
2024-06-26 11:39:39 -04:00
Gustavo Trott
37d6aa0140 introduce-allowPromoteGuestToModerator27 2024-06-04 11:36:46 -03:00
Tainan Felipe
da60b246d0 Fix: user reaction not showing right emoji 2024-04-26 16:52:28 -03:00
Anton Georgiev
4e8a708c95
Merge pull request #19608 from lfzawacki/gladia-2.7
fix: Several Gladia transcription fixes
2024-03-07 15:32:54 -05:00
Anton Georgiev
1f97a6f253
fix: Drop heavy log from sendBulkAnnotations.js (#19633) 2024-02-16 15:46:18 -05:00
Lucas Fialho Zawacki
388858000c feat(gladia): Print Gladia errors in the console 2024-02-08 14:50:24 -03:00
Ramón Souza
8495777d5b feat: join param for default animations setting value 2024-01-15 11:59:40 -03:00
Lucas
125d70699b
feat: Initial implementation of Gladia transcriptions to BBB 2.7 (#19091)
* Demo changes

* Revert "feat(captions): no longer writes in the pad"

This reverts commit a76de8c458.

* feat(transcriptoin): Add config options for the transcription backend

* feat(transcription): Add autodetect option to cc chevron

* feat(transcription): Move transcription options into settings modal

* feat(transcription): Set transcription options via userdata

* fix(transcription): Correct userdata for settings transcription params

* feat(transcriptions): options to auto enable caption button

* feat(transcriptions): Option to hide old CC pad funcionality

* fix(transcription): Fix PR comments

* fix(transcription): Refactor updateTranscript to prevent null user and make it more readable

* feat(transcription): bbb_transcription_provider can be set via userdata

* fix(transcription): Use base10 for parseInt

* fix(transcriptions): Fix CC language divider when using webspeech

* fix(transcriptions): Use a default pad in the settings instead of hardcoding 'en'

We still need to use a language pad such as 'en', but in the future we can better
separate these systems.

* fix(transcription): Add a special permission for automatic transcription updates to the pad and restore old per user updates permission

* feature(transcriptions): Include transcriptions submenu and locales

* chore: bump bbb-transcription-controller to v0.2.0

* fix(transcription): Add missing menu files

* fix(transcription): Fix transcription provider options in settings.yml

* fix: setting password for bbb-transcription-controller

* build: add gladia-proxy.log for transcription-controller

* fix(transcriptions): Remove transcript splitting and floor logic from akka apps

* fix(captions): Show long utterances as split captions, show multiple speaker captions

* chore: bump bbb-transcription-controller to 0.2.1

---------

Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
2023-11-30 10:10:36 -05:00
Ramón Souza
3de1cfed29 leave meeting button 2023-11-07 09:54:17 -03:00
GuiLeme
b09e01518f Merge remote-tracking branch 'upstream/v2.7.x-release' into issue-18449 2023-08-22 11:02:40 -03:00
GuiLeme
cf472511fc [issue-18449] - changes in review 2023-08-18 10:57:50 -03:00
GuiLeme
3761fc333b [plugin-architecture-implementation] - fix for disable downloadable 2023-08-16 11:18:51 -03:00
GuiLeme
08f1b5832d [issue-18449] - changes in review 2023-08-15 10:30:17 -03:00
GuiLeme
a1746da6fe [issue-18449] - added possibility of download original presentation with original format 2023-08-10 12:18:59 -03:00
Ramón Souza
866c40f84f Merge remote-tracking branch 'upstream/v2.6.x-release' into 2627-aug10 2023-08-10 11:49:01 -03:00
prlanzarin
b8a1b881c5 fix(audio): clear connection timeout on autoplay failures
If the autoplay block is triggered in listen only, the connection timer
keeps ticking even if the user correctly accepts the audio play prompt.
That causes an audio re-connect once the timeout expires.

Clear the connection timer if the audio bridge starts with
NotAllowedError as a soft error. For connection purposes, the audio join
procedure worked. The autoplay thing is at the UI/UX level, not WebRTC.
2023-08-09 11:09:27 -03:00
Gustavo Trott
eaf86b37a8 Fix: Unable to choose same reaction twice in a row 2023-08-08 11:32:52 -03:00
prlanzarin
8feb934169 feat(audio): add experimental transparent listen only mode
This is an initial, experimental implementation of the feature proposed in
https://github.com/bigbluebutton/bigbluebutton/issues/14021.

The intention is to phase out the explicit listen only mode with two
overarching goals:
  - Reduce UX friction and increase familiarity: the existence of a separate
  listen only mode is a source of confusion for the majority of users
  Reduce average server-side CPU usage while also making it possible for
  having full audio-only meetings.

The proof-of-concept works based on the assumption that a "many
concurrent active talkers" scenario is both rare and not useful. With
that in mind, this including two server-side triggers:
 - On microphone inactivity (currently mute action that is sustained for
   4 seconds, configurable): FreeSWITCH channels are held (which translates
   to much lower CPU usage, virtually 0%). Receiving channels are switched,
   server side, to a listening mode (SFU, mediasoup).
   * This required an extension to mediasoup two allow re-assigning producers
     to already established consumers. No re-negotiation is done.
 - On microphone activity (currently unmute action, immediate):
   FreeSWITCH channels are unheld, listening mode is deactivated and the
   mute state is updated accordingly (in this order).

This is *off by default*. It needs to be enabled in two places:
  - `/etc/bigbluebutton/bbb-webrtc-sfu/production.yml` ->
    `transparentListenOnly: true`
  - End users:
    * Server wide: `/etc/bigbluebutton/bbb-html5.yml` ->
      `public.media.transparentListenOnly: true`
    * Per user: `userdata-bbb_transparent_listen_only=true`
2023-08-07 19:43:18 -03:00
Daniel Molkentin
fa5aa182fe fix: do not escape text twice
The refactoring in 838accf015 incorrectly
replaced the wrong parseMessage function in addBulkGroupChatMsgs.js

This bug is only triggered when the option public.chat.bufferChatInsertsMs != 0.
2023-08-02 18:48:22 +02:00
prlanzarin
a8e4e876d0 fix(audio): add connection timers for SFU audio
SFU based audio is missing connection timers, which means the join
procedure can go on indefinitely in a couple of scenarios.

Refactor the connection timers added for re-connections in the SFU audio
bridge and make them valid for the first try as well.

Make 1010 errors (connection timeout) retriable when retryThroughRelay
is enabled.
2023-07-31 11:39:52 -03:00
prlanzarin
7c3ac51e38 feat(audio): add retryThroughRelay flag for 1007 errors
1007 errors are still a large fraction of our overall audio join error
rate. This usually indicates some sort of firewall block or UDP issues
carrier networks. I can't figure out why some scenarios won't trickle
down to relay candidates though - I'm leaning to scenarios where STUN
packets with USE-CANDIDATE are being mangled/lost along the way or
something else that borks the (already fragile) conn checks for ICE-lite
implementations.

Add a new feature called retryThroughRelay which triggers a retry with
iceTransportPolicy=relay whenever audio fails to join with a 1007 error.
The goal is to force relay usage to try and bypass 1007s scenarios that
still happen.

Disabled by default.
2023-07-31 11:39:45 -03:00
Anton Georgiev
7be38fd876 Merge remote-tracking branch 'bbb/v2.6.x-release' into merge-july26 2023-07-26 22:27:55 -04:00
Tainan Felipe
838accf015 Improve text sanitizing of lobby messages 2023-07-26 16:12:39 -03:00
Gustavo Trott
c74a7ff90e Add required props to dial-in users 2023-07-25 15:23:57 -03:00
Gustavo Trott
762ae78814 Implements func to Clear all users reaction 2023-07-21 11:10:10 -03:00
Ramón Souza
26bd960ba2 fix unlock shared notes 2023-07-04 09:50:53 -03:00
Gustavo Trott
c8867fadb5
Merge pull request #18197 from Scroody/I-18127
Allow dynamic control on moderators invitation for breakouts
2023-06-29 13:39:26 -03:00
Ramón Souza
af670883c1 remove unused code 2023-06-22 15:35:40 -03:00
Ramón Souza
ae1e6079e1 rename includeMods -> sendInviteToModerators 2023-06-22 13:55:23 -03:00
Gustavo Trott
6ba4aad05a
Merge branch 'v2.7.x-release' into user-raiseHand-away-flags 2023-06-22 08:27:20 -03:00
Anton Georgiev
43b96b47c4
Merge pull request #17724 from lfzawacki/v2.7.x-release
feat: Implement automatic closed captions using an open transcription server
2023-06-22 05:25:14 -04:00
Ramón Souza
96a2484876 additional client-side changes 2023-06-21 16:49:38 -03:00
Anton Georgiev
a962a44c74 Merge branch 'v2.6.x-release' of github.com:bigbluebutton/bigbluebutton into june14merge 2023-06-14 10:07:54 -04:00
Anton Georgiev
c8b0437df3
Merge pull request #18133 from GuiLeme/port-timer-with-events-suggestions
feat(timer): Port timer (Mconf) with events suggestions
2023-06-08 15:56:10 -04:00
GuiLeme
2cf46e4d05 [port-timer-with-events-suggestions] - made review suggestions 2023-06-08 16:37:32 -03:00
Gustavo Trott
8263dd17ca Introduces flags user.away and user.raiseHand 2023-06-07 22:10:07 -03:00
Ramón Souza
22b02ead28 Merge remote-tracking branch 'upstream/v2.7.x-release' into 16120 2023-06-06 08:45:29 -03:00
danielpetri1
ffeb8c3acb Allow multiple MIME types per extension 2023-06-06 10:08:14 +00:00
Arthurk12
d6095a2da2 fix(timer): misleading function name 2023-06-02 09:12:44 -03:00
Paulo Lanzarin
0e8dc2a0cc
Merge pull request #17847 from prlanzarin/u27/feat/fullaudio-bridge-userdata
feat(audio): add userdata-bbb_fullaudio_bridge
2023-05-31 17:07:57 -03:00
prlanzarin
80414a9cc4 feat(audio): add userdata-bbb_fullaudio_bridge
Allows controlling which audio bridge should be used, per user
2023-05-31 17:07:10 -03:00
prlanzarin
f4a761cea4 Merge remote-tracking branch 'origin/v2.7.x-release' into u27/fix/screenshare-audio-output 2023-05-31 11:06:49 -03:00