Commit Graph

2229 Commits

Author SHA1 Message Date
prlanzarin
f49c63fa09 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-08-15 00:43:30 +00:00
prlanzarin
5b5653fead 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-08-15 00:43:29 +00:00
prlanzarin
c6ca6d5c45 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-08-15 00:43:29 +00:00
prlanzarin
325887e325 feat(audio): rework audio join without listen only
This is a rework of the audio join procedure whithout the explict listen
only separation in mind. It's supposed to be used in conjunction with
the transparent listen only feature so that the distinction between
modes is seamless with minimal server-side impact. An abridged list of
changes:
  - Let the user pick no input device when joining microphone while
    allowing them to set an input device on the fly later on
  - Give the user the option to join audio with no input device whenever
    we fail to obtain input devices, with the option to try re-enabling
    them on the fly later on
  - Add the option to open the audio settings modal (echo test et al)
    via the in-call device selection chevron
  - Rework the SFU audio bridge and its services to support
    adding/removing tracks on the fly without renegotiation
  - Rework the SFU audio bridge and its services to support a new peer
    role called "passive-sendrecv". That role is used by dupled peers
    that have no active input source on start, but might have one later
    on.
  - Remove stale PermissionsOverlay component from the audio modal
  - Rework how permission errors are detected using the Permissions API
  - Rework the local echo test so that it uses a separate media tag
    rather than the remote
  - Add new, separate dialplans that mute/hold FreeSWITCH channels on
    hold based on UA strings. This is orchestrated server-side via
    webrtc-sfu and akka-apps. The basic difference here is that channels
    now join in their desired state rather than waiting for client side
    observers to sync the state up. It also mitigates transparent listen
    only performance edge cases on multiple audio channels joining at
    the same time.

The old, decoupled listen only mode is still present in code while we
validate this new approach. To test this, transparentListenOnly
must be enabled and listen only mode must be disable on audio join so
that the user skips straight through microphone join.
2024-08-15 00:43:28 +00:00
prlanzarin
cf293fe7fd 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-15 00:43:27 +00:00
germanocaumo
4514649c4f feat: adds option to split audio recording in multiple files by length
FreeSWITCH sometimes drop frames in very long recordings generating
a raw file smaller than the total time recorded. The other issue is the
occasional drifiting.

This adds option to split audio recording in multiple files by
duration to avoid this problem in setups that are prone to it. Disabled
by default.
2024-08-13 14:31:54 +00:00
Tainan Felipe
4d6f4b3ded
Refactor: Make bundle using webpack (#20811)
* Refactor: Make bundle using webpack

* Fix: restore after install codes and a few settings

* Fix: build script folder permission

* Refactor: Remove support to async import on audio bridges

* Upgrade npm using nvm

* Avoid questions on npm ci execution

* Let npm ci install dev dependencies (as we need the build tools here)

* Fix: enconding

* Fix: old lock files

* Remove: bbb-config dependency to bbb-html5 service, bbb-html5 isn't a service anymore

* Fix: TS errors

* Fix: eslint

* Fix: chat styles

* npm install with "lockfileVersion": 3 (newer npm)

* build: allow nodejs 22

* node 22; drop meteor from CI and bbb-conf

* TEMP: use bbb-install without mongo but with node 22 and newer image

* build: relax nodejs condition to not trip 22.6

* build: ensure dir /usr/share/bigbluebutton/nginx exists

* init sites-available/bbb; drop disable-transparent-

* nginx complaining of missing file and ;

* TMP: print status of services

* WIP: tweak nginx location to debug

* Fix: webcam widgets alignments

* akka-apps -- update location of settings.yml

* build: add locales path for nginx

* docs and config changes for removal of meteor

* Fix: build encoding and locales enpoint folder path

* build: set wss url for media

* Add: Enable minimizer and modify to Terser

* Fix: TS errors

---------

Co-authored-by: Tiago Jacobs <tiago.jacobs@gmail.com>
Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-08-09 13:58:44 -04:00
Arthur B. Grossi
d2132484b4
feat(plugins): server command send chat message (#20781)
* feat(plugins): add chat server command and chat message type `plugin`

This commit adds the required code for the plugins SDK's chat server
command `CHAT_SEND_MESSAGE`, which allows plugins to send chat
messages. Messages sent by plugins are identified by the message
type `plugin` and belong to the user (senderID) of the client that
sent it. Plugin messages are not displayed by the client itself because
these messages are meant to be custom-rendered by plugins, typically by
the plugin that sent them.

* feat(plugins): add message metadata

Plugin name and plugin custom metadata are stored in message's metadata,
so plugins need it to identify messages when applying custom render.

* feat(chat): removes specific code for plugin messages

Removes specific akka messages, handlers and routes for plugin messages
and adds metadata parameter in `GroupChatMsgFromUser`.

* feat(chat): adds option parameter to mutation

Adds optional parameter `metadata` to the already existing mutation
`chatSendMessage` and use this mutation for plugin chat server command.

* feat(chat): rendering of plugin messages

This commit implements the correct rendering of plugin messages, which
is:
- Plugin messages with metadata attribute `custom` set to true are not
  rendered by the client, and are meant to be custom-rendered by
  plugins.
- Plugin messages with metadata attribute `custom` set to false are
  rendered by the client as being sent by the user that triggered it.

* Update sdk version to v0.0.56

* update sdk version to v0.0.57
2024-08-07 15:59:30 -04:00
Anton Georgiev
20f1ce2441
Merge pull request #20860 from ramonlsouza/port-breakout-changes
Port breakouts enhancements from 2.7.10 to 3.0
2024-08-06 16:46:34 -04:00
Daniel Petri Rocha
254b1fab6d Initial implementation to let slides be passed in the backend 2024-08-05 09:30:53 -03:00
Gustavo Trott
2073b07c5c Remove unused ValidateConnAuthTokenSysMsg 2024-08-02 15:51:57 -03:00
Gustavo Trott
8623443704 Remove unused GetUsersMeetingReqMsg 2024-08-02 15:08:42 -03:00
Gustavo Trott
180ed6890b Remove unused ValidateAuthToken flow and messages 2024-08-02 15:02:54 -03:00
Gustavo Trott
19fb38fb53
Merge branch 'v3.0.x-release' into common-msg-remove-unused-msgs 2024-07-31 14:33:51 -03:00
Gustavo Trott
c4201e0edd
Merge pull request #20793 from gustavotrott/akka-timer-refactor
refactor (akka-apps): Routine to reset finished Timers
2024-07-31 14:31:15 -03:00
Gustavo Trott
ef8b7eb301 Merge remote-tracking branch 'upstream/v3.0.x-release' into common-msg-remove-unused-msgs 2024-07-31 11:19:11 -03:00
Gustavo Trott
407b85a3d4 Remove unused SYNC CLIENT messages 2024-07-31 11:17:22 -03:00
Gustavo Trott
fbf148dcd2 Remove unused SyncGetMeetingInfoRespMsg 2024-07-31 10:47:34 -03:00
Gustavo Trott
aa2bc871df Remove ununsed MeetingTimeRemainingUpdateEvtMsg and BreakoutRoomsTimeRemainingUpdateEvtMsg 2024-07-31 10:42:56 -03:00
Gustavo Trott
ce3811939c Remove unused UpdateBreakoutUsersEvtMsg 2024-07-31 10:19:09 -03:00
Gustavo Trott
94e64bb0a0 Remove unused UpdateRecordingTimerEvtMsg 2024-07-31 09:33:31 -03:00
Gustavo Trott
75cffd840c Remove unused DisconnectClientSysMsg msg 2024-07-31 09:18:34 -03:00
Gustavo Trott
df6b86cd72 Remove unused EndAndKickAllSysMsg 2024-07-30 11:36:53 -03:00
Gustavo Trott
aba8f3eff2 Remove unused DisconnectClientSysMsg msg 2024-07-30 10:09:50 -03:00
Gustavo Trott
fa02d92766 Routine to purge old meetings from graphql database 2024-07-29 11:09:21 -03:00
Gustavo Trott
efb7bcf887 Routine to reset finished Timer 2024-07-29 10:29:30 -03:00
Gustavo Trott
b6753e40d6 fix: gql permission wrong for auto assigned presenter 2024-07-23 13:19:08 -03:00
Gustavo Trott
c6b9ab35ae
refactor: Remove old userStatus Emoji (#20717)
* Remove old userStatus Emoji

* tweak docs

* fix bkroom errors
2024-07-18 08:58:38 -04:00
Gustavo Trott
1683f4c3fe
refactor: Rename all customParameters references to userMetadata or userdata (#20692)
* Rename all customParameters references to userMetadata

* fix linter error

* Update docs/docs/development/api.md

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>

* Update bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-07-16 13:40:49 -04:00
Ramón Souza
c1c2910b24
Merge pull request #20659 from JoVictorNunes/issue-20651
feat(whiteboard): add option to `disabledFeatures` for infinite whiteboard
2024-07-15 15:27:56 -03:00
Gustavo Trott
7a03136d02
Merge pull request #20686 from gustavotrott/gql-server-auth-session
refactor (graphql): Big refactor on Graphql authentication
2024-07-10 20:17:23 -03:00
Gustavo Trott
25bc81ea1b remove comments 2024-07-10 18:53:14 -03:00
Gustavo Trott
d7b3fc5b89 akka-apps: set scheduler to clean up Graphql info after 1 hour 2024-07-10 18:47:44 -03:00
Gustavo Trott
2c2d595212 Big refactor on Graphql authentication 2024-07-10 18:30:01 -03:00
Ramón Souza
e8a796379d
Merge pull request #20633 from JoVictorNunes/issue-20611
fix: inconsistencies in presentation upload toast
2024-07-10 17:38:08 -03:00
João Victor
e26b408d42 feat(whiteboard): add option in disabledFeatures for infinite whiteboard 2024-07-08 10:18:26 -03:00
Anton Georgiev
abeb12146b
Merge pull request #20480 from KDSBrowne/v30-enable-whiteboard-infinite-canvas
feat(whiteboard): Add infinite whiteboard for presentation slides
2024-07-05 17:54:55 -04:00
KDSBrowne
c341ea44f8 update canvas names to whiteboard 2024-07-05 20:13:30 +00:00
Guilherme Pereira Leme
ccb2e74bc1
feat(plugin): Added sendGenericDataForLearningAnalyticsDashboard for plugins (#20628)
* [data-channel-analytics-options]  - Added data-channel analytics and record options and added a parameter options for the useDataChannel function

* Update bigbluebutton-html5/public/locales/en.json

Co-authored-by: Gustavo Trott <gustavo@trott.com.br>

* [data-channel-analytics-options] -created new sendDataAnalytics for plugin and change presentation toolbar button

* [data-channel-analytics-options]  - QUICK FIX

* [update-data-channel-function] - fix action metadata

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options]  - changes in review

* [captionLocale] - Changes in review

* [data-channel-analytics-options]  - update SDK

* [data-channel-analytics-options]  Changes in review

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options] - changes in review

* Refactor learning dashboard json structure with genericData

* fix typo

* [data-channel-analytics-options] - changes according to new json structure

* changes in review

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2024-07-05 16:49:45 -03:00
Ramón Souza
977a3512ec
fix permission for download presentation (#20643) 2024-07-05 13:01:24 -04:00
Tainan Felipe
0e7fe3c688
Change: improve client connection status (#20630) 2024-07-04 17:26:09 -03:00
Gustavo Trott
134b207f94
refactor: Remove Hasura database-updates and move them to Gql-Actions (#20634) 2024-07-04 17:00:06 -03:00
João Victor
52cda64bf1 fix: inconsistencies in presentation upload toast 2024-07-04 13:41:33 -03:00
KDSBrowne
f024995f98 Restore default slide position after disabling infinite wb 2024-07-03 17:15:39 +00:00
KDSBrowne
687ee36d29 add functionality to enable infinite whiteboard 2024-07-03 17:14:47 +00:00
Gustavo Trott
f5c9650f24
refactor: Add TRACE logs for graphql-actions (#20614) 2024-06-30 15:34:22 -03:00
Gustavo Trott
ed38da065c
fix break error (#20612) 2024-06-28 17:35:21 -03:00
Gustavo Trott
f5e8917eb0
Remove unnecessary imports (#20598) 2024-06-28 16:50:30 -03:00
Paul Trudel
6dd1eabe92
feat(events): Store user data in Redis for use in event.xml (#20593) 2024-06-28 09:28:03 -04:00
Gustavo Trott
be39d7b24b
refactor (akka-apps): Make all inserts into the database thought batches instead of individual inserts (#20594) 2024-06-27 18:53:46 -03:00
Gustavo Trott
3402edcb5b
Introduce gql user_voice_activity_stream (#20557) 2024-06-20 14:33:11 -03:00
Gustavo Trott
d67346366c clear mouse cursors on disable multi-whiteboard 2024-06-19 10:40:09 -03:00
Guilherme Leme
1d9b28133e [update-data-channel-function] - change sender to creator naming in data-channel 2024-06-18 17:46:17 -03:00
Guilherme Leme
8a04c8a4aa Merge remote-tracking branch 'upstream/v3.0.x-release' into update-data-channel-function 2024-06-18 13:42:34 -03:00
Gustavo Trott
a27cd6cdb2
Merge pull request #20518 from GuiLeme/plugin-server-commands
feat(plugins): new server-command for typed-captions plugin
2024-06-18 13:33:16 -03:00
Guilherme Leme
57389c351e [plugin-server-commands] - changes in review 2024-06-18 12:01:46 -03:00
Guilherme Leme
8464fca7da [update-data-channel-function] - changes permissioning name 2024-06-18 11:24:49 -03:00
Guilherme Leme
41eb2c34e3 [update-data-channel-function] - merge upstream 2024-06-18 10:25:02 -03:00
Guilherme Leme
8db3a6be80 [plugin-server-commands] - added server-command caption save and add a captionLocale 2024-06-18 09:20:35 -03:00
Dennis Benz
c8e2d8b239 Resolve conflicts 2024-06-17 10:47:41 -03:00
Gustavo Trott
6984763da7
Merge pull request #20483 from GuiLeme/fix-caption-locale-subscription
fix(html5): caption subscription error
2024-06-14 16:53:22 -03:00
Gustavo Trott
656e29e7eb
Refactor middleware to get user info from akka-apps api (#20491) 2024-06-14 13:43:05 -03:00
Guilherme Leme
284753e6b9 [fix-caption-locale-subscription] - fix captionLocale subscription error 2024-06-13 15:47:54 -03:00
Gustavo Trott
ad2d12b19b
Merge pull request #20475 from gustavotrott/gql-improve-breakout-performance
refactor: BreakoutRoom storage and handlers
2024-06-12 18:09:16 -03:00
Gustavo Trott
e86aeac114 refactor breakoutroom storage 2024-06-12 16:21:31 -03:00
Lucas
9bf3f54183
feat: Initial BBB 3.0 Gladia transcriptions implementation (#20295)
* feat(html5): initial implementation of Gladia transcriptions to BBB 3.0

* fix(transcription): Add missing locales and fix invalid cc menu key

* fix(bbb-transcription-controller): Bump transcription controller to fix some bugs

* fix: adjust yq syntax for setting fs esl password in transctiption-controller

* fix(transcription): Use newer useSettings format from transcription options

* fix(captions): Correctly use captions settings

---------

Co-authored-by: João Victor <joaovictornunes973@gmail.com>
Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
Co-authored-by: Ramón Souza <contato@ramonsouza.com>
2024-06-12 12:06:07 -04:00
Guilherme Leme
59d08a2655 [update-data-channel-function] - remove debbuging logs 2024-06-10 17:45:14 -03:00
Guilherme Leme
322a04b845 resolve conflicts 2024-06-10 17:41:06 -03:00
Guilherme Leme
ba74a41fd2 [update-data-channel-function] - (WIP) Initial work 2024-06-10 11:32:48 -03:00
Gustavo Trott
42305a1dfb
Merge pull request #20449 from gustavotrott/improve-userReaction-performance
refactor: Simplifying ReactionEmoji Storage and Queries
2024-06-10 10:41:36 -03:00
Gustavo Trott
ab542a458e make reactionEmoji part of user table (optimizing performance) 2024-06-10 09:48:38 -03:00
Anton Georgiev
558fca5f19
Merge pull request #20401 from KDSBrowne/bbb-20306
fix(whiteboard): Properly handle line shape handles in akka
2024-06-07 16:30:26 -04:00
Gustavo Trott
81d30480bd
feature: Introduces API /sendChatMessage endpoint (#20323)
* feature: Introduces API /sendChatMessage endpoint

* only allow GET requests for sendChatMessage

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-06-06 15:49:52 -04:00
João Victor Nunes
5d3178f15d
refactor(guest-wait): turn guest wait page into a React component (#20344)
* refactor(guest-wait): turn guest wait page into a React component

* Fix rendering when the meeting is ended

* refactor(guest-wait): Backend portion for migration of `guest-wait` to Graphql

* Add message timeout

* Remove static guest wait page

---------

Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2024-06-05 17:41:23 -03:00
KDSBrowne
7f3996c816 clean line shape handles in akka (similar to arrow bindings) 2024-06-04 15:44:16 +00:00
Guilherme Pereira Leme
bbf43f1e55
feat(html5): Added captionLocale property and related logic (#20272)
* [captionLocale] - added captionLocale

* [captionLocale] - changes in review

* [captionLocale] - Added new mutation captionAddLocale and removed captionSetOwner

* [captionLocale] - add action validation

* [captionLocale] - Changes in review

* [captionLocale] - fix update of graphql server

* [captionLocale] - merge conflicts
2024-06-03 16:14:32 -04:00
Gustavo Trott
4e2e3254e7
refactor (akka-apps): Remove unused UserJoinMeetingAfterReconnectReqMsg (#20370)
* Replace tabId by clientSessionUUID

* refactor gql-middleware to perform validations and send errors properly

* small tweaks

* fix linter errors

* refresh session variables on invalidate user connection

* set clientIsMobile on join

* Remove unused UserJoinMeetingAfterReconnectReqMsg
2024-05-30 13:18:48 -03:00
Gustavo Trott
fd3071c28a
Refactor (gql-middleware): Introduces clientSessionUUID and validations (error handling) (#20353) 2024-05-29 17:43:17 -03:00
Gustavo Trott
b4e2f319e8 Consider more actions as user lastActivity 2024-05-23 17:11:16 -03:00
Guilherme Leme
778375f81f [change-data-channel-return] - changes in review 2024-05-23 12:25:49 -03:00
Guilherme Leme
7b81148972 [change-data-channel-return] - Changed data-channel payloadJson to be a json instead of a string 2024-05-22 17:34:43 -03:00
Gustavo Trott
e30beae12d remove cooments 2024-05-20 17:16:33 -03:00
Gustavo Trott
78f8c73652 fix timer keeping accumulated 2024-05-20 17:12:29 -03:00
Ramón Souza
7f7615ce88 fix default value for timer track 2024-05-16 14:59:47 -03:00
Gustavo Trott
9e93f57958
Merge pull request #20274 from gustavotrott/init-timer
refactor (akks-apps): Init Timer and Remove legacy messages/handlers/fields
2024-05-15 13:25:17 -03:00
Anton Georgiev
e1a4d5a184
Merge pull request #20252 from gustavotrott/shift-welcomemsg-handler
refactor: Re-implement sanitize for Welcome msgs and Guest Lobby msgs
2024-05-15 10:51:15 -04:00
Gustavo Trott
1ada232f7e remove unnecessary field for Timer 2024-05-15 11:37:26 -03:00
Gustavo Trott
6a7dba6c22
Merge pull request #20229 from gustavotrott/pres-notifications-akka-apps
refactor (akka-apps): Show progress while importing whiteboard and sharedNotes from breakoutRoom
2024-05-15 10:47:07 -03:00
Gustavo Trott
3a8bd4dfa4 Remove unnecessary msgs and handlers 2024-05-15 10:44:25 -03:00
Gustavo Trott
cde052c7d8 init Timer on akka-apps 2024-05-15 10:43:34 -03:00
Gustavo Trott
384033ce75 set correct default values for Layout 2024-05-15 09:25:47 -03:00
Gustavo Trott
429065b245 convet html tags to html entities for guest lobby messages 2024-05-14 11:25:10 -03:00
Gustavo Trott
65d22e3b93 rename modOnlyMessage to welcomeMsgForModerators and delete welcomeMsgTemplate 2024-05-14 09:40:51 -03:00
Gustavo Trott
b1073b2514 show progress while importing whiteboard and sharedNotes from breakoutRom 2024-05-13 08:31:45 -03:00
Anton Georgiev
a441d70226
Merge branch 'v3.0.x-release' into docs-layout 2024-05-09 22:13:38 -04:00
Anton Georgiev
628c3bb32b
Merge pull request #20132 from antobinary/html5-pack-30
refactor/build: drop html5InstanceId and simplify bbb-html5 frontend/backend
2024-05-08 10:04:37 -04:00
Gustavo Trott
d74db21037 Set postgres host as 127.0.0.1 instead of localhost 2024-05-07 10:16:14 -03:00
Anton Georgiev
a2984bb740 Merge remote-tracking branch 'bbb/v3.0.x-release' into html5-pack-30 2024-05-01 12:57:59 -04:00
Anton Georgiev
58cdb75c45 refactor: remove html5InstanceId 2024-05-01 12:53:11 -04:00
Gustavo Trott
f5f2be36c4 Remove some message handlers 2024-04-25 18:50:28 -03:00