joisarjignesh/bigbluebutton

BigBlueButton Server API Library for Laravel

Package info

github.com/joisarjignesh/bigbluebutton

Documentation

pkg:composer/joisarjignesh/bigbluebutton

Statistics

Installs: 154 766

Dependents: 1

Suggesters: 0

Stars: 162

Open Issues: 1

v3.0 2025-08-27 14:22 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 83bf2ce439d6d5d8577103cc101be78f5396c12f

packagephpapilaravelbbbmeetingbigbluebuttonlaravel-packagejoisarjignesh


README

πŸ‘ laravel-bigbluebutton

BigBlueButton Server API Library for Laravel

πŸ‘ License
πŸ‘ Latest Version on Packagist
πŸ‘ Build Status
πŸ‘ Quality Score
πŸ‘ Total Downloads
πŸ‘ Laravel Framework

Package that provides easily communicate between BigBlueButton server and laravel framework

Requirements

  • Laravel 5.5 or above.

Installation

You can install the package via composer:

composer require joisarjignesh/bigbluebutton

After install package publish config file

php artisan vendor:publish --tag=bigbluebutton-config

Usage

  • Define in config/bigbluebutton.php file
BBB_SECURITY_SALT=bbb_secret_key 
BBB_SERVER_BASE_URL=https://example.com/bigbluebutton/
  • For Specific server configuration (only for multiple server by default is optional)
'servers' => [
 'server1' => [
 'BBB_SECURITY_SALT' => '',
 'BBB_SERVER_BASE_URL' => '',
 ],
 ]

After Define salt and url clear old configurations

php artisan config:clear

Api

Check a url and secret working

dd(\Bigbluebutton::isConnect()); //default 
dd(\Bigbluebutton::server('server1')->isConnect()); //for specific server 
dd(bigbluebutton()->isConnect()); //using helper method 

Meeting

Create a meeting

  • You can create meeting in three ways document

1.By Passing Array

\Bigbluebutton::create([
 'meetingID' => 'tamku',
 'meetingName' => 'test meeting',
 'attendeePW' => 'attendee',
 'moderatorPW' => 'moderator'
]); 

2.By passing CreateMeetingParameters object for customize create meeting

use BigBlueButton\Parameters\CreateMeetingParameters;

$meetingParams = new CreateMeetingParameters($meetingID, $meetingName);
$meetingParams->setModeratorPW('moderatorPassword');
$meetingParams->setAttendeePW('attendeePassword');

\Bigbluebutton::create($meetingParams);

3.By passing array it will return CreateMeetingParameters object for overwrite methods

$createMeeting = \Bigbluebutton::initCreateMeeting([
 'meetingID' => 'tamku',
 'meetingName' => 'test meeting',
 'attendeePW' => 'attendee',
 'moderatorPW' => 'moderator',
]);

$createMeeting->setDuration(100); //overwrite default configuration
\Bigbluebutton::create($createMeeting);
Upload slides
  • You can upload slides within the create a meeting call. If you do this, the BigBlueButton server will immediately download and process the slides
    \Bigbluebutton::create([
     'meetingID' => 'tamku',
     'meetingName' => 'test meeting',
     'attendeePW' => 'attendee',
     'moderatorPW' => 'moderator',
     'presentation' => [ //must be array
     ['link' => 'https://www.example.com/doc.pdf', 'fileName' => 'doc.pdf'], //first will be default and current slide in meeting
     ['link' => 'https://www.example.com/php_tutorial.pptx', 'fileName' => 'php_tutorial.pptx'],
     ],
    ]); 
End meeting callback URL
  • You can ask the BigBlueButton server to make a callback to your application when the meeting ends. Upon receiving the callback your application could, for example, change the interface for the user to hide the β€˜join’ button.

    Note : End meeting callback URL will notify silently, User won't redirect to that page.

    If you want to redirect users to that page after meeting end then can use logoutURL

\Bigbluebutton::create([
 'meetingID' => 'tamku',
 'meetingName' => 'test meeting',
 'attendeePW' => 'attendee',
 'moderatorPW' => 'moderator',
 'endCallbackUrl' => 'www.example.com/callback',
 'logoutUrl' => 'www.example.com/logout',
]); 
Recording ready callback URL
  • You can ask the BigBlueButton server to make a callback to your application when the recording for a meeting is ready for viewing. Upon receiving the callback your application could, for example, send the presenter an e-mail to notify them that their recording is ready

    Note : Recording ready callback URL will notify silently, User won't redirect to that page.
\Bigbluebutton::create([
 'meetingID' => 'tamku',
 'meetingName' => 'test meeting',
 'attendeePW' => 'attendee',
 'moderatorPW' => 'moderator',
 'bbb-recording-ready-url' => 'https://example.com/api/v1/recording_status',
]); 

Join a meeting

  • Join meeting ( by default it will redirect into BigBlueButton Server And Join Meeting) document
use JoisarJignesh\Bigbluebutton\Facades\Bigbluebutton;

return redirect()->to(
 Bigbluebutton::join([
 'meetingID' => 'tamku',
 'userName' => 'disa',
 'password' => 'attendee' //which user role want to join set password here
 ])
);
  • Join meeting but does want to redirect into BigBlueButton server and pass other parameters
\Bigbluebutton::join([
 'meetingID' => 'tamku',
 'userName' => 'disa',
 'password' => 'attendee', //which user role want to join set password here
 'redirect' => false, //it will not redirect into bigblueserver
 'userId' => "54575",
 'customParameters' => [ 
 'foo' => 'bar',
 'key' => 'value'
 ]
]);

Get a list of meetings

\Bigbluebutton::all(); //using facade
bigbluebutton()->all(); //using helper method 

Get meeting info

use JoisarJignesh\Bigbluebutton\Facades\Bigbluebutton;

Bigbluebutton::getMeetingInfo([
 'meetingID' => 'tamku',
 'moderatorPW' => 'moderator' //moderator password set here
]);

Is a meeting running

Bigbluebutton::isMeetingRunning([
 'meetingID' => 'tamku',
]);

Bigbluebutton::isMeetingRunning('tamku'); //second way 

Close a meeting

use JoisarJignesh\Bigbluebutton\Facades\Bigbluebutton;

Bigbluebutton::close([
 'meetingID' => 'tamku',
 'moderatorPW' => 'moderator' //moderator password set here
]);

Recording

Get recordings

\Bigbluebutton::getRecordings([
 'meetingID' => 'tamku',
 //'meetingID' => ['tamku','xyz'], //pass as array if get multiple recordings 
 //'recordID' => 'a3f1s',
 //'recordID' => ['xyz.1','pqr.1'] //pass as array note :If a recordID is specified, the meetingID is ignored.
 // 'state' => 'any' // It can be a set of states separate by commas 
]);

Publish recordings

\Bigbluebutton::publishRecordings([
 'recordID' => 'a3f1s',
 //'recordID' => ['xyz.1','pqr.1'] //pass as array if publish multiple recordings
 'state' => true //default is true 
]);

Delete recordings

\Bigbluebutton::deleteRecordings([
 //'recordID' => 'a3f1s',
 'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);

Update recordings

\Bigbluebutton::updateRecordings([
 //'recordID' => 'a3f1s',
 'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);

Hooks

Hooks create

dd(Bigbluebutton::hooksCreate([
 'callbackURL' => 'example.test', //required
 'meetingID' => 'tamku', //optional if not set then hooks set for all meeting id
 'getRaw' => true //optional
]));

Hooks destroy

dd(Bigbluebutton::hooksDestroy([
 'hooksID' => 33
]));

dd(Bigbluebutton::hooksDestroy('53')); //second way

Other

Get api version

  • Get api version
dd(\Bigbluebutton::getApiVersion()); //return as collection 

Unofficial

Start a meeting

  • Start meeting (first check meeting is exists or not if not then create a meeting and join a meeting otherwise meeting is exists then it will directly join a meeting) (by default user join as moderator)
$url = \Bigbluebutton::start([
 'meetingID' => 'tamku',
 'meetingName' => 'test meeting name',
 'moderatorPW' => 'moderator', //moderator password set here
 'attendeePW' => 'attendee', //attendee password here
 'userName' => 'John Deo',//for join meeting 
 //'redirect' => false // only want to create and meeting and get join url then use this parameter 
]);

return redirect()->to($url);

More Information Read This wiki

For Bigbluebutton Api Testing See This ApiMate

See Bigbluebutton Official dev Api Bigbluebutton

Support

πŸ‘ Buy Me A Coffee
πŸ‘ Donate

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email jigneshjoisar@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.