Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Bigbluebutton Api Php Laravel Package

bigbluebutton/bigbluebutton-api-php

Official PHP 8.2+ client for the BigBlueButton API. Wraps meeting creation, joining, recording management, and server administration in a developer-friendly interface, installable via Composer for quick integration into PHP applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a framework-agnostic PHP SDK, not a Laravel package — there is no service provider, facade, config file, migration, or publishable asset. Architecturally it belongs in your integration/adapters layer as a thin, synchronous client over the BigBlueButton REST API. The important consequence for a TPM: BBB is the system of record for live meeting state, and this library deliberately holds none. There are no Eloquent-ready models, no persistence, no queue, no event bus. Any "meeting" table in your application is a local projection for entitlements, scheduling, and audit — never a source of truth. Design reviews should treat the SDK as replaceable infrastructure behind your own interface, so the product never depends on BigBlueButton\* types outside one adapter namespace.

Integration feasibility. Low friction. composer require bigbluebutton/bigbluebutton-api-php, PHP 8.2+, and — since 3.0 — zero required package dependencies (curl transport by default, PSR-18/PSR-17 optional via BigBlueButton::createWithHttpClient()). The surface is a handful of operations: create, join (URL generation), end, getMeetings/getMeetingInfo, getRecordings/publish/delete, getSessions, insertDocument, sendChatMessage, learningDashboard, getJoinUrl, hooks. The 3.0 release claims drop-in backward compatibility with 2.x and 3.x servers, with removed members kept as deprecated stubs — favourable for an incremental rollout.

Technical risk. The risk is not the client; it is the counterpart. Three buckets:

  1. Server lifecycle. A production BBB deployment means a dedicated host (or fleet), coturn/TURN, Redis, FreeSWITCH, a recording pipeline, and significant bandwidth. This package gives you none of that. The TPM decision to adopt this package is implicitly a decision to operate or buy BBB hosting (managed BBB, Blindside/Greenlight-style, or a vendor). Scope that explicitly or the estimate will be wrong by an order of magnitude.
  2. Version coupling. The 3.0 changelog is a long list of Create/Join parameters, several of which are silently inert on BBB 4.0 (webVoice, copyright, defaultLayout, Feature::LAYOUTS). Parameter drift between your SDK version and the server version is a quiet-failure class: calls succeed, behaviour doesn't change. Pin both sides and record the supported matrix.
  3. Ecosystem signal is thin. 192 stars and 0 tracked dependents means little third-party validation, few Stack Overflow answers, and no crowd-sourced edge-case knowledge. Mitigants: it is the official BBB org package, has an mdBook documentation set, a changelog, PHPStan/PHPUnit gates with claimed 100% coverage, and a semver policy. Bus factor is the BBB project rather than an individual — acceptable, but do not treat it as a thriving independent OSS dependency.

Also verify the release metadata: "last release 2026-08-19" should be reconciled against live Packagist tags during due diligence, along with the license posture.

Licensing. LGPL-3.0 is a real gate, not a formality. SaaS use is generally fine; distributing the application (on-prem appliance, white-label binary, Docker image shipped to customers) triggers LGPL obligations around the library and the ability to relink/replace it. Route this to legal before committing to an on-prem SKU.

Key questions.

  • Which BBB server version(s) must we support — 2.7, 3.0, 4.0 — and is that a single target or a compatibility matrix?
  • Self-hosted, managed, or hybrid? Who owns the recording pipeline and its storage costs?
  • Is there a distribution/on-prem scenario that makes LGPL a blocker?
  • Do we need server-side joins (cookie/JSESSIONID flows) or is join-URL redirect sufficient? The latter is the documented standard and far simpler.
  • What is the concurrency target per meeting and across the tenant, and what's the expected recording volume/retention?
  • Does the product need recordings playback in-app, or is a link-out acceptable for v1?
  • Compliance scope: GDPR/FERPA/COPPA consent capture, retention, PII in meeting metadata?

Integration Approach

Stack fit. Wrap, don't sprinkle. Three artefacts:

  • config/bigbluebutton.php reading BBB_SERVER_BASE_URL and BBB_SECRET from env/secret manager.
  • A singleton binding in a service provider, constructed explicitly (new BigBlueButton($baseUrl, $secret) — note 3.0 fixed an argument-order bug here; pre-3.0 code that relied on the constructor is worth auditing).
  • A MeetingService / RecordingService in your domain layer exposing your own DTOs and exceptions (MeetingProvisioned, MeetingEnded, RecordingReady), with BigBlueButton\* types confined to one namespace.

HTTP transport. Decide deliberately. The default curl transport is dependency-free and fine, but it bypasses Laravel's HTTP middleware, retries, and telemetry. If you want framework-native observability, inject Guzzle (guzzlehttp/guzzle + GuzzleHttp\Psr7\HttpFactory) or Symfony's Psr18Client with createWithHttpClient(). Note that Laravel's own Http facade is not PSR-18, so it cannot be dropped in directly. Set explicit timeouts (10s suggested in the docs) — a slow BBB server must not pin your PHP workers.

Migration path. There is nothing to migrate if this is greenfield. If you already have hand-rolled curl calls (a very common state of the art for BBB integrations), define the interface first, implement it with this SDK, and delete the old code behind a feature flag. Behavioural diffs to watch: response parsing (messageKey vs message), multipart caption uploads (broken pre-3.0), and cookie/JSESSIONID capture (also broken pre-3.0). If you're on 2.x, upgrade to 3.0 before building features — 3.0 is where those fixes live.

Compatibility gates.

  • PHP 8.2+ forces Laravel 11/12 (Laravel 10 also supports PHP 8.2, so 10+ works; 9 and below do not). Confirm the runtime before scheduling work.
  • Pin ^3.0 and treat major bumps as scheduled work with a changelog diff.
  • Record a supported server version per environment — staging must not drift from production BBB.

Sequencing.

  1. Spike (2–3 days). Create/join/end against a throwaway BBB server; validate checksum auth, join-URL redirect, and error responses.
  2. Platform wrapper. Config, singleton, adapter interface, exception translation, structured logging (meetingID, messageKey, latency, checksum failures).
  3. Meeting lifecycle v1. Create on schedule, local projection row, join via getJoinMeetingURL() redirect, end on completion. Handle duplicateWarning as success.
  4. Webhooks. Build the receiving endpoint (the hooks/create endpoint plus your own route), validate and process meeting-ended and recording-ready. This is where async product features live.
  5. Recordings. Listing, publish/unpublish, retention job. Add caption-track upload once multipart is confirmed working end to end.
  6. Server operations track (parallel, owned elsewhere). TURN, scaling, backups, monitoring — the long pole.
  7. 3.0/4.0 features. getSessions, learningDashboard, sendChatMessage, insertDocument, client-settings overrides — only after v1 is stable.

Operational Impact

Maintenance. Low for the client, but non-zero: quarterly dependency review, changelog diff on each minor, and a re-test against the target BBB server version. Budget a small recurring allowance rather than a one-off integration task. Track deprecated parameters actively — they will silently stop doing anything after a server upgrade, which is the worst failure mode to debug from a bug report.

Support. No commercial support for this package; the community forum and GitHub issues are the channel. Your first-line support burden is dominated by the BBB server and by user-side AV/permissions problems, not by PHP errors. Staff accordingly: an L1 runbook covering "meeting won't start", "audio/video not working", "recording not available yet" is worth more than SDK documentation.

Scaling. The client is stateless and cheap. Two useful properties: join URLs are constructed locally from the shared secret (checksum), so the highest-volume user action — clicking "Join" — involves no network round trip and no BBB load; and meeting creation is a single fast POST. Real scaling lives on the BBB side: per-server concurrent-user ceilings, TURN capacity, Redis, and recording transcode throughput. Model recording storage as an unbounded cost line and put retention in the product spec, not the backlog.

Failure modes.

Mode Symptom Mitigation
Secret rotated / checksum mismatch All calls fail with a checksum error Health check on deploy; config cache clear; alert on checksum errors
BBB unreachable / timeout Worker exhaustion, 500s on schedule Short timeouts, circuit breaker, async creation via queue
Duplicate create on retry duplicateWarning Treat as success; same meetingID is the idempotency key
Orphaned meetings Idle rooms, wasted capacity Set meetingExpireIfNoUserJoinedInSeconds / endWhenNoModerator at create time
Webhook loss or delay Stale meeting/recording state Idempotent handler keyed on meetingID/recordID + periodic reconciliation poll
Recording lag "Where's my recording?" tickets Publish only on recording-ready; expose a "processing" state in the UI
Version drift Feature toggles silently no-op Pin versions, matrix test in CI, log the server's apiVersion

Ramp-up. A competent Laravel developer is productive with the SDK in under a day — the docs are a proper mdBook with HTTP-client, cookie, hooks, and recordings sections, and the API mirrors the BBB server docs. Full feature ownership (recordings, webhooks, retention, tenanting) is 1–2 weeks for one engineer. BBB server operations is weeks, and should be a separate owner. Legal review of LGPL: days. Product/UX for consent, waiting rooms, and recording notices: parallel track, and the most likely source of launch delay.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr
laravel2580/idehelpers
delatbabel/viewpages
anavel/gettext
muhamadrezaar/highcharts
delatbabel/keylists
frankkessler/salesforce-laravel-oauth2-rest
anavel/foundation
wdmtech/enviricons
eii/laravel-captcha
muka/shape-reader
tdt/json