Connect with BigBlueButton in easy 2 steps using PHP
In this article, I'll show you how to connect/join with BigBlueButton using PHP. I'm going to use the bigbluebutton-api-php library in this case. This library is very simple to use and has excellent support.
1) The first step is to install the bigbluebutton-api-php library. You must have composer installed on your system. Now, in your local development environment, create a directory and navigate to it using terminal or cmd to run:
composer require littleredbutton/bigbluebutton-api-php
This will install bigbluebutton-api-php along with all necessary packages. If you do not want to use composer, you can download the most recent library as a zip file from our MynaParrot github repo. After downloading, unzip the file and place it in a directory. At that point, you'll need to modify the include path to match your file structure.
2) Create a PHP file. I've named it easybbb.php
<?php
include __DIR__ . "/vendor/autoload.php";
use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\IsMeetingRunningParameters;
use BigBlueButton\Parameters\CreateMeetingParameters;
use BigBlueButton\Parameters\JoinMeetingParameters;
$apiUrl = "https://api.mynaparrot.com/clientid/bigbluebutton/";
$salt = "api_key or salt";
$meetingId = "test_01";
$goFurther = false;
$isMeetingRunning = false;
$bbb = new BigBlueButton($apiUrl, $salt);
// Let's first check if the meeting is already running or not.
$meetingRunningParams = new IsMeetingRunningParameters($meetingId);
try {
$response = $bbb->isMeetingRunning($meetingRunningParams);
if($response->success()){
$isMeetingRunning = $response->isRunning();
$goFurther = true;
}else{
echo $response->getMessage() . "\n";
}
} catch (\Exception $e) {
echo $e->getMessage() . "\n";
}
if (!$goFurther) {
return;
}
if (!$isMeetingRunning) {
// So, meeting isn't running. We'll create a new meeting.
$meetingName = "My Test Meeting";
$attendee_password = "student";
$moderator_password = "teacher";
// https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Parameters/CreateMeetingParameters.php
$createMeetingParams = new CreateMeetingParameters($meetingId, $meetingName);
$createMeetingParams->setAttendeePassword($attendee_password);
$createMeetingParams->setModeratorPassword($moderator_password);
$createMeetingParams->setMaxParticipants(10);
$createMeetingParams->addPresentation("http://classroom2.mynaparrot.es/mynadefault.pdf");
$createMeetingParams->setLogoutURL("https://mynaparrot.com/");
$createMeetingParams->setAllowModsToUnmuteUsers(true);
$createMeetingParams->setDuration(60); // duration in minutes. 0 = unlimited
// Optional. Metadata is used to store customized information. This data can be retrieved during get recordings.
//$createMeetingParams->addMeta("library", "littleredbutton/bigbluebutton-api-php");
//$createMeetingParams->addMeta("php_version", "7.4");
try {
$createMeetingResponse = $bbb->createMeeting($createMeetingParams);
if ($createMeetingResponse->success()) {
//https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Responses/CreateMeetingResponse.php
//echo $createMeetingResponse->getInternalMeetingId();
$isMeetingRunning = true;
}else{
echo $createMeetingResponse->getMessage() . "\n";
$goFurther = false;
}
}catch (\Exception $e){
echo $e->getMessage() . "\n";
$goFurther = false;
}
}
if (!$goFurther) {
return;
}
if($isMeetingRunning){
$displayname = "Jibon"; // your name
$password = "teacher"; // This password can either be a moderator password or an attendee password. If you use the moderator password, the user will join as a moderator; otherwise, the user will join as an attendee.
//https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Parameters/JoinMeetingParameters.php
$joinMeetingParams = new JoinMeetingParameters($meetingId, $displayname, $password);
//$joinMeetingParams->setUserId($userid); // This option is useful if you don't want the same user to be able to join from multiple devices. A unique user id or value must be sent in this case.
$joinMeetingParams->setJoinViaHtml5(true);
$joinMeetingParams->setRedirect(true);
//https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Parameters/UserDataParameters.php
//https://docs.bigbluebutton.org/2.2/customize.html#passing-custom-parameters-to-the-client-on-join
$joinMeetingParams->addUserData("bbb_record_video", true);
$joinUrl = $bbb->getJoinMeetingURL($joinMeetingParams);
header('Location:' . $joinUrl);
}
To get BigBlueButton Recordings:
1) I'm creating another file easyGetRecordings.php
<?php
include __DIR__ . "/vendor/autoload.php";
use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\GetRecordingsParameters;
$apiUrl = "https://api.mynaparrot.com/clientid/bigbluebutton/";
$salt = "api_key or salt";
$meetingId = "test_01";
$bbb = new BigBlueButton($apiUrl, $salt);
//https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Parameters/GetRecordingsParameters.php
$recordingParams = new GetRecordingsParameters();
$recordingParams->setMeetingId($meetingId); // omit to get a list of all recordings
try {
$response = $bbb->getRecordings($recordingParams);
if ($response->success()) {
$records = $response->getRecords();
if($records){
foreach ($records as $key => $record){
//https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/src/Core/Record.php
echo $record->getPlaybackUrl() . "<br>";
// echo "<pre>";
// print_r($record->getMetas());
// echo "</pre>";
}
}else{
echo $response->getMessage() . "\n";
}
}else{
echo $response->getMessage() . "\n";
}
}catch (\Exception $e) {
echo $e->getMessage() . "\n";
}
That's all. I've written description in the code. Now you can follow that as example.
Checkout our BigBlueButton services & BigBlueButton Hosting.