abiodunjames/bigbluebutton

为 laravel 5 设计的 Bigbluebutton 包装器

v0.0.1 2018-01-27 23:45 UTC

This package is auto-updated.

Last update: 2024-09-29 05:01:49 UTC


README

这是一个 BigBlueButton API 的 Laravel 包装器

需求

  • Laravel 5.3 或更高版本。

安装

在 composer.json 中需要包,并更新 composer。这将下载包和官方的 bigbluebutton php 库。

composer require abiodunjames/bigbluebutton

更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组

 Abiodunjames\Bigbluebutton\BigbluebuttonProviderService::class,

你可以选择使用 facade 以缩短代码。将以下内容添加到你的 facades 中

'Meeting' => Abiodunjames\Bigbluebutton\BigbluebuttonMeeting::class,

用法

你可以通过两种方式定义 Big blue button 密钥和服务器 URL。

  1. 在 .env 文件中定义

BBB_SECURITY_SALT =bbb_secret_key
BBB_SERVER_BASE_URL=https://example.com/bigbluebutton/

  1. 在 config/bigbluebutton.php 中定义
 'BBB_SECURITY_SALT' => 'bbb_secret_key',
 'BBB_SERVER_BASE_URL' => 'https://example.com/bigbluebutton/',

通过控制器中的依赖注入

列出所有会议

namespace App\Http\Controllers;

class MeetingController extends Controller
{
    /**
     * @var \Abiodunjames\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
        }
    }

创建会议

use Abiodunjames\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\CreateMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Abiodunjames\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
            }
        }

加入会议

use Abiodunjames\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\JoinMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Abiodunjames\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, $request->meetingName, 'MyMeetingPassword');
        $meetingParams->setRedirect(true);
        $meetingUrl = $this->meeting->join($meetingParams);
        redirect()->setTargetUrl($meetingUrl);
    }

}

关闭会议

use Abiodunjames\Bigbluebutton\Contracts\Meeting;
use BigBlueButton\Parameters\EndMeetingParameters;
use Illuminate\Http\Request;

class MeetingController extends Controller
{
    /**
     * @var \Abiodunjames\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);
    }
}

通过 Laravel Facade

你也可以使用 facade 管理会议

Meeting::all(); //get a list of all meetings