BigBlueButton PHP API
PHP
Switch branches/tags
Nothing to show
Clone or download

README.md

Packagist PHP from Travis config Downloads

Build Status Coverage Status Scrutinizer Code Quality

@bigbluebutton on Twitter Website

PHP 5.4 PHP 5.5 PHP 5.6 PHP 7 PHP 7.1 PHP 7.2 PHP 7.3

BigBlueButton API for PHP

The official and easy to use BigBlueButton API for PHP, makes easy for developers to use BigBlueButton API for PHP 5.4+.

Requirements

  • PHP 5.4 or above.
  • Curl library installed.
  • mbstring library installed.
  • Xml library installed.

BigBlueButton API for PHP is also tested to work with HHVM and fully compatible with PHP 7.0 and above.

Install and usage tutorial

We have written INSTALL to show a full install and usage example. If you are familiar to composer and API please continue top the next section.

Installation

bigbluebutton-api-php can be installed via Composer CLI

composer require bigbluebutton/bigbluebutton-api-php:~2.0.0

or by editing Composer.json

{
    "require": {
        "bigbluebutton/bigbluebutton-api-php": "~2.0.0"
    }
}

Usage

You should have environment variables BBB_SECRET and BBB_SERVER_BASE_URL defined in your sever. *if you are using Laravel you can add it in your .env

The you will be able to call BigBlueButton API of your server. A simple usage example for create meeting looks like:

use BigBlueButton/BigBlueButton;

$bbb                 = new BigBlueButton();
$createMeetingParams = new CreateMeetingParameters('bbb-meeting-uid-65', 'BigBlueButton API Meeting');
$response            = $bbb->createMeeting($createMeetingParams);

echo "Created Meeting with ID: " . $response->getMeetingId();

Example

# Get meetings


use BigBlueButton\BigBlueButton;

$bbb = new BigBlueButton();
$response = $bbb->getMeetings();

if ($response->getReturnCode() == 'SUCCESS') {
	foreach ($response->getRawXml()->meetings->meeting as $meeting) {
		// process all meeting
	}
}

# Create Meeting


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\CreateMeetingParameters;

$bbb = new BigBlueButton();

$createMeetingParams = new CreateMeetingParameters($meetingID, $meetingName);
$createMeetingParams->setAttendeePassword($attendee_password);
$createMeetingParams->setModeratorPassword($moderator_password);
$createMeetingParams->setDuration($duration);
$createMeetingParams->setLogoutUrl($urlLogout);
if ($isRecordingTrue) {
	$createMeetingParams->setRecord(true);
	$createMeetingParams->setAllowStartStopRecording(true);
	$createMeetingParams->setAutoStartRecording(true);
}

$response = $bbb->createMeeting($createMeetingParams);
if ($response->getReturnCode() == 'FAILED') {
	return 'Can\'t create room! please contact our administrator.';
} else {
	// process after room created
}

# Join Meeting


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\JoinMeetingParameters;

$bbb = new BigBlueButton();

// $moderator_password for moderator
$joinMeetingParams = new JoinMeetingParameters($meetingID, $name, $password);
$joinMeetingParams->setRedirect(true);
$url = $bbb->getJoinMeetingURL($joinMeetingParams);

// header('Location:' . $url);

# Close Meeting


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\EndMeetingParameters;

$bbb = new BigBlueButton();

$endMeetingParams = new EndMeetingParameters($meetingID, $moderator_password);
$response = $bbb->endMeeting($endMeetingParams);

# Get Meeting Info


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\GetMeetingInfoParameters;

$bbb = new BigBlueButton();

$getMeetingInfoParams = new GetMeetingInfoParameters($meetingID, '', $moderator_password);
$response = $bbb->getMeetingInfo($getMeetingInfoParams);
if ($response->getReturnCode() == 'FAILED') {
	// meeting not found or already closed
} else {
	// process $response->getRawXml();
}

# Get Recordings


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\GetRecordingsParameters;

$recordingParams = new GetRecordingsParameters();
$bbb = new BigBlueButton();
$response = $bbb->getRecordings($recordingParams);

if ($response->getReturnCode() == 'SUCCESS') {
	foreach ($response->getRawXml()->recordings->recording as $recording) {
		// process all recording
	}
}

note that BigBlueButton need about several minutes to process recording until it available.
You can check in bbb-record --watch

# Delete Recording


use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\DeleteRecordingsParameters;

$bbb = new BigBlueButton();
$deleteRecordingsParams= new DeleteRecordingsParameters($recordingID); // get from "Get Recordings"
$response = $bbb->deleteRecordings($deleteRecordingsParams);

if ($response->getReturnCode() == 'SUCCESS') {
	// recording deleted
} else {
	// something wrong
}

Submitting bugs and feature requests

Bugs and feature request are tracked on GitHub

Contributing guidelines

Code style

Make sure the code style configuration is applied by running PHPCS-Fixer.

./vendor/bin/php-cs-fixer fix --allow-risky yes

Running tests

For every implemented feature add unit tests and check all is green by running the command below.

./vendor/bin/phpunit