Python 服务端集成
安装
Python 3.9+。保存为 classroom.py,配置环境变量后运行 python3 classroom.py。
python3 -m pip install eduskit==0.1.5
HTTP 使用标准库 urllib,接口是同步阻塞调用。异步 Web 服务需在工作线程或任务中调用,避免阻塞事件循环。配置键使用 snake_case;传给 API 的字段使用 camelCase。
创建课堂并签发学生凭证
先配置服务端环境变量。本例使用独立老师和学生账号,头像 URL 为示例值,实际接入时替换为可访问的资源。每次运行都会创建新课堂;originId 仅使用户注册幂等。
import os
from datetime import datetime, timedelta, timezone
from eduskit import Eduskit, EduskitError
def required(name):
value = os.environ.get(name, '').strip()
if not value:
raise ValueError(f'Missing {name}')
return value
def create_demo_classroom():
sdk = Eduskit(
timeout_ms=10_000,
client={
'base_url': required('EDU_SERVER_URL'),
'app_id': required('EDU_APP_ID'),
'app_key': required('EDU_APP_KEY'),
'app_secret': required('EDU_APP_SECRET'),
},
)
teacher = sdk.client.users.register(
originId='demo-teacher-001', nickname='Teacher',
avatar='https://example.com/teacher.png',
)
student = sdk.client.users.register(
originId='demo-student-001', nickname='Student',
avatar='https://example.com/student.png',
)
starts_at = datetime.now(timezone.utc) + timedelta(minutes=15)
classroom = sdk.client.classrooms.create(
name='SDK integration',
startsAt=starts_at.isoformat(timespec='milliseconds').replace('+00:00', 'Z'),
durationMinutes=60,
teacherEduUserId=teacher['eduUserId'],
studentEduUserIds=[student['eduUserId']],
joinPolicy='invite_only',
)
token = sdk.client.auth.issue_token(
eduUserId=student['eduUserId'], originId=student['originId'], expiresIn=3600,
)
return {
'appId': token['appId'],
'classroomId': classroom['classroomId'],
'userId': student['eduUserId'],
'userToken': token['accessToken'],
'expiresAt': token['expiresAt'],
}
if __name__ == '__main__':
try:
entry = create_demo_classroom()
print({'classroomId': entry['classroomId'], 'userId': entry['userId']})
except EduskitError as error:
print(error.error_code, error.status, error.trace_id, error.source)
raise SystemExit(1)
将返回的 userToken 通过业务进课接口交给已通过鉴权的学生。正式系统在排课时创建课堂,在用户进课时签发 Token。
调用约定
sdk.client / sdk.whiteboard_client;issue_token、replace_students、get_ui_config 为 Python 方法名。请求超时配置为 timeout_ms。
成员、权限、课件及上下课方法见课堂 API。白板录制与转码见白板服务端集成。错误与排查说明 HTTP 失败、签名失败和重试边界。
应用业务与租户管理接口
源码构建的 client 提供 50 个应用凭证 HTTP 路由,包含用户、课堂、课件库、直播素材与诊断。参数与返回结构见应用业务接口,完整流程见业务操作示例。独立的租户管理客户端 使用租户会话管理账号、应用、仪表盘和计费。新增方法需要对应版本的 server-api 与 SDK 源码构建;公开包 0.1.5 不包含这些新增方法。