Kapitel 21

Tips, bedste praksis & skjulte funktioner

Dette kapitel samler mindre kendte API-funktioner, sikkerhedsanbefalinger og gennemprøvede best practices til integration med BigBlueButton API'et. Mange af disse detaljer er kun delvist dokumenteret i de officielle kilder og er blevet verificeret gennem kildekodeanalyse og community-research.

Skjult værdi for gæstepolitik

Ud over de tre velkendte værdier for parameteren guestPolicy findes der en fjerde værdi, som sjældent dokumenteres, men er meget nyttig i scenarier med blandede målgrupper.

Værdi Adfærd
ALWAYS_ACCEPT Alle brugere deltager straks uden godkendelse.
ALWAYS_DENY Kun moderatorer kan deltage i mødet.
ASK_MODERATOR Gæster venter i lobbyen, indtil en moderator godkender dem.
ALWAYS_ACCEPT_AUTH Autentificerede brugere deltager direkte. Kun ikke-autentificerede gæster kræver godkendelse fra en moderator.

Politikken ALWAYS_ACCEPT_AUTH er ideel, når registrerede brugere fra et LMS skal kunne deltage uden at vente, mens eksterne gæster stadig skal godkendes af en moderator.

Server-side-callback med meetingEndedURL

Parameteren meetingEndedURL giver et server-side callback, som adskiller sig fra den ofte brugte meta_endCallbackUrl på vigtige måder:

  • Den eksponeres ikke for klienten og gemmes ikke i optagelser.
  • Den bruges internt af systemer som Scalelite.
  • Den er velegnet til server-side integrationer, hvor callback-URL'en skal forblive skjult.
create?meetingID=replace-with-meeting-id&meetingEndedURL=https://api-guide.bbbserver.com/callbacks/internal&checksum=replace-with-checksum

Parametre til indfangning fra grupperum

Ud over standardparametrene for breakout-rum understøtter BigBlueButton yderligere muligheder til at indfange indhold fra breakout-rum tilbage til hovedmødet.

Parameter Type Beskrivelse
breakoutRoomsCaptureSlides Boolean Importér slides fra grupperum til hovedmødet.
breakoutRoomsCaptureNotes Boolean Importér delte noter fra grupperum til hovedmødet.
breakoutRoomsCaptureNotesFilename String Brugerdefineret filnavn til den indfangede notefil.

Parametre for annotation og branding

Parameteren lockSettingsHideViewersAnnotation skjuler whiteboard-annoteringer lavet af andre seere, så hver deltager kun ser sine egne annoteringer og præsentatørens.

create?meetingID=replace-with-meeting-id&lockSettingsHideViewersAnnotation=true&checksum=replace-with-checksum

Parameteren copyright angiver en brugerdefineret copyright-tekst i BBB-klienten, hvilket kan være nyttigt til white-label-deployments:

create?meetingID=replace-with-meeting-id&copyright=Example+Organization&checksum=replace-with-checksum

Parameteren logo virker kun, hvis displayBrandingArea=true er angivet i serverkonfigurationsfilen /etc/bigbluebutton/bbb-web.properties.

Bedste praksis for sikkerhed

Inkludér altid createTime i join-URL'er

Inkludér altid værdien createTime fra svaret på create i din join-URL. Dette forhindrer, at gamle join-links genbruges, når et nyt møde oprettes med samme møde-ID.

join?meetingID=replace-with-meeting-id&fullName=Max&role=VIEWER&createTime=1715261728123&checksum=replace-with-checksum

Checksum-beregning for POST-requests

En almindelig fejl: checksummen beregnes altid kun ud fra URL-query-strengen, selv for POST-requests. Request body (XML, JSON) medtages aldrig i checksum-beregningen.

Checksum = SHA256("create" + "meetingID=replace-with-meeting-id&name=Demo" + "replace-with-secret")

POST-body'en (f.eks. præsentations-XML) sendes separat, men hashes ikke.

En tidligere sikkerhedssårbarhed (CVE GHSA-4m48-49h7-f3c4) gjorde det muligt for angribere med en gyldig join-URL at injicere yderligere parametre i signerede join-links. Valider og sanér altid alle parametre på serversiden, før du genererer signerede API-URL'er.

BBB 3.0 Brudændringer

BigBlueButton 3.0 introducerer flere brudændringer, som påvirker API-integrationer. Gennemgå følgende tabel nøje ved opgradering:

Ændring Detaljer
passwordrole Kaldet join bruger nu role=MODERATOR eller role=VIEWER i stedet for adgangskoder.
POST fjernet for /join Kun GET-requests accepteres for join-kald.
Content-Type påkrævet Skal angives for alle POST-requests.
Accepterede Content-Types for /create application/x-www-form-urlencoded, multipart/form-data, application/xml, text/xml
Fjernede parametre breakoutRoomsEnabled, learningDashboardEnabled, virtualBackgroundsDisabled er blevet erstattet af parameteren disabledFeatures.

Forældede endpoints

Følgende endpoints er forældede og bør ikke bruges i nye integrationer:

Endepunkt Status Erstatning
getDefaultConfigXML Forældet siden BBB 2.4, fjernet i BBB 3.0. clientSettingsOverride
setConfigXML Forældet siden BBB 2.4, fjernet i BBB 3.0. clientSettingsOverride

Fletteadfærd for plugin-manifest

Plugin-manifester fra tre kilder flettes sammen (overskrives ikke), når et møde oprettes:

  1. Serverkonfiguration
  2. Parameteren pluginManifests i create-kaldet
  3. Parameteren pluginManifestsFetchUrl

Dubletter fjernes automatisk. Dette muliggør fleksibel plugin-konfiguration på tværs af flere niveauer.

Vigtige serverkonfigurationsindstillinger

Følgende indstillinger fra bigbluebutton.properties kan ikke styres via API'et, men påvirker direkte API-adfærden:

Egenskab Standard Beskrivelse
supportedChecksumAlgorithms sha1,sha256,sha384,sha512 Understøttede checksum-algoritmer til API-godkendelse.
maxUserConcurrentAccesses 3 Maksimalt antal samtidige sessioner pr. bruger (efter eksternt ID).
allowOverrideClientSettingsOnCreateCall false Aktiverer parameteren clientSettingsOverride i body'en til create.
allowRevealOfBBBVersion false Viser BBB-versionen i API-rodsvaret.
allowFetchAllRecordings true Tillader getRecordings uden et filter for møde-ID.
maxFileSizeUpload 30000000 Maksimal filstørrelse for upload af præsentationer (30 MB).
defaultHttpSessionTimeout 14400 Timeout for HTTP-session i sekunder (4 timer).
sessionsCleanupDelayInMinutes 60 Sessioner forbliver aktive i så mange minutter, efter at et møde er afsluttet.
fetchUrlSupportedProtocols https Tilladte protokoller til hentning af URL'er (f.eks. download af præsentationer).

Konfiguration af mediebro

BigBlueButton 3.0 introducerer LiveKit som en alternativ mediebro. Følgende create-parametre styrer, hvilken bro der bruges:

Parameter Mulige værdier Standard
cameraBridge bbb-webrtc-sfu, livekit bbb-webrtc-sfu
screenShareBridge bbb-webrtc-sfu, livekit bbb-webrtc-sfu
audioBridge bbb-webrtc-sfu, livekit, freeswitch freeswitch

Timeout for præsentationskonvertering

Fra og med BBB 3.0 begrænser serverparameteren maxPageConversionTime (standard: 60 sekunder) konverteringstiden pr. slide. Komplekse præsentationer med mange sider eller tung grafik kan ramme denne timeout, hvilket kan få slides til at mislykkes i konverteringen.

Hvis dine præsentationer ofte rammer timeout under konvertering, bør du overveje at opdele dem i mindre filer eller forenkle komplekse slides før upload.

Ofte stillede spørgsmål

Det er en fjerde, mindre kendt værdi for parameteren guestPolicy. Autentificerede brugere deltager med det samme, mens ikke-autentificerede gæster skal vente på moderatorgodkendelse. Dette er nyttigt, når LMS-brugere skal kunne gå direkte ind, men eksterne besøgende skal screenes.

Parameteren meetingEndedURL er et server-side-callback, som aldrig eksponeres for klienter eller gemmes i optagelser. Den er designet til interne integrationer, hvor callback-URL'en skal forblive privat, såsom i Scalelite-deployments.

Nej. Checksummen beregnes altid kun ud fra URL-query-strengen. POST-body'en (såsom præsentations-XML) sendes separat og er ikke en del af hash'en. Dette er en almindelig fejlkilde for udviklere, der er nye i API'et.

I BigBlueButton 3.0 er parameteren password for join-kaldet blevet erstattet af parameteren role. Du sender nu role=MODERATOR eller role=VIEWER i stedet for deltager- eller moderatoradgangskoden.

Inkludering af værdien createTime fra create-svaret sikrer, at gamle join-links ikke kan genbruges til et nyt møde oprettet med samme meeting ID. Det er en vigtig sikkerhedsmekanisme, som forhindrer uautoriseret adgang gennem forældede URL'er.

Begge endpoints blev forældet i BBB 2.4 og er blevet fjernet i BBB 3.0. De er blevet erstattet af parameteren clientSettingsOverride i create-kaldet, som giver en mere fleksibel måde at tilpasse klientadfærd pr. møde.