Search by

eduskit / server-sdk-php

bleembleem

Eduskit B-end server SDK for classroom and whiteboard APIs

Package info

github.com/eduskit/server-sdk-php

pkg:composer/eduskit/server-sdk-php

Statistics

Installs: 11

Dependents: 0

Suggesters: 0

Stars: 0

v0.1.6 2026-10-19 00:08 UTC

This package is auto-updated.

Last update: 2026-10-19 00:11:58 UTC


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.