Skip to content
Studeia Docs

Multi-provider live classes (BBB, Zoom, Teams, Meet)

Studeia supports 4 video providers: BigBlueButton (iframe), Zoom (S2S OAuth), Teams (Graph API), Google Meet (OAuth Calendar). Adapter pattern, webhook lifecycle, recording sync via cron.

2026-05-23 6 min
Resposta curta

Studeia live classes support 4 providers via adapter pattern: BigBlueButton (default, iframe embed), Zoom (Server-to-Server OAuth), Microsoft Teams (Graph API), Google Meet (OAuth Calendar). AES-256-GCM encrypted credentials. Webhook lifecycle + cron recording sync (15min fallback). Automatic LiveClassTranscription for Zoom/Teams (RAG-ingestible).

Supported providers

ProviderAuthJoinRecordingsTranscript
BBBsharedSecretiframeYes, native APIText provided
ZoomServer-to-Server OAuthnew tabWebhook + cronVTT auto
TeamsClient Credentialsnew tabGraph API + cronVTT auto
Google MeetOAuth + Calendar APInew tabCalendar API + cronManual in Meet

Adapter pattern

resolveVideoProvider(tenantId, liveClass?) cascades:

  1. liveClass.videoProvider (if specified)
  2. VideoProviderConfig.isDefault
  3. Tenant.config.bbb (legacy backward compat)
  4. BBB env vars (global fallback)

Webhooks and recording sync

  • POST /api/webhooks/video/zoom — meeting events + recording.completed
  • POST /api/webhooks/video/teams — Graph notifications
  • GET /api/cron/recording-sync — polling every 15min as fallback

Credentials

Stored in VideoProviderConfig with AES-256-GCM. Unique: [tenantId, provider].

Limitations

  • BBB: needs self-hosted instance (or managed BBB provider). Cost: $20-200/month.
  • Zoom: duration limit per tier (free=40min, paid=unlimited).
  • Teams: endMeeting not supported via API.
  • Google Meet: recording/transcription started manually by host.
  • Streaming to YouTube/Twitch: not natively supported.

See also

FAQ

What video provider does Studeia use?

4 options: BigBlueButton (default, iframe embed, open-source), Zoom (Server-to-Server OAuth), Microsoft Teams (Azure AD Client Credentials), Google Meet (OAuth admin consent). Admin chooses per tenant (VideoProviderConfig default) or per specific lesson (LiveClass.videoProvider override).

Do BBB and Zoom work the same way for students?

Not exactly. BBB supports iframe embed (joinMethod='iframe', student sees lesson inside Studeia). Zoom, Teams and Meet open in new tab (joinMethod='external', X-Frame-Options blocks iframe). UI shows card with countdown + 'Join' button for these 3.

Are recordings available?

Yes, automatically. Provider webhook notifies when recording is ready + cron /api/cron/recording-sync runs every 15min as fallback. recordingUrl saved in LiveClass. For Zoom/Teams: VTT transcript also captured (creates LiveClassTranscription that can be ingested in RAG).

Can I restrict live class to a specific group?

Yes. LiveClass.classGroupId optional. When set: only students from that group see and can join (critical rules 45-48). Without classGroupId: all enrolled in course see.

Veja tambem

Multi-provider live classes (BBB, Zoom, Teams, Meet)