escolalms / jitsi
Escola LMS 与 jitsi 的集成。
0.0.10
2023-01-05 12:52 UTC
Requires
- php: >=7.4
- escolalms/auth: ^0
- escolalms/core: ^1
- escolalms/settings: ^0
- firebase/php-jwt: ^6|^5
- laravel/framework: >=8.0
Requires (Dev)
- orchestra/testbench: ^6
- phpunit/phpunit: ^9.0
README
jitsi 集成
它做什么
此包仅提供一个门面,您可以使用它来生成 jitsi 播放器的参数
安装
composer require escolalms/jitsi- 设置环境配置以指向 Jitsi 服务 - 使用
env文件或 Settings 包(设置应在设置端点中可见)
return [ 'host' => env('JITSI_HOST', 'meet-stage.escolalms.com'), 'app_id' => env('JITSI_APP_ID', 'meet-id'), 'secret' => env('JITSI_APP_SECRET', 'secret'), 'package_status' => 'enabled', ];
如果服务 app_id 或 secret 将跳过 JWT 令牌生成。
一旦您提供上述信息,就可以生成参数,例如从 tinker
\EscolaLms\Jitsi\Facades\Jitsi::getChannelData(App\Models\User::find(1), "czesc ziomku", true, ['logoImageUrl'=>'https://escola.pl/_next/image?url=%2Fimages%2Flogo-escola.svg&w=3840&q=75'])
将生成类似的东西
[
"data" => [
"domain" => "meet-stage.escolalms.com",
"roomName" => "czescZiomku",
"configOverwrite" => [
"logoImageUrl" => "https://escola.pl/_next/image?url=%2Fimages%2Flogo-escola.svg&w=3840&q=75",
],
"interfaceConfigOverwrite" => [
],
"userInfo" => [
"id" => 1,
"name" => "Osman Kanu",
"displayName" => "Osman Kanu",
"email" => "student@escola-lms.com",
"moderator" => true,
],
"jwt" => "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtZWV0LWlkIiwiYXVkIjoibWVldC1pZCIsInN1YiI6Im1lZXQtc3RhZ2UuZXNjb2xhbG1zLmNvbSIsImV4cCI6MTY0MzY1OTM1NCwicm9vbSI6ImN6ZXNjWmlvbWt1IiwidXNlciI6eyJpZCI6MSwibmFtZSI6Ik9zbWFuIEthbnUiLCJkaXNwbGF5TmFtZSI6Ik9zbWFuIEthbnUiLCJlbWFpbCI6InN0dWRlbnRAZXNjb2xhLWxtcy5jb20iLCJtb2RlcmF0b3IiOmZhbHNlfX0.xnFV-Kk63c3YRADzkSQLz6FP71yfEUO7Q53isFGkv_U",
],
"host" => "meet-stage.escolalms.com",
"url" => "https://meet-stage.escolalms.com/czescZiomku?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtZWV0LWlkIiwiYXVkIjoibWVldC1pZCIsInN1YiI6Im1lZXQtc3RhZ2UuZXNjb2xhbG1zLmNvbSIsImV4cCI6MTY0MzY1OTM1NCwicm9vbSI6ImN6ZXNjWmlvbWt1IiwidXNlciI6eyJpZCI6MSwibmFtZSI6Ik9zbWFuIEthbnUiLCJkaXNwbGF5TmFtZSI6Ik9zbWFuIEthbnUiLCJlbWFpbCI6InN0dWRlbnRAZXNjb2xhLWxtcy5jb20iLCJtb2RlcmF0b3IiOmZhbHNlfX0.xnFV-Kk63c3YRADzkSQLz6FP71yfEUO7Q53isFGkv_U",
]
将此对象传递到生成 jitsi 通话的端点。您在开始之前一定要 阅读手册。
示例
import React from "react"; import JitsiMeeting from "@jitsi/web-sdk/lib/components/JitsiMeeting"; import type { IJitsiMeetExternalApi, IJitsiMeetingProps, } from "@jitsi/web-sdk/lib/types"; const dataFromEndpoint = { domain: "meet-stage.escolalms.com", roomName: "czescZiomku", configOverwrite: {}, interfaceConfigOverwrite: {}, userInfo: { displayName: "Osman Kanu", email: "student@escola-lms.com", }, jwt: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtZWV0LWlkIiwiYXVkIjoibWVldC1pZCIsInN1YiI6Im1lZXQtc3RhZ2UuZXNjb2xhbG1zLmNvbSIsImV4cCI6MTY0MzY1OTM1NCwicm9vbSI6ImN6ZXNjWmlvbWt1IiwidXNlciI6eyJpZCI6MSwibmFtZSI6Ik9zbWFuIEthbnUiLCJkaXNwbGF5TmFtZSI6Ik9zbWFuIEthbnUiLCJlbWFpbCI6InN0dWRlbnRAZXNjb2xhLWxtcy5jb20iLCJtb2RlcmF0b3IiOmZhbHNlfX0.xnFV-Kk63c3YRADzkSQLz6FP71yfEUO7Q53isFGkv_U", }; const data: IJitsiMeetingProps = { ...dataFromEndpoint, onApiReady: (api) => console.log("api ready", api), }; function App() { return ( <div className="App"> <JitsiMeeting {...data} /> </div> ); } export default App;
测试
运行 ./vendor/bin/phpunit --filter 'EscolaLms\\Jitsi\\Tests' 以运行测试。请参阅 tests 文件夹,作为文档附录的良好起点。