PHPackages                             djoudi/bbb-laravel5.5 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. djoudi/bbb-laravel5.5

ActiveLibrary

djoudi/bbb-laravel5.5
=====================

Bigbluebutton wrapper for laravel

2.0.0(8mo ago)83.2k↑143.2%3[2 issues](https://github.com/djoudi/BBB-Laravel/issues)[1 PRs](https://github.com/djoudi/BBB-Laravel/pulls)MITPHPPHP ^8.4CI failing

Since Feb 19Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/djoudi/BBB-Laravel)[ Packagist](https://packagist.org/packages/djoudi/bbb-laravel5.5)[ RSS](/packages/djoudi-bbb-laravel55/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (8)Dependencies (4)Versions (14)Used By (0)

[![Build Status](https://camo.githubusercontent.com/a15266e782fe51513a5ba20a22a153b6ee1d4b141a655b06652ade80e8569c8c/68747470733a2f2f7472617669732d63692e6f72672f646a6f7564692f4242422d4c61726176656c352e352e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/djoudi/BBB-Laravel5.5)[![StyleCI](https://camo.githubusercontent.com/05dc62094f9af849076a349183438581fa3f5999ae6cd083522df5a9025c947f/68747470733a2f2f7374796c6563692e696f2f7265706f732f3132323038363433382f736869656c643f6272616e63683d6d6173746572)](https://styleci.io/repos/122086438)

BigBlueButton API Wrapper for Laravel
=====================================

[](#bigbluebutton-api--wrapper-for-laravel)

This is a laravel wrapper for BigBlueButton API

Requirements
------------

[](#requirements)

- PHP 8.4 or above
- Laravel 12 or above

Installation
------------

[](#installation)

Require package in your composer.json and update composer. This downloads the package and the official bigbluebutton php library.

```
composer require djoudi/bbb-laravel

```

After updating composer, add the ServiceProvider to the providers array in config/app.php

```
 Djoudi\Bigbluebutton\BigbluebuttonProviderService::class,

```

You can optionally use the facade for shorter code. Add this to your facades:

```
'Meeting' => Djoudi\Bigbluebutton\BigbluebuttonMeeting::class,

```

Usage
-----

[](#usage)

You can define Big blue button secret key and server url in two ways.

1. Define in .env file

`BBB_SECURITY_SALT =bbb_secret_key`
`BBB_SERVER_BASE_URL=https://example.com/bigbluebutton/`

2. Define in config/bigbluebutton.php

```
 'BBB_SECURITY_SALT' => 'bbb_secret_key',
 'BBB_SERVER_BASE_URL' => 'https://example.com/bigbluebutton/',

```

Via Dependency Injection in Controller
--------------------------------------

[](#via-dependency-injection-in-controller)

**List all meetings**

```
namespace App\Http\Controllers;
class MeetingController extends Controller
{
    /**
     * @var \Djoudi\Bigbluebutton\Contracts\Meeting
     */
    protected $meeting;

    public function __construct(Meeting $meeting)
    {
        $this->meeting = $meeting;
    }
    /**
     *  Returns a list of meetings
     */
    public function all()
    {
        $meetings = $this->meeting->all();
        if ($meetings) {
            // do something with meetings
        }
    }
```

**Create meeting**

```
use Djoudi\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\CreateMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Djoudi\Bigbluebutton\Contracts\Meeting
     */
    protected $meeting;

    public function __construct(Meeting $meeting)
    {
        $this->meeting = $meeting;
    }

    /**
         * Create a bigbluebutton meeting
         *
         * @param \Illuminate\Http\Request $request
         * @return void
         */
        public function create(Request $request)
        {
            $meetingParams = new CreateMeetingParameters($request->meetingId, $request->meetingName);
            $meetingParams->setDuration(40);
            $meetingParams->setModeratorPassword('supersecretpwd');

            if ($this->meeting->create($meetingParams)) {
                // Meeting was created
            }
        }
```

**Join a meeting**Pass a custom meeting name as the second argument to `join()` if you need to override the default.

```
use Djoudi\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\JoinMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Djoudi\Bigbluebutton\Contracts\Meeting
     */
    protected $meeting;

    public function __construct(Meeting $meeting)
    {
        $this->meeting = $meeting;
    }
    /**
     *  Join a bigbluebutton meeting
     *
     * @param \Illuminate\Http\Request $request
     * @return void
     */
    public function join(Request $request)
    {
        $meetingParams = new JoinMeetingParameters($request->meetingID, 'Guest', 'MyMeetingPassword');
        $meetingParams->setRedirect(true);
        $meetingUrl = $this->meeting->join($meetingParams, $request->meetingName);
        redirect()->setTargetUrl($meetingUrl);
    }

}
```

**Close meeting**

```
use Djoudi\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\EndMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Djoudi\Bigbluebutton\Contracts\Meeting
     */
    protected $meeting;

    public function __construct(Meeting $meeting)
    {
        $this->meeting = $meeting;
    }

    /**
     * End a bigbuebutton meeting
     *
     * @param \Illuminate\Http\Request $request
     * @return void
     */
    public function close(Request $request)
    {
        $meetingParams = new EndMeetingParameters($request->meetingID, $request->moderator_password);
        $this->meeting->close($meetingParams);
    }
}
```

**Check if a meeting is running**

```
use Djoudi\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\IsMeetingRunningParameters;

class MeetingController extends Controller
{
    /**
     * @var \Djoudi\Bigbluebutton\Contracts\Meeting
     */
    protected $meeting;

    public function __construct(Meeting $meeting)
    {
        $this->meeting = $meeting;
    }

    public function isRunning(string $meetingID)
    {
        $meetingParams = new IsMeetingRunningParameters($meetingID);
        if ($this->meeting->isRunning($meetingParams)) {
            // Meeting is currently running
        }
    }
}
```

**Manage recordings**

```
use Djoudi\\Bigbluebutton\\Contracts\\Meeting;
use BigBlueButton\\Parameters\\PublishRecordingsParameters;
use BigBlueButton\\Parameters\\DeleteRecordingsParameters;
use BigBlueButton\\Parameters\\UpdateRecordingsParameters;

class RecordingController extends Controller
{
    public function publish(Meeting $meeting, string $recordingId)
    {
        $params = new PublishRecordingsParameters($recordingId, true); // false to unpublish
        if ($meeting->publishRecordings($params)) {
            // Recording publish state updated
        }
    }

    public function delete(Meeting $meeting, string $recordingId)
    {
        $params = new DeleteRecordingsParameters($recordingId);
        if ($meeting->deleteRecordings($params)) {
            // Recording deleted
        }
    }

    public function update(Meeting $meeting, string $recordingId)
    {
        $params = (new UpdateRecordingsParameters($recordingId))->addMeta('name', 'New name');
        if ($meeting->updateRecordings($params)) {
            // Recording metadata updated
        }
    }
}
```

Via Laravel Facade
------------------

[](#via-laravel-facade)

You can also manage meetings using the facade

```
Meeting::all(); //get a list of all meetings
```

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance55

Moderate activity, may be stable

Popularity27

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity88

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 94.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~343 days

Recently: every ~539 days

Total

9

Last Release

255d ago

Major Versions

0.1.x-dev → 1.12018-02-22

1.2.4 → 2.0.02025-08-30

PHP version history (3 changes)1.0PHP &gt;=7.0

1.2.3PHP &gt;=7.1

2.0.0PHP ^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/8b11a661466c23df3760f4cf54750a24f0809e6653e029ae1b6468adaae4f2b6?d=identicon)[Djoudi](/maintainers/Djoudi)

---

Top Contributors

[![EcoinTest](https://avatars.githubusercontent.com/u/153815470?v=4)](https://github.com/EcoinTest "EcoinTest (52 commits)")[![djoudi](https://avatars.githubusercontent.com/u/152725?v=4)](https://github.com/djoudi "djoudi (3 commits)")

---

Tags

bigbluebuttonelearnelearningelearning-applicationlaravellive-streaminglmslaravelwrapperbigbluebutton

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/djoudi-bbb-laravel55/health.svg)

```
[![Health](https://phpackages.com/badges/djoudi-bbb-laravel55/health.svg)](https://phpackages.com/packages/djoudi-bbb-laravel55)
```

###  Alternatives

[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11320.2M21](/packages/anourvalar-eloquent-serialize)[thedoctor0/laravel-mailjet-driver

Laravel mail driver package for Mailjet and wrapper for its API

33237.9k1](/packages/thedoctor0-laravel-mailjet-driver)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
