Commit Graph

1780 Commits

Author SHA1 Message Date
Gustavo Trott
74fae992bf
fix (akka-apps): Banned users being able to rejoin (when they have customdata) (#21210) 2024-09-18 08:43:21 -04:00
Daniel Petri Rocha
6f08344a70
fix: Breakout rooms show incorrect presentation filename (#20947)
* Pass arbitrary filename

* Use shortname as presName in breakout room

* Show selected filename in the room
2024-08-22 13:24:19 -03:00
prlanzarin
cf6202c572 fix(audio): change unmute/unhold flow to work around FS unmute stutter
FS has an intermittent issue where unmuting a HELD channel sometimes
takes significantly (seconds) longer than usual.
conference <XYZ> unmute <WVU> simply gets stuck with no FS_API response,
which delays the unmute action whenever transparent listen only is
active.

Apparently, unholding the channel PRIOR TO unmuting works around the
issue - at least it could not be reproduced with the scenario at hand.
The unmute API already triggered an unhold in FS internally, which is
the reason why this was not done beforehand. The aforementioned issue is
way worse than an extra "redudant" API call, though.

Always unhold audio channels manually _before_ unmuting.
2024-08-13 13:18:22 -03:00
prlanzarin
e6e1f28036 feat(audio): channel threshold for transparent listen only activation
Transparent listen only is currently only worth it for meetings with a
number of duplex audio channels larger than a certain value (dependant
on system performance). That is due to the fact that global audio
bridges created for the mechanism also use significant CPU (roughly the
same as an unheld duplex channel), which means it's cost is usually
offset only once there are enough potential channels to be held in a
conference.

This commit adds a new optional feature that introduces some dynamicity
for the mechanism: it'll only be triggered after at least
@voiceConf.transparentListenOnlyThreshold number of muted duplex
audio channels are present in a conference.
The default is 0 (always trigger transparent listen only if the general
mechanism is activated).
2024-08-13 13:18:21 -03:00
Anton Georgiev
20d4944ce6
Merge pull request #20752 from prlanzarin/u27/fix/tlo-br-ralam-sfu2140
fix(audio): transparent listen only state inconsistencies, build(bbb-webrtc-sfu): v2.14.0
2024-08-01 10:13:41 -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
prlanzarin
437c684423 fix(audio): stuck unmute due to borked callerId(Num)
FreeSWITCH incorrectly generates callerNum headers in its ESL events
when specific, special characters are in place. e.g.:
w_etc_0-bbbID-User;Semi (notice the semicolon) will be generated by
FS as w_etc_0-bbbID-User (everything after the semicolon is ignored).
This breaks callerId comparision for session matching in a few places -
one of the is the unmute/unhold toggle control.

Compare callerNum as prefixes instead of exact strings to match those
scenarios.
This is a temporary fix; we should review callerNum generation in the
future (use Caller-Id-Name in FSESL), as well as stop relying on it
for session matching (use UUIDs and/or client session numbers instead).
Both of these are more involved changes, though.
2024-07-23 09:37:19 -03:00
prlanzarin
1c57db94bb fix(audio): always send unhold
Alway send the unhold command since it doesn't change flip the state
(contrary to the uuid_hold toggle command).

It's not idempotent, though - so always update the internal hold state
to prevent state mismatches preventing channels from being unheld.
2024-07-23 09:23:05 -03:00
prlanzarin
d3e2d3965c fix(audio): do not send FSESL hold cmd if already on hold
This is an edge case with the uuid_hold command being used through
FSESL or fsapi where holding only works via the uuid_hold <toggle>
subcommand, which may cause the channel to be the opposite of what
we want.

Do not execute if the command is asking for the channel to be HELD
and the channel is already HELD.
2024-07-23 09:22:40 -03:00
prlanzarin
025942de5b fix(audio): only enforce hold on mute state mismatch if !muted
There's a routine that's supposed to enforce the channel hold state if
mute and hold states are mismatched. This should only happen in case the
user is unmuted and the channel is held to avoid leaving an user without
inbound or outbound audio by accident. The routine currently checks for
the oppositve scenario as well (muted=true,hold=false), which should not
be enforced because of special scenarios (e.g.: audio-only breakout room
transfers, which have their transparent LO mechanism disabled).

Only enforce hold on muted state mismatch IF muted == false.
2024-07-23 09:22:23 -03:00
prlanzarin
623c90b19f fix(audio): add callerNum to transparent listen only RPCs
There are some scenarios where transparent listen only toggle RPCs are
directed to multiple different sessions in the SFU, which might cause a
hold-unhold loop because they're all anchored to the userId.

Append the callerNum to transparent listen only toggle RPCs so that they
are directed to the appropriate audio sessions in all cases.
2024-07-23 09:20:57 -03:00
Daniel Petri Rocha
8b6cdc6edf Initial implementation to let slides be passed in the backend 2024-07-18 16:37:02 +00: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
063b77a0fc defaultWebcamBackgroundURL 2024-07-09 12:01:03 +00:00
Ramón Souza
c662a08d12 fix permission for download presentation 2024-07-05 11:35:31 -03: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
Anton Georgiev
2d66db96a1
Merge pull request #19762 from antobinary/recording-cc-disable
!fix(captions): disable recording event TranscriptUpdatedEvent
2024-03-07 16:29:48 -05:00
Anton Georgiev
b418f115fe !fix(captions): disable recording event TranscriptUpdatedEvent 2024-03-07 15:43:17 -05: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
1f8ca310f1
feat(config): add checkSumAlgorithmForBreakouts in akka-apps (port) (#19754)
* feat(config): add checkSumAlgorithmForBreakouts in akka-apps (port)
2024-03-07 13:19:34 -05:00
Ramón Souza
abea38e718
Merge pull request #18762 from Scroody/I-18444
refactor: Changes to layout toast's workflow
2024-02-28 16:16:35 -03:00
André
f255f4b69e Later alterations 2024-02-26 15:52:24 -03:00
Anton Georgiev
78ece5f05c
feat(config): Add option to disabled "Download session data" on Learning Dashboard (backport) (#19641)
* Add option disabledFeatures=learningDashboardDownloadSessionData

* docs: document learningDashboardDownloadSessionData

---------

Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2024-02-20 09:21:57 -05:00
Anton Georgiev
96a583b3e5
Record raiseHand, away and Reaction events (#19642)
Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2024-02-20 09:20:56 -05:00
Anton Georgiev
51519e9c7a
fix: Reduce logs in SendWhiteboardAnnotationPubMsgHdlr.scala (#19634) 2024-02-16 15:47:13 -05:00
Lucas Fialho Zawacki
388858000c feat(gladia): Print Gladia errors in the console 2024-02-08 14:50:24 -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
Anton Georgiev
d71202c195
Merge pull request #19088 from gustavotrott/LDashboard-convert-reaction-to-emojiStatus
fix (learning-dashboard): Learning Dashboard not showing Reactions
2023-11-08 09:11:26 -05:00
Gustavo Trott
8b4b226603 Improve comment to prevent flood 2023-11-08 10:30:51 -03:00
Gustavo Trott
686903a529 In LearningDashboard, convert Reactions to EmojiStatus 2023-11-08 10:21:28 -03:00
prlanzarin
c6ccb19fdc fix: reversed userColor and avatar args in dial-in user creation
userColor and avatar arguments of RegisteredUsers.create were incorrectly placed
2023-11-07 18:04:03 -03:00
prlanzarin
2f12992c20 fix: specify a unique mock authToken for dial-in users
Every dial in user has its RegistedUser authToken set to an empty string,
Since authToken is the RegUser's HashMap indexing key, this causes a
bunch of inconsistencies; eg.: endpoint ejection will stop working if
more than one dial-in user joined a meeting concurrently because the
later dial-in devices overwrite the earlier ones in the RegUsers map.

The authToken is now mocked as the user's intId (which, for dial-in, is
the voice user ID) so that some sort of uniqueness is guaranteed within
the voice conf scope.
2023-11-07 18:02:10 -03:00
Anton Georgiev
5cd379910f
Merge pull request #18891 from paultrudel/breakout-rooms-end-fix
fix: End breakout rooms when ENDED_DUE_TO_NO_MODERATOR
2023-10-06 13:09:20 -04:00
Anton Georgiev
791074819d
Merge pull request #18685 from gustavotrott/fix-None-user-on-changeEmoji27
fix (akka-apps): None.get error on change user Emoji
2023-10-06 11:30:05 -04:00
Paul Trudel
1dac6867d9 End breakout rooms when no moderator 2023-10-03 18:21:34 +00:00
imdt
7bce5cf45a Changes to layout toast's workflow 2023-09-12 10:42:55 -03:00
Gustavo Trott
c8668bcfe2 fix: None.get error on change user Emoji 2023-09-01 09:23:01 -03:00
GuiLeme
0aacb12cc8 [issue-18408-back-end] - added disabled download of converted presentation 2023-08-25 11:37:32 -03:00
GuiLeme
bff90337b8 Merge remote-tracking branch 'upstream/v2.7.x-release' into issue-18408-back-end 2023-08-24 17:38:15 -03:00
GuiLeme
cf472511fc [issue-18449] - changes in review 2023-08-18 10:57:50 -03:00
GuiLeme
bfa58baf49 [plugin-architecture-implementation] - change error message 2023-08-16 15:36:14 -03:00
GuiLeme
7380a08e97 [issue-18408-back-end] - implemented back-end portion for disable download of original presentation 2023-08-16 15:30:34 -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
Gustavo Trott
456950a800
Merge pull request #18459 from GuiLeme/issue-18446
fix: download of original presentation
2023-08-10 10:37:11 -03:00
Gustavo Trott
26787aa5c8 Fix: setting away=true in akka-apps when user raised his hand 2023-08-08 13:34:30 -03:00
prlanzarin
a73bdf5d18 refactor: simplify ActorContext import in VoiceApp 2023-08-08 09:36:29 -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