eduskit / server-sdk-php
Eduskit B-end server SDK for classroom and whiteboard APIs
Requires
- php: >=8.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
PHP 8.1+ B 端 Server SDK。$sdk->client 调课堂 server-api,$sdk->whiteboardClient 调白板 server-api。
方法名为 camelCase,JSON 字段 camelCase。无 Composer 运行时依赖(使用 curl)。
概念与方法表见 docs/overview.md、docs/api.md。
安装
composer require eduskit/server-sdk-php
本仓库无 Composer 也可直接 require src/*.php:
php tests/EduskitTest.php
初始化
use Eduskit\Eduskit; use Eduskit\EduskitError; $sdk = new Eduskit([ 'timeoutMs' => 10000, 'lang' => 'zh-CN', 'client' => [ 'baseUrl' => 'http://localhost:3112', 'appId' => getenv('EDU_APP_ID'), 'appKey' => getenv('EDU_APP_KEY'), 'appSecret' => getenv('EDU_APP_SECRET'), ], 'whiteboardClient' => [ 'baseUrl' => 'http://localhost:3012', 'appId' => getenv('WB_APP_ID'), 'appKey' => getenv('WB_APP_KEY'), 'appSecret' => getenv('WB_APP_SECRET'), ], ]);
两侧均可选。测试可传入 'fetch' => callable 拦截 HTTP。
课堂 $sdk->client
$user = $sdk->client->users->register([ 'originId' => 'stu_001', 'nickname' => '小明', 'avatar' => 'https://example.com/a.png', ]); $token = $sdk->client->auth->issueToken(['eduUserId' => $user['eduUserId'], 'originId' => 'stu_001']); $classroom = $sdk->client->classrooms->create([ 'name' => '一年级数学', 'startsAt' => '2026-08-17T10:00:00.000Z', 'durationMinutes' => 60, 'teacherEduUserId' => $user['eduUserId'], ]); $id = $classroom['classroomId']; $sdk->client->classrooms->start($id); $sdk->client->classrooms->members->add($id, ['eduUserId' => $user['eduUserId'], 'role' => 'student']); $sdk->client->classrooms->members->replaceStudents($id, ['eduUserIds' => [$user['eduUserId']]]); $sdk->client->classrooms->permissions->set($id, $user['eduUserId'], [ 'permission' => 'camera', 'effect' => 'grant', 'operatorEduUserId' => $user['eduUserId'], ]); $sdk->client->classrooms->coursewares->bind($id, ['coursewareIds' => ['cw_xxx']]); $sdk->client->app->getUiConfig();
| 方法 | 说明 |
|---|---|
users->register |
注册/更新 C 端用户 |
auth->issueToken |
签发 C 端 accessToken |
classrooms->create/start/end |
课堂生命周期 |
classrooms->members->add/list/replaceStudents |
成员 |
classrooms->permissions->get/set/clear |
权限 |
classrooms->coursewares->list/bind/unbind |
课件 |
app->getUiConfig / setUiConfig |
App UI |
白板 $sdk->whiteboardClient
$sdk->whiteboardClient->auth->issueRoomToken([ 'roomId' => 'room_1', 'userId' => $user['eduUserId'], 'role' => 'host', 'expiresIn' => 3600, ]); $session = $sdk->whiteboardClient->recordings->start('room_1', ['externalRef' => 'lesson_001']); $sdk->whiteboardClient->recordings->enqueueVideoExport($session['recordingId'], ['profile' => 'hd']); $sdk->whiteboardClient->files->convert(['sourceUrl' => 'https://cdn.example.com/lesson.pptx']); $sdk->whiteboardClient->files->getConvertJob('job_xxx');
| 方法 | 说明 |
|---|---|
auth->issueRoomToken |
签发 Room Token |
recordings->start/stop/list/get |
录制 |
recordings->registerMediaAsset / deleteMediaAsset |
媒体资产 |
recordings->enqueueVideoExport / getVideoExport |
视频导出 |
captures->create/list |
截图 |
files->convert / getConvertJob |
转码 |
错误
try { $sdk->client->auth->issueToken(['eduUserId' => '']); } catch (EduskitError $e) { error_log($e->errorCode . ' ' . $e->status . ' ' . $e->traceId); }
$sdk->client->lastTraceId() / $sdk->whiteboardClient->lastTraceId()。
Application business APIs
Use the application-credential client for user lists and status, classroom queries and updates, courseware libraries, live assets, attendance, entry diagnostics, and activity logs. No console tenant token is required. See the complete API reference. New methods require a matching server-api deployment and a source SDK build.
Console management
ConsoleClient exposes tenant management, authentication, applications, users, classrooms, courseware, live video, diagnostics, dashboards, and billing. Use the console-api URL and a tenant access token. Application-scoped methods require appId; app credentials are not sent by this client. This API is available in this source build.
<?php require __DIR__ . '/vendor/autoload.php'; $c = new \Eduskit\ConsoleClient([ 'baseUrl' => getenv('EDU_CONSOLE_URL'), 'accessToken' => getenv('EDU_TENANT_ACCESS_TOKEN'), ]); $apps = $c->apps->list(); $users = $c->users->list(getenv('EDU_APP_ID'), ['page' => 1, 'pageSize' => 20]);
Full API fields and workflows: Console management.