Meeting provider abstraction with Zoom and Microsoft Teams

FeatureMediaService
Shipped
5 Agosti 2026, 06:36 UTC
Author
Kamo
Commit
d477982

Meetings were Kamo Meets by construction — MeetService persisted a Meet room name and nothing else. This introduces the abstraction and two remote providers behind it. meet/provider mirrors the email provider layer: MeetingProviderResolver assembles a MeetingContext (decrypted credentials, refreshed OAuth grant, org policy, the provider-side host account) and a capability map, so callers ask for MeetingScheduler rather than branching on provider type. Adding a fourth provider means adding a bean, not editing call sites. - KamoMeetProvider: room naming and URL construction, moved server-side. The org-namespacing that stops two tenants sharing a Prosody conference used to live in the browser; it is now pinned by tests. - ZoomProvider: REST v2, Server-to-Server OAuth or the Marketplace app. Creates on behalf of the organizing member, pulls cloud recordings and transcripts. - MicrosoftTeamsProvider: Graph onlineMeetings, app-only or delegated. Its connection test probes meeting creation, because the application access policy Teams also requires is the usual thing an admin misses — the permission alone authenticates fine and then 403s on every meeting. MeetingFeature is the contract with the admin UI: each provider declares the settings it can honour, and the settings screens disable the rest. Claims are asserted in tests rather than trusted, since an over-claiming provider produces toggles that silently do nothing — the failure this layer exists to prevent. ProviderRecordingSweep pulls remote recordings into Kamo's own storage so retention, quota and post-meeting summaries work identically on every provider. Downloads are capped: this service also serves chat and meetings under a 1Gi limit, so an oversized recording is skipped with a warning rather than risking the pod. Credentials are encrypted with the existing platform key, so no new secret has to be provisioned. Session handling shared by the meet endpoints moves into MeetSessionResolver — deliberately without widening its rights check.

All changes

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei