Consejos, buenas prácticas y funciones ocultas
Este capítulo recopila funciones menos conocidas de la API, recomendaciones de seguridad y mejores prácticas comprobadas para integrarse con la API de BigBlueButton. Muchos de estos detalles solo están documentados parcialmente en las fuentes oficiales y han sido verificados mediante análisis del código fuente e investigación de la comunidad.
Valor oculto de la política de invitados
Además de los tres valores bien conocidos para el parámetro guestPolicy, existe un cuarto valor que rara vez se documenta pero que es muy útil para escenarios con audiencias mixtas.
| Valor | Comportamiento |
|---|---|
ALWAYS_ACCEPT | Todos los usuarios se unen inmediatamente sin aprobación. |
ALWAYS_DENY | Solo los moderadores pueden unirse a la reunión. |
ASK_MODERATOR | Los invitados esperan en la sala de espera hasta que un moderador los apruebe. |
ALWAYS_ACCEPT_AUTH | Los usuarios autenticados se unen directamente. Solo los invitados no autenticados requieren aprobación del moderador. |
La política ALWAYS_ACCEPT_AUTH es ideal cuando los usuarios registrados de un LMS deben unirse sin esperar, mientras que los invitados externos todavía necesitan ser aprobados por un moderador.
Callback del lado del servidor con meetingEndedURL
El parámetro meetingEndedURL proporciona un callback del lado del servidor que difiere del meta_endCallbackUrl usado habitualmente en aspectos importantes:
- No se expone al cliente ni se almacena en las grabaciones.
- Se utiliza internamente por sistemas como
Scalelite. - Es muy adecuado para integraciones del lado del servidor en las que la URL de callback debe permanecer oculta.
create?meetingID=replace-with-meeting-id&meetingEndedURL=https://api-guide.bbbserver.com/callbacks/internal&checksum=replace-with-checksum Parámetros de captura de salas de grupos
Más allá de los parámetros estándar de las salas de grupos, BigBlueButton admite opciones adicionales para recuperar contenido de las salas de grupos hacia la reunión principal.
| Parámetro | Tipo | Descripción |
|---|---|---|
breakoutRoomsCaptureSlides | Boolean | Importar diapositivas desde las salas de grupos a la reunión principal. |
breakoutRoomsCaptureNotes | Boolean | Importar notas compartidas desde las salas de grupos a la reunión principal. |
breakoutRoomsCaptureNotesFilename | String | Nombre de archivo personalizado para el archivo de notas capturado. |
Parámetros de anotación y marca
El parámetro lockSettingsHideViewersAnnotation oculta las anotaciones de la pizarra realizadas por otros espectadores, de modo que cada participante solo vea sus propias anotaciones y las del presentador.
create?meetingID=replace-with-meeting-id&lockSettingsHideViewersAnnotation=true&checksum=replace-with-checksum El parámetro copyright establece un texto de copyright personalizado en el cliente BBB, lo que puede ser útil para implementaciones white-label:
create?meetingID=replace-with-meeting-id©right=Example+Organization&checksum=replace-with-checksum El parámetro logo solo funciona si displayBrandingArea=true está establecido en el archivo de configuración del servidor /etc/bigbluebutton/bbb-web.properties.
Mejores prácticas de seguridad
Incluye siempre createTime en las URL de unión
Incluya siempre el valor createTime de la respuesta de create en su URL de join. Esto evita que se reutilicen enlaces antiguos de join cuando se crea una nueva reunión con el mismo ID de reunión.
join?meetingID=replace-with-meeting-id&fullName=Max&role=VIEWER&createTime=1715261728123&checksum=replace-with-checksum Cálculo del checksum para solicitudes POST
Un error común: el checksum siempre se calcula solo a partir de la cadena de consulta de la URL, incluso para solicitudes POST. El cuerpo de la solicitud (XML, JSON) nunca se incluye en el cálculo del checksum.
Checksum = SHA256("create" + "meetingID=replace-with-meeting-id&name=Demo" + "replace-with-secret") El cuerpo POST (p. ej., presentación XML) se envía por separado, pero no se incluye en el hash.
Una vulnerabilidad de seguridad pasada (CVE GHSA-4m48-49h7-f3c4) permitió a atacantes con una URL de unión válida inyectar parámetros adicionales en enlaces de unión firmados. Valida y sanitiza siempre todos los parámetros del lado del servidor antes de generar URL API firmadas.
Cambios incompatibles de BBB 3.0
BigBlueButton 3.0 introduce varios cambios incompatibles que afectan a las integraciones de la API. Revisa cuidadosamente la siguiente tabla al actualizar:
| Cambio | Detalles |
|---|---|
password → role | La llamada join ahora usa role=MODERATOR o role=VIEWER en lugar de contraseñas. |
| POST eliminado para /join | Solo se aceptan solicitudes GET para llamadas join. |
Content-Type requerido | Debe especificarse para todas las solicitudes POST. |
| Content-Types aceptado para /create | application/x-www-form-urlencoded, multipart/form-data, application/xml, text/xml |
| Parámetros eliminados | breakoutRoomsEnabled, learningDashboardEnabled y virtualBackgroundsDisabled han sido reemplazados por el parámetro disabledFeatures. |
Endpoints obsoletos
Los siguientes endpoints están obsoletos y no deben usarse en integraciones nuevas:
| Endpoint | Estado | Reemplazo |
|---|---|---|
getDefaultConfigXML | Obsoleto desde BBB 2.4, eliminado en BBB 3.0. | clientSettingsOverride |
setConfigXML | Obsoleto desde BBB 2.4, eliminado en BBB 3.0. | clientSettingsOverride |
Comportamiento de fusión del manifiesto de plugins
Los manifiestos de plugins de tres fuentes se fusionan (no se sobrescriben) cuando se crea una reunión:
- Configuración del servidor
- Parámetro
pluginManifestsen la llamadacreate - parámetro
pluginManifestsFetchUrl
Los duplicados se eliminan automáticamente. Esto permite una configuración flexible de plugins en varios niveles.
Opciones importantes de configuración del servidor
Las siguientes configuraciones de bigbluebutton.properties no pueden controlarse mediante la API, pero afectan directamente al comportamiento de la API:
| Propiedad | Predeterminado | Descripción |
|---|---|---|
supportedChecksumAlgorithms | sha1,sha256,sha384,sha512 | Algoritmos de checksum compatibles para la autenticación de la API. |
maxUserConcurrentAccesses | 3 | Número máximo de sesiones concurrentes por usuario (por ID externo). |
allowOverrideClientSettingsOnCreateCall | false | Habilita el parámetro clientSettingsOverride en el cuerpo de create. |
allowRevealOfBBBVersion | false | Muestra la versión de BBB en la respuesta raíz de la API. |
allowFetchAllRecordings | true | Permite getRecordings sin un filtro de ID de reunión. |
maxFileSizeUpload | 30000000 | Tamaño máximo de archivo para cargas de presentaciones (30 MB). |
defaultHttpSessionTimeout | 14400 | Tiempo de espera de la sesión HTTP en segundos (4 horas). |
sessionsCleanupDelayInMinutes | 60 | Las sesiones permanecen activas durante esta cantidad de minutos después de que termina una reunión. |
fetchUrlSupportedProtocols | https | Protocolos permitidos para la obtención de URL (p. ej., descargas de presentaciones). |
Configuración del Media Bridge
BigBlueButton 3.0 introduce LiveKit como puente multimedia alternativo. Los siguientes parámetros de create controlan qué puente se utiliza:
| Parámetro | Valores posibles | Predeterminado |
|---|---|---|
cameraBridge | bbb-webrtc-sfu, livekit | bbb-webrtc-sfu |
screenShareBridge | bbb-webrtc-sfu, livekit | bbb-webrtc-sfu |
audioBridge | bbb-webrtc-sfu, livekit, freeswitch | freeswitch |
Tiempo de espera de conversión de presentaciones
A partir de BBB 3.0, el parámetro del servidor maxPageConversionTime (predeterminado: 60 segundos) limita el tiempo de conversión por diapositiva. Las presentaciones complejas con muchas páginas o gráficos pesados pueden alcanzar este tiempo límite, provocando que las diapositivas no se conviertan.
Si sus presentaciones superan con frecuencia el tiempo de espera durante la conversión, considere dividirlas en archivos más pequeños o simplificar las diapositivas complejas antes de subirlas.