创建课节(多个)
创建课节(多个),批量创建课节,需要 SID、safekey、timeStamp、课程 ID、课节名称、上下课时间、老师账号、老师姓名、云盘目录 ID、学生上台数、录课、直播、回放、唯一标识、课节简介、老师UID、助教UID等。返回创建的课节 ID、课节名称、创建课节的错误码和错误说明。注意:因为目前仅支持 1v1 或者 1v6 高清、全高清,所以选择高清时上台人数只能选择 1 或者 6 。 用户可以传递自定义字段,接口会原样将参数返回。不传递则不会返回。 机构传入唯一标识后,该接口会校验机构下所有已创建课节中是否有此唯一标识,如果有,则返回之前创建成功的课节 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=addCourseClassMultiple
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 | 无 |
teachMode | 否 | 默认为1,不传使用默认值,传错报100错误。 | 教学模式,1=在线教室,2=智慧教室 | 此参数与教室的屏幕模式、摄像头区域、是否自动上台有绑定关系;teachMode=2时,用户传递的isAutoOnstage可能会失效(用户传isAutoOnstage=2(自动上台)会失效)。注意:4.0版本的客户端才支持 |
classJson | 是 | 无 | 课节信息数组 | 无 |
└ 课节信息 | 是 | 无 | 需要创建的课节信息 | 无 |
└ className | 是 | 1-50个字,不区分中英文,超过50字会自动截取为50字 | 课节名称 | 无 |
└ beginTime | 是 | 开课时间须在3年以内 | 上课时间 | Unix Epoch 时间戳(秒单位) |
└ endTime | 是 | 无 | 下课时间 | Unix Epoch 时间戳(秒单位) |
└ teacherUid | 是 | 无 | 教师 UID | 注册用户接口返回的用户 UID |
└ folderId | 否 | 默认为该课程的 folderId | 云盘目录 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 |
└ customColumn | 否 | 1-50字符,超过会自动截取为50字 | 用户自定义标识 | 不为空则原样返回,为空则不返回该字段 |
└ isAutoOnstage | 否 | 0=自动,1=不自动,默认为0,所有非1的数字,都会当成0处理 | 学生进入教室是否自动上台 | 无 |
└ isDc | 否 | 默认为0,不传或传错,都使用默认值 | 是否开启副摄像头,0=不开启,3=开启全高清副摄像头 | 目前只有1v1(seatNum=1),才支持双摄,如果isDc=3,isHd强制写成2(全高清) |
isHd | 否 | 0=非高清,1=高清,2=全高清,默认为0,除过1,所有非0的数字,都会当成0处理 | 是否高清 | 目前仅支持 1V1 或 1V6 高清、全高清 |
└ courseUniqueIdentity | 否 | 例如:45s8d5a6asaa1ssf(1-32 位字符,不符合规则的值接口会返回 100 错误) | 唯一标识 | 机构可传唯一标识,传入此值后,我们会检验机构下所有已创建课节中是否有该唯一标识 |
└ classIntroduce | 否 | 0-1000字,不区分中英文,超过1000字会自动截取为1000字。 | 课节简介 | 无 |
└ ...... | 否 | 无 | 需要创建的课节信息 | 无 |
响应参数
参数名 | 类型 | 示例值 | 含义 |
---|---|---|---|
data | array | [] | 返回 Data 信息数组 |
└ data | number | 1369235 | 添加的课节 ID |
└ className | string | 测试课节-1 | 添加的课节名称 |
└ customColumn | string | 123 | 用户自定义标识 |
└ 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" | 拉流地址 |
└ errno | number | 1 | 该添加课节的错误代码 |
└ error | string | "程序正常执行" | 该添加课节的错误详情 |
error_info | object | 返回信息对象 | |
└ errno | number | 1 | 错误代码 |
└ error | string | "程序正常执行" | 错误详情 |
示例
- HTTP 请求
POST /partner/api/course.api.php?action=addCourseClassMultiple HTTP/1.1
Host: www.classin-sdk.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
SID=2339736&safeKey=5458edceccc78c6698de624e94364285&timeStamp=1493026245&courseId=469383&classJson=[{"className":"Chinese Test-1","beginTime":1493026245,"endTime":1493036245,"teacherUid":"23692341090","folderId":714013,"seatNum":4,"customColumn":123,"isAutoOnstage":0,"isHd":0,"courseUniqueIdentity":457354},{"className":"Chinses Test-2","beginTime":1493026245,"endTime":1493036245,"teacherUid":"23692341090","folderId":714013,"seatNum":6,"customColumn":124,"isAutoOnstage":0,"isHd":0,"courseUniqueIdentity":457354,"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 'classJson= \
[ \
{ \
"className":"测试课节-1", \
"beginTime":1493029525, \
"endTime":1493039525, \
"teacherUid":"1001001",\
"seatNum":4,\
"record":1,\
"live":0,\
"replay":1,\
"assistantUid":"1001002",\
"isAutoOnstage":"0", \
"isHd":"0", \
"courseUniqueIdentity":123457 \
"classIntroduce":"ClassIn,真正的在线教室" \
},\
{\
"className":"测试课节-2",\
"beginTime":1493029525,\
"endTime":1493039525,\
"teacherUid":"1001002",\
"seatNum":4,\
"record":1,\
"live":1,\
"replay":1,\
"assistantUid":"1001001",\
"isAutoOnstage":"0", \
"isHd":"0",\
"courseUniqueIdentity":1234575 \
"classIntroduce":"ClassIn,真正的在线教室" \
}\
]' \
"https://root_url/partner/api/course.api.php?action=addCourseClassMultiple"
响应示例(正常时返回的 json
数据包示例)
{
"data": [
{
"data": 23634,
"className": "测试课节-1",
"customColumn": "123",
"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"
}
},
"errno": 1,
"error": "程序正常执行"
},
{
"data": 23635,
"className": "测试课节-2",
"customColumn": "124",
"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"
}
},
"errno": 1,
"error": "程序正常执行"
}
],
"error_info": {
"errno": 1,
"error": "程序正常执行"
}
}
错误码说明
错误码 | 说明 |
---|---|
1 | 表示成功执行 |
100 | 表示参数不全或错误 |
102 | 表示无权限(安全验证没通过) |
104 | 表示操作失败(未知错误) |
114 | 表示服务器异常 |
119 | 表示结束时间须晚于开课时间 |
120 | 表示开课时间至少一分钟以后 |
122 | 表示老师账号格式不正确 |
133 | 表示已经存在(传过来的 classJson 中唯一标识有重复) |
136 | 表示机构下面没有该老师,请在机构下添加该老师 |
144 | 表示机构下无此课程 |
147 | 表示没有此课程信息 |
149 | 表示课程已删除 |
153 | 表示课程已过期 |
155 | 表示数据数组不可为空 |
160 | 表示机构下无此云盘目录 |
161 | 表示单课创建失败 |
165 | 表示单节课不能少于15分钟且不能超过24小时 |
172 | 表示课程下的学生不能添加为老师 |
173 | 表示课程下的旁听不能添加为老师 |
220 | 表示客户端添加课节失败 |
259 | 表示上台人数设置超出最大限制 |
268 | 表示课节开始时间超出允许范围(开课时间须在3年以内) |
280 | 表示课节创建成功,录课参数设置错误,录课开启失败 |
281 | 表示课节创建成功,视频服务有问题,录课开启失败 |
318 | 表示助教不是本机构老师 |
319 | 表示课程下的学生不能添加为助教 |
320 | 表示课程下的旁听不能添加为助教 |
322 | 课节老师不能添加为助教 |
324 | 表示课节老师加入教师列表失败 |
326 | 表示课节助教加入教师列表失败 |
330 | 表示助教账号格式不正确 |
368 | 表示当前学生上台数不支持高清 |
369 | 该课程/课节类型暂不支持该操作 |
387 | 表示老师已被停用 |
388 | 表示助教已被停用 |
398 | 表示数据已经存在(唯一标识已存在) |
400 | 表示请求数据不合法 |
800 | 表示老师被停用中 |
804 | 表示助教被停用中 |
808 | 表示该设置不支持双摄 |
824 | 表示课节添加成功,课节简介设置失败 |
856 | 表示部分文件夹不存在或不属于本机构 |
890 | 表示课节绑定文件夹个数超出限制 |