join – Unirse a la reunión
El endpoint join genera una URL que permite a un usuario entrar en una reunión BigBlueButton en curso. De forma predeterminada, el navegador redirige directamente al cliente BBB. Cuando redirect se establece en false, se devuelve una respuesta XML que contiene la URL de acceso y el token de sesión en su lugar.
Endpoint
GET https://api-guide.bbbserver.com/bigbluebutton/api/join?<parameters>&checksum=replace-with-checksum La llamada join es el único endpoint de API que se invoca directamente en el navegador del usuario final (como una URL de redirección). Todas las demás llamadas de API se realizan en el lado del servidor.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
meetingID | String | Obligatorio. El identificador de la reunión a la que se va a unir. |
fullName | String | Obligatorio. El nombre para mostrar del usuario en la reunión. |
role | Enum | Obligatorio. El rol del usuario: MODERATOR o VIEWER (sin distinguir entre mayúsculas y minúsculas). BBB 3.0+ |
Parámetros obsoletos
| Parámetro | Tipo | Descripción |
|---|---|---|
password | String | Obsoleto
Obsoleto desde BBB 3.0. Asignación de roles mediante contraseña (attendeePW/moderatorPW de create). Sustituido por role. |
Parámetros opcionales
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
createTime | Number (Long) | — | Marca de tiempo de la respuesta de create. Evita unirse a una reunión que fue recreada después de que se generara la URL de acceso. |
userID | String | — | ID de usuario específico de la aplicación. Devuelto en getMeetingInfo y webhooks. |
avatarURL | String | — | URL de una imagen de avatar para el usuario. |
webcamBackgroundURL | String | — | URL de una imagen de fondo personalizada para la cámara web. |
firstName | String | — | Nombre (se usa para ordenar, no para mostrar). |
lastName | String | — | Apellido (se usa para ordenar, no para mostrar). |
redirect | Boolean | true | Cuando se establece en false, se devuelve una respuesta XML en lugar de una redirección del navegador. |
errorRedirectUrl | String | — | URL alternativa a la que redirigir en caso de errores (en lugar de la página de error predeterminada). |
logoutURL | String | — | URL a la que redirigir después de cerrar sesión. Sustituye el valor de create. |
guest | Boolean | false | Marcar al usuario como invitado. Sujeto a la guestPolicy de la reunión. |
bot | Boolean | false | Marcar al usuario como un agente automatizado. |
excludeFromDashboard | Boolean | false | Excluir al usuario del panel de analítica de aprendizaje. |
enforceLayout | Enum | — | Forzar una disposición específica para este usuario. Valores posibles: UNIFIED_LAYOUT, CUSTOM_LAYOUT, SMART_LAYOUT, PRESENTATION_FOCUS, VIDEO_FOCUS, CAMERAS_ONLY, PARTICIPANTS_AND_CHAT_ONLY, PRESENTATION_ONLY, MEDIA_ONLY. ⚠ Sin documentación La documentación oficial enumera incorrectamente este valor como PARTICIPANTS_CHAT_ONLY (sin _AND_). |
auth | Boolean | (condicional) | ⚠ Sin documentación
Marcar al usuario como autenticado. Lógica condicional: si no se especifica guest, auth toma por defecto el valor true. Si se especifica guest=true, auth toma por defecto el valor false salvo que se establezca explícitamente. |
defaultLayout | String | — | ⚠ Sin documentación
Disposición predeterminada para este usuario. Los mismos valores que meetingLayout en la llamada a create. |
sessionName | String | — | ⚠ Sin documentación
Nombre de sesión personalizado. Solo surte efecto en combinación con existingUserID. |
existingUserID | String | — | ⚠ Sin documentación ID interno del usuario para volver a unirse o reconectarse con una sesión existente. |
replaceSessionToken | String | — | ⚠ Sin documentación
Token de la sesión que se va a reemplazar (cuando se usa con existingUserID). |
Parámetros de Userdata
Al llamar a join, puedes pasar datos personalizados como parámetros userdata-. Estos se ponen a disposición en el cliente y pueden controlar el comportamiento de los complementos o la configuración del cliente por usuario.
Ciertas claves userdata pueden bloquearse en el lado del servidor mediante una lista de bloqueo (getJoinUrlUserdataBlocklist).
Ejemplo de solicitud
GET https://api-guide.bbbserver.com/bigbluebutton/api/join?meetingID=replace-with-meeting-id&fullName=John+Doe&role=VIEWER&redirect=false&checksum=replace-with-checksum Respuesta de ejemplo (redirect=false)
<response>
<returncode>SUCCESS</returncode>
<messageKey>successfullyJoined</messageKey>
<message>You have joined successfully.</message>
<meeting_id>replace-with-internal-meeting-id</meeting_id>
<user_id>replace-with-user-id</user_id>
<auth_token>replace-with-auth-token</auth_token>
<session_token>replace-with-session-token</session_token>
<url>https://api-guide.bbbserver.com/client/BigBlueButton.html?sessionToken=replace-with-session-token</url>
</response> Respuestas de error
| messageKey | Significado |
|---|---|
invalidMeetingIdentifier | La reunión no existe. |
meetingForciblyEnded | La reunión fue finalizada por la fuerza. |
maxParticipantsReached | Se ha alcanzado el límite de participantes. |
guestDeniedAccess | Se denegó el acceso al invitado. |
invalidPassword | La contraseña no es válida. |
checksumError | El checksum no es válido. |
mismatchCreateTimeParam | El createTime no coincide con la reunión. |
userNotFound | No se encontró ningún usuario activo con este ID (al usar existingUserID). |
Uso de createTime para la validación de URL de acceso
El parámetro createTime sirve como protección contra URL de acceso obsoletas:
Se crea una reunión y devuelve createTime: 1715261728123.
La URL de acceso se genera con createTime=1715261728123.
La reunión finaliza y se vuelve a crear con un nuevo createTime.
La URL de acceso antigua con el createTime anterior es rechazada.
Esto evita que los usuarios con enlaces de invitación desactualizados entren en una nueva reunión que reutiliza el mismo meetingID.
Consejos de seguridad
Nunca expongas shared secret en el lado del cliente para calcular URL de acceso. Genera siempre las URL de acceso en el lado del servidor y pásalas al cliente.
- La URL de acceso generada contiene checksum y solo debe usarse una vez.
- Las URL de acceso deben generarse en el lado del servidor y pasarse al cliente.
- Para reuniones sensibles, usa
guest=truejunto conguestPolicy=ASK_MODERATOR.
La transición de password a role es uno de los cambios incompatibles más importantes de BBB 3.0. Asegúrate de actualizar tu integración en consecuencia.
Preguntas frecuentes
role (MODERATOR o VIEWER) sustituye a la asignación de roles basada en contraseña utilizada en versiones anteriores. El parámetro password está obsoleto y ya no debe usarse en nuevas integraciones.existingUserID con el ID de usuario interno de la sesión anterior para volver a conectar. También puedes pasar replaceSessionToken para reemplazar la sesión anterior. Ten en cuenta que estos parámetros no están documentados y pueden cambiar sin previo aviso.guest se establece en true, el usuario se marca como invitado y queda sujeto a la guestPolicy definida al crear la reunión. Por ejemplo, con ASK_MODERATOR, el moderador debe aprobar al invitado antes de que pueda entrar.userdata-= ) te permiten pasar datos personalizados al cliente de la reunión por usuario. Pueden usarse para configurar el comportamiento del cliente, pasar información a complementos o personalizar la experiencia del usuario.createTime de tu URL de acceso no coincide con el createTime de la reunión actualmente en curso. Esto suele ocurrir cuando una reunión se finalizó y se volvió a crear con el mismo meetingID, pero la URL de acceso aún contiene el createTime antiguo.