alireza5014/bigbluebutton

BigBlueButton 服务器 API 库,适用于 Laravel

dev-master 2024-05-25 19:00 UTC

This package is auto-updated.

Last update: 2024-09-25 19:39:40 UTC


README

laravel-bigbluebutton

BigBlueButton 服务器 API 库,适用于 Laravel

License Latest Version on Packagist Build Status Quality Score Total Downloads Laravel Framework

提供 BigBlueButton 服务器与 Laravel 框架之间轻松通信的包

要求

  • Laravel 5.5 或更高版本。

安装

您可以通过 composer 安装此包

composer require Alireza5014/bigbluebutton

安装包后发布配置文件

php artisan vendor:publish --tag=bigbluebutton-config

使用

  • 在 config/bigbluebutton.php 文件中定义
BBB_SECURITY_SALT=bbb_secret_key   
BBB_SERVER_BASE_URL=https://example.com/bigbluebutton/
  • 对于特定的服务器配置(默认情况下为多个服务器,可选)
'servers' => [
       'server1' => [
           'BBB_SECURITY_SALT'    => '',
           'BBB_SERVER_BASE_URL'  => '',
       ],
 ]

定义 salt 和 url 后清除旧配置

php artisan config:clear

API

检查 URL 和密钥是否工作

dd(\Bigbluebutton::isConnect()); //default 
dd(\Bigbluebutton::server('server1')->isConnect()); //for specific server 
dd(bigbluebutton()->isConnect()); //using helper method 

会议

创建会议

  • 您可以通过三种方式创建会议 文档

1.通过传递数组

\Bigbluebutton::create([
    'meetingID' => 'tamku',
    'meetingName' => 'test meeting',
    'attendeePW' => 'attendee',
    'moderatorPW' => 'moderator'
]); 

2.通过传递 CreateMeetingParameters 对象以自定义创建会议

use BigBlueButton\Parameters\CreateMeetingParameters;

$meetingParams = new CreateMeetingParameters($meetingID, $meetingName);
$meetingParams->setModeratorPassword('moderatorPassword');
$meetingParams->setAttendeePassword('attendeePassword');

\Bigblubutton::create($meetingParams);

3.通过传递数组,它将返回 CreateMeetingParameters 对象以覆盖方法

$createMeeting = \Bigbluebutton::initCreateMeeting([
    'meetingID' => 'tamku',
    'meetingName' => 'test meeting',
    'attendeePW' => 'attendee',
    'moderatorPW' => 'moderator',
]);

$createMeeting->setDuration(100); //overwrite default configuration
\Bigbluebutton::create($createMeeting);
上传幻灯片
  • 您可以在创建会议的调用中上传幻灯片。如果这样做,BigBlueButton 服务器将立即下载并处理 幻灯片
    \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
  • 您可以让 BigBlueButton 服务器在会议结束时回调您的应用程序。在收到回调后,您的应用程序可以,例如,更改用户界面以隐藏“加入”按钮。

    注意:会议结束回调 URL 将静默通知,用户不会重定向到该页面。

    如果希望在会议结束后将用户重定向到该页面,则可以使用 logoutURL

\Bigbluebutton::create([
   'meetingID' => 'tamku',
   'meetingName' => 'test meeting',
   'attendeePW' => 'attendee',
   'moderatorPW' => 'moderator',
   'endCallbackUrl'  => 'www.example.com/callback',
   'logoutUrl' => 'www.example.com/logout',
]); 
录制准备回调 URL
  • 您可以让 BigBlueButton 服务器在会议录制准备观看时回调您的应用程序。在收到回调后,您的应用程序可以,例如,向演示者发送电子邮件通知他们他们的录制已准备好。

    注意:录制准备回调 URL 将静默通知,用户不会重定向到该页面。
\Bigbluebutton::create([
    'meetingID' => 'tamku',
    'meetingName' => 'test meeting',
    'attendeePW' => 'attendee',
    'moderatorPW' => 'moderator',
    'bbb-recording-ready-url'  => 'https://example.com/api/v1/recording_status',
]); 

加入会议

  • 加入会议(默认情况下将重定向到 BigBlueButton 服务器并加入会议) 文档
use Alireza5014\Bigbluebutton\Facades\Bigbluebutton;

return redirect()->to(
 Bigbluebutton::join([
    'meetingID' => 'tamku',
    'userName' => 'disa',
    'password' => 'attendee' //which user role want to join set password here
 ])
);
  • 加入会议但不想重定向到 BigBlueButton 服务器并传递其他参数
\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'
    ]
]);

获取会议列表

\Bigbluebutton::all(); //using facade
bigbluebutton()->all(); //using helper method 

获取会议信息

use Alireza5014\Bigbluebutton\Facades\Bigbluebutton;

Bigbluebutton::getMeetingInfo([
    'meetingID' => 'tamku',
    'moderatorPW' => 'moderator' //moderator password set here
]);

会议是否正在进行中

  • 会议是否正在进行中 文档
Bigbluebutton::isMeetingRunning([
    'meetingID' => 'tamku',
]);

Bigbluebutton::isMeetingRunning('tamku'); //second way 

关闭会议

use Alireza5014\Bigbluebutton\Facades\Bigbluebutton;

Bigbluebutton::close([
    'meetingID' => 'tamku',
    'moderatorPW' => 'moderator' //moderator password set here
]);

录制

获取录制

\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  
]);

发布录制

\Bigbluebutton::publishRecordings([
   'recordID' => 'a3f1s',
    //'recordID' => ['xyz.1','pqr.1'] //pass as array if publish multiple recordings
   'state' => true //default is true  
]);

删除录制

\Bigbluebutton::deleteRecordings([
    //'recordID' => 'a3f1s',
    'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);

更新录制

\Bigbluebutton::updateRecordings([
    //'recordID' => 'a3f1s',
    'recordID' => ['a3f1s','a4ff2'] //pass array if multiple delete recordings
]);

配置xml

获取默认配置xml
  • 获取默认配置xml 文档
\Bigbluebutton::getDefaultConfigXml(); //return as xml
//dd(XmlToArray($this->bbb->getDefaultConfigXML()->getRawXml())); //return as array 

设置配置xml

\Bigbluebutton::setConfigXml([
  //'xml'       => new \SimpleXMLElement('<config><modules><localeversion supressWarning="false">0.9.0</localeversion></modules></config>'),
  'xml'       => '<config><modules><localeversion supressWarning="false">0.9.0</localeversion></modules></config>', 
   //pass as string other wise pass as SimpleXmlElement object like above line
  'meetingID' => 'tamku'
]);

钩子

创建钩子

dd(Bigbluebutton::hooksCreate([
      'callbackURL' => 'example.test', //required
      'meetingID' => 'tamku', //optional  if not set then hooks set for all meeting id
      'getRaw' => true //optional
]));

销毁钩子

dd(Bigbluebutton::hooksDestroy([
     'hooksID' => 33
]));

dd(Bigbluebutton::hooksDestroy('53')); //second way

其他

获取API版本

  • 获取API版本
dd(\Bigbluebutton::getApiVersion()); //return as collection 

非官方

开始会议

  • 开始会议(首先检查会议是否存在,如果不存在,则创建会议并加入会议,如果会议存在,则直接加入会议)(默认用户以主持人身份加入)
$url = \Bigbluebutton::start([
    'meetingID' => 'tamku',
    '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

查看Bigbluebutton API测试 ApiMate

查看Bigbluebutton官方开发API Bigbluebutton

支持

Buy Me A Coffee Donate

变更日志

请查看 CHANGELOG 了解最近有哪些变化。

贡献

请查看 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 jigneshjoisar@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。请查看 许可文件 了解更多信息。