BigBlueButton Server API Library for Laravel
Package that provides easily communicate between BigBlueButton server and laravel framework
- Requirements
- Installation
- Usage
- Api
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');
\Bigblubutton::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'], ], ]);
URL
End meeting callback-
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.
- For testing endCallbackUrl see webhook site
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',
]);
URL
Recording ready callback-
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.
- For testing Recording ready callback see webhook site
\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
- Get all meetings document
\Bigbluebutton::all(); //using facade
bigbluebutton()->all(); //using helper method
Get meeting info
- Get meeting info document
use JoisarJignesh\Bigbluebutton\Facades\Bigbluebutton;
Bigbluebutton::getMeetingInfo([
'meetingID' => 'tamku',
'moderatorPW' => 'moderator' //moderator password set here
]);
Is a meeting running
- Is meeting running document
Bigbluebutton::isMeetingRunning([
'meetingID' => 'tamku',
]);
Bigbluebutton::isMeetingRunning('tamku'); //second way
Close a meeting
- Close meeting document
use JoisarJignesh\Bigbluebutton\Facades\Bigbluebutton;
Bigbluebutton::close([
'meetingID' => 'tamku',
'moderatorPW' => 'moderator' //moderator password set here
]);
Recording
Get recordings
- Get recordings document
\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
- Publish Recordings document
\Bigbluebutton::publishRecordings([
'recordID' => 'a3f1s',
//'recordID' => ['xyz.1','pqr.1'] //pass as array if publish multiple recordings
'state' => true //default is true
]);
Delete recordings
- Delete recordings document
\Bigbluebutton::deleteRecordings([
//'recordID' => 'a3f1s',
'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);
Update recordings
- Update recordings document
\Bigbluebutton::updateRecordings([
//'recordID' => 'a3f1s',
'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);
Hooks
Hooks create
- Hooks Create document
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
- Hooks Destroy document
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);
wiki
More Information Read ThisApiMate
For Bigbluebutton Api Testing See ThisBigbluebutton
See Bigbluebutton Official dev ApiSupport
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 [email protected] instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.