eyeson/eyeson-php

eyeson API PHP 库

v2.2.0 2024-06-28 08:36 UTC

This package is auto-updated.

Last update: 2024-09-28 09:15:39 UTC


README

Build Status

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