eyeson / eyeson-php
eyeson API PHP 库
v2.2.0
2024-06-28 08:36 UTC
Requires
- php: ^5.4 || ^7.0 || ^8.0
Requires (Dev)
- php-vcr/phpunit-testlistener-vcr: ^3.0
- phpunit/phpunit: ^6.2
README
eyeson.team PHP 库 - 在需求时创建强大的视频会议,并轻松将 eyeson 集成到您的 PHP 应用程序中。
该库提供了 eyeson API 的基本功能。查看 API 文档 获取完整概述,如果您发现错误或有功能请求,请创建一个 问题。您可以随时在文档仓库中添加 问题 以解决任何一般疑问。
用法
提供您的 API 密钥,并使用 join 方法快速加入任何房间。您可以选择提供作为第三个参数的 配置选项。
$eyeson = new Eyeson('<your-eyeson-api-key>'); // Join a new eyeson video meeting by providing a user's name. $room = $eyeson->join('Mike', 'standup meeting'); $room->getUrl(); // https://app.eyeson.team?<token> URL to eyeson.team video GUI // If you do not provide a room name, eyeson will create one for you. Note that // users **will join different rooms on every request**. $room = $eyeson->join('mike@eyeson.team'); // You can add additional details to your user, which will be shown in the // GUI. Choosing a unique identifier will keep the user distinct and ensures // actions are mapped correctly to this record. E.g. joining the room twice will // not lead to two different participants in a meeting. $user = [ 'id' => 'mike@eyeson.team', 'name' => 'Mike', 'avatar' => 'https://mikes.website/avatar.png' ]; $room = $eyeson->join($user, 'daily standup');
在运行任何与会议相关的功能(如录制、布局或关闭)之前,请确保会议/房间已准备好。
if (!$room->isReady()) { $room = $eyeson->waitReady($room); }
您可以使用已加入的房间来控制会议,动作将由加入的用户触发,按需使用控制用户。
// Send chat message $eyeson->sendMessage($room, 'hello world!'); // Start a video playback. $playback = $eyeson->playback($room, [ 'url' => 'https://myapp.com/assets/video.webm', 'audio' => true ]); $playback->start(); // Start and stop a recording. $recording = $eyeson->record($room); $recording->start(); // later... $recording->stop(); // check if recording is active $recording->isActive(); // fetch recording details if needed $eyeson->getRecordingById($recordingId); // Create a snapshot $eyeson->createSnapshot($room); // fetch snapshot details if needed $eyeson->getSnapshotById($snapshotId); // Force stop a running meeting. $eyeson->shutdown($room);
在您的应用程序中注册 webhooks 以接收新会议或录制等更新。
// Register a webhook $eyeson->addWebhook('https://my.application/hooks/recordings', 'recording_update'); // Clear webhook if not needed anymore $eyeson->clearWebhook();
您可以从自动布局处理切换到自定义布局,并设置视频讲台的用户位置。注意:使用空字符串表示空位置。此外,您还可以隐藏/显示视频中的姓名插入。
$layout = $eyeson->layout($room); $layout->apply([ 'layout' => 'auto', 'name' => 'present-lower-3', 'users' => ["5eb3a...994", "5eb3a...d06", ...], 'voice_activation' => true, 'show_names' => false ]); // switch back to automatic layout $layout->useAuto(); // apply fixed custom layout $layout->update($userList); // ["5eb3a...994", "5eb3a...d06"] $layout->showNames(); $layout->hideNames();
应用叠加和背景图像。您可以发送纯文本,这将自动创建叠加。
$layer = $eyeson->layer($room); $layer->apply([ 'url' => 'https://myapp.com/assets/meetingBackground.jpg', 'z-index' => -1 ]); $layer->setText('Hello World!'); $layer->setText('This is hot.', 'News!'); $layer->setText('This has an icon.', '', 'https://myapp.com/assets/icon.png'); $layer->setImageURL('https://myapp.com/assets/meetingForeground.png'); $layer->setImageURL('https://myapp.com/assets/meetingBackground.jpg', -1); $layer->clear(); $layer->clear(-1);
错误处理
API 请求可能会抛出 EyesonApiError
,这是一个 PHP Exception
的实例。其 getMessage()
方法包含 API 响应错误消息,而 getCode()
包含 API 响应状态码。
use EyesonTeam\Eyeson\Exception\EyesonApiError; function startRecording($accessKey) { try { $recording = $eyeson->record($accessKey); return $recording->start(); } catch (EyesonApiError $error) { error_log($error->getCode() . ' - ' . $error->getMessage()); return false; } } startRecording($accessKey);
永久链接 API
从 v2.2.0 版本开始,eyeson-php 包含了与 Permalink API 一起使用的函数。您可以在此处了解更多信息:https://docs.eyeson.com/docs/rest/features/permalink
$eyeson = new Eyeson('<your-eyeson-api-key>'); $permalink = $eyeson->permalink->create('<username>', ['name' => '<room_name>', 'widescreen' => true]); echo $permalink->getId(); echo $permalink->getUrl(); echo $permalink->getGuestUrl(); echo $permalink->getUserToken(); echo $permalink->getGuestToken(); $permalink = $eyeson->permalink->update('<permalink-id>', ['widescreen' => false]); $permalink = $eyeson->permalink->getById('<permalink-id>'); $permalink = $eyeson->permalink->getAll(['page' => 1, 'limit' => 50, 'expired' => false]); $permalink = $eyeson->permalink->addUser('<permalink-id>', '<username>', ['id' => '<user-id>']); $eyeson->permalink->removeUser('<permalink-id>', '<user-token>'); $room = $eyeson->permalink->joinMeeting('<user-token>'); $room = $eyeson->permalink->registerGuest('<username>', '<guest-token>', ['id' => '<user-id>']); # works only if $permalink->isStarted() === true $eyeson->permalink->delete('<permalink-id>');
使用 Composer 安装库
# required php version >= 5.4
$ composer require eyeson/eyeson-php
变更日志
请参阅 CHANGELOG.md。
开发
您可以使用 docker 运行测试套件,有关详细信息,请参阅 Makefile。
$ make build
$ make test