djoudi / bbb-laravel5.5
Bigbluebutton wrapper for laravel
Installs: 3 065
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 1
Forks: 3
Open Issues: 4
pkg:composer/djoudi/bbb-laravel5.5
Requires
- php: ^8.4
- bigbluebutton/bigbluebutton-api-php: ^2.3.1
- laravel/framework: ^12.0
Requires (Dev)
- laravel/pint: ^1.13
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2025-10-30 17:59:06 UTC
README
BigBlueButton API Wrapper for Laravel
This is a laravel wrapper for BigBlueButton API
Requirements
- PHP 8.4 or above
- Laravel 12 or above
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
You can define Big blue button secret key and server url in two ways.
- Define in .env file
BBB_SECURITY_SALT =bbb_secret_key
BBB_SERVER_BASE_URL=https://example.com/bigbluebutton/
- Define in config/bigbluebutton.php
'BBB_SECURITY_SALT' => 'bbb_secret_key',
'BBB_SERVER_BASE_URL' => 'https://example.com/bigbluebutton/',
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
You can also manage meetings using the facade
Meeting::all(); //get a list of all meetings