创建课节(单个)
创建课节,创建单个课节,需要提供 SID,safekey,timeStamp,课程 ID,课节名称,上课时间,下课时间,老师账号,老师姓名,云盘目录 ID,学生上台人数和录播等各部分详情,助教,是否上台,是否高清、唯一标识、课节简介、老师UID、助教UID。其中 SID、safeKey、timeStamp、courseId、className、beginTime、endTime、teacherUid 为必填项。返回创建成功后的课节 ID 和执行后的说明。注意:因为目前仅支持 1v1 或者 1v6 高清、全高清,所以选择高清时上台人数只能选择 1 或者 6 。 机构传入唯一标识后,该接口会校验机构下所有已创建课节中是否有此唯一标识,如果有,则返回之前创建成功的课节 ID。如果没有,则正常执行。 机构传入唯一标识后,该接口会校验机构下所有已创建课节中是否有此唯一标识,如果有,则返回之前创建成功的课节 ID。如果没有,则正常执行。
注意事项:
- 如果课节设置录课(没有设置直播),则more_data返回 课节直播播放器地址 ,拉流地址为空;
- 如果课节设置录播、直播,则会给该课节绑定三个拉流地址(RTMP,HLS 和 FLV),more_data返回课节直播播放器地址和拉流地址(不论该课节后续是否取消直播,这三个地址仍然存在且与该课节绑定);
- 当课节没有设置录课,则more_data里的课节直播播放器地址和拉流地址均为空。
附拉流地址优缺点对比,以下对比仅供参考。
RTMP | HLS | FLV(HTTP-FLV) | |
---|---|---|---|
全称 | Real Time Message Protocol | HTTP Liveing Streaming | RTMP over HTTP |
协议 | TCP 长连接 | HTTP 短连接 | HTTP 长连接 |
原理 | 每个时刻的数据收到后立刻转发 | 集合一段时间的数据,生成 ts 切片文件(三片),并更新 m3u8 索引 | 同 RTMP,使用 HTTP 协议(80 端口) |
延时 | 1-3s | 5-20s(依切片情况) | 1-3s |
Web 支持 | H5 中需要使用插件 | 支持 H5 | H5 中需要使用插件 |
其他 | 跨平台支持较差,需要 Flash 技术支持 | 播放时需要多次请求,对于网络质量要求高 | 需要 Flash 技术支持,不支持多音频流、多视频流,不便于 seek(即拖进度条) |
在返回的课节直播播放器页面我们植入了聊天室功能。为了方便您搜集潜在客户信息,所有用户需要填写手机号登陆后才可以聊天,如下图。当然,为了您更便捷的使用此功能,我们提供了您机构下所有学生免登陆的操作,请参考下方的 直播播放器中聊天室免二次登录。
直播播放器中聊天室免二次登录
- 当您通过本接口获得播放器链接之后
- 例:
https://www.eeo.cn/live.php?lessonKey=1ca102d29e61175f
- 您需要增加 account、nickname、checkCode 拼接在
https://www.eeo.cn/live_partner.php?lessonKey=00d1c98a91c52568
地址后边。 注意:这个免二次登录地址与直播播放器地址不是同一个地址
- 例:
- 具体参数及规则如下
- 具体参数有 secret、lessonKey、account、nickname、checkCode
- secret 为SECRET,在 sdk管理后台 API 对接密钥处可获得
- 从直播器地址中可以获得 lessonKey
- account 为学生账号,nickname 为学生昵称
- checkCode = md5(secret+lessonKey+account+nickname)
- URL 拼接示例
https://www.eeo.cn/live_partner.php?lessonKey=00d1c98a91c52568&account=13700000000&nickname=classin&checkCode=d8c57caf088529b4ddd15b0f694d847b
URL
https://root_url/partner/api/course.api.php?action=addCourseClass
HTTP Request Methods
- POST
编码格式
- UTF-8
请求参数
key | 必填 | 更多限制 | 说明 | 规则说明 |
---|---|---|---|---|
SID | 是 | 无 | 机构认证 ID | 通过 sdk管理后台 申请机构认证可获得 |
safeKey | 是 | 固定 32 位全小写字符 | 机构认证安全密钥 | safeKey=MD5(SECRET+timeStamp) |
timeStamp | 是 | 无 | 当前调用接口20分钟以内的 Unix Epoch 时间戳 | Unix Epoch 时间戳是 1970年1月1日 00:00:00 (世界标准时间) 起经过的秒数 |
courseId | 是 | 无 | 课程 ID | 无 |
className | 是 | 1-50个字符,不区分中英文,超过50会自动截取为50字 | 课节名称 | 无 |
beginTime | 是 | 开课时间须在3年以内 | 上课时间 | Unix Epoch 时间戳(秒单位) |
endTime | 是 | 无 | 下课时间 | Unix Epoch 时间戳(秒单位) |
teacherUid | 是 | 无 | 教师 UID | 注册用户接口返回的用户 UID |
folderId | 否 | 不传默认为课程授权云盘ID | 云盘目录ID | 支持传多个不重复的文件夹ID(最多10个);多个文件夹ID之间用英文逗号分隔,例如"12,13,15";如果多个文件夹ID有重复,返回100错误码 |
seatNum | 否 | 默认为6,最大上限值调整为12 | 学生上台数 | 无 |
record | 否 | 默认为 0 ,所有非 1 的数字,都会当成 0 处理 | 录课(0 关闭,1 开启) | 若需要直播或者回放,则必须选择录课,否则无法无法开启直播、回放 |
live | 否 | 默认为 0 ,所有非 1 的数字,都会当成 0 处理 | 直播(0 关闭,1 开启) | 若需要直播,则必须开启录课 |
replay | 否 | 默认为 0 ,所有非 1 的数字,都会当成 0 处理 | 回放(0 关闭,1 开启) | 若需要回放,则必须开启录课 |
assistantUid | 否 | 此参数要么不传,要么传uid值,请不要传空 | 助教 UID | 注册用户接口返回的用户 UID |
isAutoOnstage | 否 | 0=自动,1=不自动,默认为0,所有非1的数字,都会当成0处理 | 学生进入教室是否自动上台 | 无 |
isHd | 否 | 0=非高清,1=高清,2=全高清,默认为0,除过1,所有非0的数字,都会当成0处理 | 是否高清 | 目前仅支持 1V1 或 1V6 高清、全高清 |
isDc | 否 | 默认为0,不传或传错,都使用默认值 | 是否开启副摄像头,0=不开启,3=开启全高清副摄像头 | 目前只有1v1(seatNum=1),才支持双摄,如果isDc=3,isHd强制写成2(全高清) |
courseUniqueIdentity | 否 | 例如:45s8d5a6asaa1ssf(1-32 位字符,不符合规则的值接口会返回 100 错误) | 唯一标识 | 机构可传唯一标识,传入此值后,我们会检验机构下所有已创建课节中是否有该唯一标识 |
classIntroduce | 否 | 0-1000字,不区分中英文,超过1000会自动截取为1000字。 | 课节简介 | 无 |
teachMode | 否 | 默认为1,不传使用默认值,传错报100错误。 | 教学模式,1=在线教室,2=智慧教室 | 此参数与教室的屏幕模式、摄像头区域、是否自动上台有绑定关系;teachMode=2时,用户传递的isAutoOnstage可能会失效(用户传isAutoOnstage=2(自动上台)会失效)。注意:4.0版本的客户端才支持 |
响应参数
参数名 | 类型 | 示例值 | 含义 |
---|---|---|---|
data | number | 1340801 | 创建成功返回的课节 ID |
└ more_data | array | [] | 返回 Data 信息数组 |
└ live_url | string | https://www.eeo.cn/live.php?lessonKey=0fdc12bc3558164d | 课节直播播放器地址 |
└ live_info | array | [] | 返回 Data 信息数组 |
└ RTMP | string | "rtmp://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd" | 拉流地址 |
└ HLS | string | "https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.m3u8?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd" | 拉流地址 |
└ FLV | string | "https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.flv?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd" | 拉流地址 |
error_info | object | 返回信息对象 | |
└ errno | number | 1 | 错误代码 |
└ error | string | "程序正常执行" | 错误详情 |
示例
- HTTP 请求
POST /partner/api/course.api.php?action=addCourseClass HTTP/1.1
Host: www.classin-sdk.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
SID=2339736&safeKey=e2f53f7a1b51bc86e52bbd080d8bf0f0&timeStamp=1493350659&courseId=490583&className=Chinese-10&beginTime=1493607694&endTime=1493609694&teacherUid=1001001&folderId=&seatNum=6&record=1&live=0&replay=1&assistantUid=1001002&isAutoOnstage=0&isHd=0&courseUniqueIdentity=54421&classIntroduce=ClassIn,真正的在线教室
- Shell cURL模拟请求指令
curl -H "Content-Type: application/x-www-form-urlencoded" -X "POST" \
-d "SID=1234567" \
-d "safeKey=0f7781b3033527a8cc2b1abbf45a5fd2" \
-d "timeStamp=1484719085" \
-d "courseId=442447" \
-d "className=测试课节-1" \
-d "beginTime=1492506000" \
-d "endTime=1492507800" \
-d "teacherUid=1001001" \
-d "folderId=22418" \
-d "seatNum=6" \
-d "record=1" \
-d "live=1" \
-d "replay=1" \
-d "assistantUid=1001002" \
-d "isAutoOnstage=0" \
-d "isHd=0" \
-d "courseUniqueIdentity=4565234" \
-d "classIntroduce=ClassIn,真正的在线教室" \
"https://root_url/partner/api/course.api.php?action=addCourseClass"
响应示例(正常时返回的 json
数据包示例)
{
"data": 23623,
"more_data": {
"live_url": "https://www.eeo.cn/live.php?lessonKey=0fdc12bc3558164d",
"live_info": {
"RTMP": "rtmp://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd",
"HLS": "https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.m3u8?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd",
"FLV": "https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.flv?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd"
}
},
"error_info": {
"errno": 1,
"error": "程序正常执行"
}
}
错误码说明
错误码 | 说明 |
---|---|
1 | 表示成功执行 |
100 | 表示参数不全或错误 |
102 | 表示无权限(安全验证没通过) |
104 | 表示操作失败(未知错误) |
114 | 表示服务器异常 |
119 | 表示结束时间须晚于开课时间 |
120 | 表示开课时间至少一分钟以后 |
136 | 表示机构下面没有该老师,请在机构下添加该老师 |
144 | 表示机构下无此课程 |
147 | 表示没有此课程信息 |
149 | 表示课程已删除 |
153 | 表示课程已过期 |
160 | 表示机构下无此云盘目录 |
165 | 表示单节课不能少于15分钟且不能超过24小时 |
172 | 表示课程下的学生不能添加为老师 |
173 | 表示课程下的旁听不能添加为老师 |
259 | 表示上台人数设置超出最大限制 |
268 | 表示课节开始时间超出允许范围(课节开始时间须在3年以内) |
280 | 表示课节创建成功,录课参数设置错误,录课开启失败 |
281 | 表示课节创建成功,视频服务有问题,录课开启失败 |
318 | 表示助教不是本机构老师 |
319 | 表示课程下的学生不能添加为助教 |
320 | 表示课程下的旁听不能添加为助教 |
322 | 表示课节老师不能添加为助教 |
323 | 表示助教购买课节失败 |
324 | 表示课节老师加入教师列表失败 |
326 | 表示课节助教加入教师列表失败 |
330 | 表示助教账号格式不正确 |
368 | 当前学生上台数不支持高清 |
369 | 该课程/课节类型暂不支持该操作 |
387 | 表示老师已被停用 |
388 | 表示助教已被停用 |
398 | 表示数据已经存在(唯一标识已存在) |
400 | 表示请求数据不合法 |
800 | 表示老师被停用中 |
804 | 表示助教被停用中 |
808 | 表示该设置不支持双摄 |
824 | 表示课节添加成功,课节简介设置失败 |
856 | 表示部分文件夹不存在或不属于本机构 |
890 | 表示课节绑定文件夹个数超出限制 |