Lưu ý: Hiện tại độ phân giải HD và Full HD chỉ hỗ trợ cho lớp 1v1 hoặc 1v6. Kể từ ngày 01/11/2024, ClassIn sẽ giới hạn lại số lớp (Lessons) được tạo trong một khóa (Course) lại theo mặc định là 2000 lớp/khóa (lessons/course) khi thao tác qua API.
Sau khi mã định danh được truyền, hệ thống sẽ xác minh xem mã định danh này có tồn tại trong tất cả các lớp đã tạo của hệ thống hay không. Nếu có, trả về ID của lớp đã được tạo thành công trước đó. Nếu không, thực hiện bình thường.
Tạo hàng loạt lớp học (tạo nhiều buổi cùng lúc), cần các tham số SID, safekey, timeStamp, ID lớp, tên lớp, thời gian lớp, tài khoản giáo viên, tên giáo viên, ID thư mục đám mây, số lượng học sinh tham gia, ghi hình lớp, phát trực tiếp, phát lại, mã định danh, giới thiệu lớp, UID giáo viên, UID giáo viên phụ, v.v. Sau khi tạo thành công, hệ thống sẽ trả về ID lớp đã tạo, tên lớp, mã lỗi khi tạo lớp và mô tả lỗi.
Ghi chú:
- Nếu lớp học được cài đặt ghi hình (không cài đặt phát trực tiếp), trường more_data sẽ trả về link phát lại video ghi hình lớp học, còn link livestream sẽ trống.
- Nếu lớp học được cài đặt ghi hình và phát trực tiếp, ba địa chỉ pull flow video (RTMP, HLS và FLV) sẽ được liên kết với lớp học, và trường more_data sẽ trả về link phát lại và link livestream của lớp học (ba địa chỉ này vẫn tồn tại và liên kết với lớp học bất kể việc phát sóng trực tiếp của lớp học có bị hủy hay không).
- Khi lớp học không được ghi hình, link phát lại và link livestream trong more_data sẽ trống.
- Để bật chức năng phát trực tiếp, vui lòng bật chức năng ghi hình trước, nếu không, việc phát trực tiếp sẽ không khả dụng.
RTMP | HLS | FLV(HTTP-FLV) | |
---|---|---|---|
The full name | Real Time Message Protocol | HTTP Liveing Streaming | RTMP over HTTP |
agreement | Long TCP connection | Short HTTP connection | Long HTTP connection |
The principle of | Data at each moment is forwarded as soon as it is received | Collect data for a period of time, generate ts slice files (three slices), and update the m3u8 index | With RTMP, using HTTP protocol (port 80) |
Time delay | 1-3s | 5-20s(depending on the slice) | 1-3s |
Web support | Plug-ins are required in H5 | Support the H5 | Plug-ins are required in H5 |
other | Cross-platform support is poor, need Flash technical support | Playback needs multiple requests, high quality requirements for the network | Need Flash technical support, do not support multi-audio stream, multi-video stream, not easy to seek (i.e. drag progress bar) |
Tại trang phát sóng trực tiếp của lớp học được tạo, chúng tôi tích hợp tính năng khung chat trực tuyến. Ngoài ra, để giúp cho nhà trường thuận tiện hơn trong việc thu thập thông tin, khung chat cho phép thiết lập yêu cầu người dùng đăng nhập trước khi gửi tin nhắn. Chức năng yêu cầu đăng nhập này vẫn có thể được thiết lập để học sinh có thể vào mà không cần đăng nhập lại theo hướng dẫn sau đây:

Thiết lập miễn đăng nhập cho khung chat tại trang Livestream
- Sau khi bạn có link phát trực tiếp
- Ví dụ:
https://www.eeo.cn/live.php?lessonKey=1ca102d29e61175f
- Bạn cần thêm
account、nickname、checkCode
vào cuối đường linkhttps://live.eeo.cn/live_partner.html?lessonKey=00d1c98a91c52568
。 - Lưu ý: link miễn đăng nhập này khác với link phát trực tiếp
- Ví dụ:
- Các tham số cụ thể và quy tắc như sau
- Các tham số
secret, lessonKey, account, nickname, checkCode
secret
là dãy SECRET xem tại Trang quản lý classin.com trong mục APIlessonKey
lấy từ link phát trực tiếpaccount
là tài khoản của học sinh,nickname
là biệt danh của học sinh- checkCode = md5(secret+lessonKey+account+nickname)
- Các tham số
- Link mẫu
https://live.eeo.cn/live_partner.html?
lessonKey=00d1c98a91c52568&account=13700000000&nickname=classin&checkCode=d8c57caf088529b4ddd15b0f694d847b
Note: currently, only 1v1 or 1v6 hd and full hd are supported, so the number of people who choose hd can only choose 1 or 6. From 11/01/2024, ClassIn will limit the number of classes (Lessons) created in a course (Course) to 2000 classes/course (lessons/course) by default when operating via API.
Create class sessions (multiple), batch create class sessions, need ‘SID, safekey, timeStamp, class ID, class name, class time, teacher account, teacher name, cloud disk directory ID, number of student attendance, class recording, live broadcast, playback, unique identification, class introduction, teacher UID, co-teacher UID’, etc.Returns the class ID created, the class name, the error code for creating the class, and the error description. Users can pass custom fields, and the interface returns the parameters as-is. No pass, no return.After the unique identity is passed in by the mechanism, the interface verifies whether there is such a unique identity in all created classes under the mechanism, and if so, returns the class ID that was successfully created before.If not, execute normally.
Note:
- if class recording is set for class (live streaming is not set), more_data returns the address of the live streaming player for class, and the pull stream address is empty;
- If a class is set to record and broadcast, three pull stream addresses (RTMP, HLS and FLV) will be bound to the class, and more_data will return the live player address and pull stream address of the class (these three addresses will still exist and be bound to the class regardless of whether the live broadcast of the class is cancelled or not).
- When the session is not recorded, the session live player address and pull stream address in more_data are empty.
- To enable the recording of the on-the-spot scene, please turn on the record function first, otherwise, the recording of the on-the-spot scene is not available.
The following comparison is for reference only.
RTMP | HLS | FLV(HTTP-FLV) | |
---|---|---|---|
The full name | Real Time Message Protocol | HTTP Liveing Streaming | RTMP over HTTP |
agreement | Long TCP connection | Short HTTP connection | Long HTTP connection |
The principle of | Data at each moment is forwarded as soon as it is received | Collect data for a period of time, generate ts slice files (three slices), and update the m3u8 index | With RTMP, using HTTP protocol (port 80) |
Time delay | 1-3s | 5-20s(depending on the slice) | 1-3s |
Web support | Plug-ins are required in H5 | Support the H5 | Plug-ins are required in H5 |
other | Cross-platform support is poor, need Flash technical support | Playback needs multiple requests, high quality requirements for the network | Need Flash technical support, do not support multi-audio stream, multi-video stream, not easy to seek (i.e. drag progress bar) |
In the live player page of the returned lesson, we implanted the chat room function.In order to facilitate you to collect the information of potential customers, all users need to fill in their mobile phone Numbers before they can chat, as shown in the figure below.Of course, in order to make it more convenient for you to use this function, we provide all students in your institution without logging in, please refer to the following
The chat room in the live player is exempted from secondary login #
- After you get the player link through this interface
- Example:
https://www.eeo.cn/live.php?lessonKey=1ca102d29e61175f
- you need
account、nickname、checkCode
Joining together inhttps://live.eeo.cn/live_partner.html?lessonKey=00d1c98a91c52568
After the address. Note: this free secondary login address is not the same address as the live player address
- Example:
- The specific parameters and rules are as follows
- Specific parameters are
secret, lessonKey, account, nickname, checkCode
- secret is SECRET,Available at the eeo.cn API for docking keysl
- lessonKey can be obtained from the broadcast address
- account is student account,nickname is student nickname
- checkCode = md5(secret+lessonKey+account+nickname)
- Specific parameters are
- URL Stitching sample
https://live.eeo.cn/live_partner.html?lessonKey=00d1c98a91c52568&account=13700000000&nickname=classin&checkCode=d8c57caf088529b4ddd15b0f694d847b
URL
https://api.eeo.cn/partner/api/course.api.php?action=addCourseClassMultiple
HTTP Request Methods #
- POST
Coding format #
- UTF-8
Request data #
key | Bắt buộc | Yêu cầu thêm | Mô tả | Hướng dẫn |
---|---|---|---|---|
SID | Bắt buộc | — | ID của trường | Xem dữ liệu này tại Trang quản lý classin.com trong mục API |
safeKey | Bắt buộc | Fixed 32-bit all lowercase characters | Khóa bảo mật xác thực trường học | safeKey=MD5(SECRET+timeStamp) |
timeStamp | Bắt buộc | — | Theo Unix Epoch timestamp & có hiệu lực trong vòng 20 phút | Thời gian UNIX Epoch là số giây đã trôi qua kể từ 00:00:00 (giờ chuẩn quốc tế) vào ngày 1 tháng 1 năm 1970 |
courseId | Bắt buộc | — | Course ID | — |
classJson | Bắt buộc | — | Class information array | — |
└ Class information | Bắt buộc | — | Lesson information to create | — |
└ className | Bắt buộc | Độ dài của phần này cho phép tối đa 50 ký tự | Tên lớp | — |
└ beginTime | Bắt buộc | Lớp học cần có thời gian bắt đầu trong vòng 3 năm tính từ thời điểm hiện tại | Thời gian bắt đầu lớp học | begin time value = Unix Epoch timeStamp |
└ endTime | Bắt buộc | — | Thời gian kết thúc | end time value = Unix Epoch timeStamp |
└ teacherUid | Bắt buộc | — | UID của giáo viên | UID hệ thống trả về khi đăng ký tài khoản thành công |
└ folderId | Không bắt buộc | Mặc định là folderID của khóa học | — | — |
└ seatNum | Không bắt buộc | Mặc định là 6 và tối đa là 12 camera trên bục giảng | Số camera trên bục giảng ngoài camera giáo viên | Nếu tham số được truyền là 0 thì lớp sẽ được tạo theo dạng 1v0 (đồng nghĩa với việc chỉ có camera giáo viên hiển thị trên bục giảng) |
└ record | Không bắt buộc | Mặc định là 0, các số khác không phải 1 sẽ được hiểu là 0 | Ghi hình (0=tắt, 1=bật) | Nếu bạn cần phát trực tiếp hoặc phát lại, bạn phải chọn ghi hình bài giảng, nếu không bạn sẽ không thể mở phát trực tiếp hoặc phát lại |
└ recordScene | Không bắt buộc | Mặc định là 0, các số còn lại khác 1 sẽ được hiểu là 0 | Ghi hình camera của giáo viên 0=tắt; 1=mở | Sau khi bật tính năng này, camera của giáo viên sẽ được ghi hình lại. Video ghi hình có thể xem tại link phát lại. Điều kiện để bật tính năng này là lớp học phải có mở chế độ ghi hình (record=1), nếu không hệ thống sẽ báo lỗi khi truyền tham số recordScene |
└ live | Không bắt buộc | Mặc định là 0, các số còn lại khác 1 sẽ được hiểu là 0 | Phát trực tiếp 0=tắt; 1=mở | — |
└ replay | Không bắt buộc | Mặc định là 0, các số còn lại khác 1 sẽ được hiểu là 0 | Phát lại ghi hình lớp học 0=tắt; 1=mở | — |
└ assistantUid | Không bắt buộc | Truyền ít nhất một assistantUid hoặc không truyền tham số này, vui lòng không truyền dữ liệu trống | UID của trợ giảng | UID hệ thống trả về khi đăng ký tài khoản thành công |
└ assistantUids | Không bắt buộc | Truyền ít nhất một danh sách assistantUids dạng JSON và Int hoặc không truyền tham số này, vui lòng không truyền dữ liệu trống | Danh sách UID của nhiều trợ giảng | UID hệ thống trả về khi đăng ký tài khoản thành công |
└ customColumn | Không bắt buộc | Tối đa 50 ký tự | — | Nếu trường này có thông tin thì hệ thống sẽ trả về dữ liệu tương ứng, còn nếu để trống thì không có dữ liệu trả về |
└ isAutoOnstage | Không bắt buộc | Mặc định là 0, các số còn lại khác 1 sẽ được hiểu là 0 | 0=tự động; 1=không tự động | Thiết lập cho học sinh tự động lên bục khi vào lớp, nếu không thì giáo viên phải thao tác đưa học sinh lên bục thủ công |
└ isHd | Không bắt buộc | Mặc định là 0, các số còn lại khác 1 hoặc 2 sẽ được hiểu là 0 | 0=không HD ,1=HD,2=Full HD | Hiện tại chỉ hỗ trợ hiển thị camera HD hoặc Full HD cho lớp 1V1 hoặc 1V6 |
└ courseUniqueIdentity | Không bắt buộc | Ví dụ: 45s8d5a6asaa1ssf (1-32 bit characters, định dạng không hợp lệ sẽ trả về mã lỗi 100) | Mã định danh | Cơ chế có thể truyền một mã định danh. Sau khi giá trị này được truyền vào, chúng tôi sẽ xác minh xem mã định danh này có tồn tại trong tất cả các lớp đã tạo dưới cơ chế này hay không |
└ classIntroduce | Không bắt buộc | Phần giới thiệu/ mô tả lớp có thể để trống, độ dài của phần này cho phép tối đa 1000 ký tự | — | — |
└ …… | Không bắt buộc | — | Thông tin lớp học | — |
Response data #
Key | Định dạng | Phản hồi | Ý nghĩa |
---|---|---|---|
data | array | [] | Returns an array of Data information |
└ data | number | 1369235 | Sau khi tạo lớp thành công thì hệ thống sẽ trả về ClassID |
└ className | string | 测试课节-1 | Added class name |
└ customColumn | string | 123 | User – defined identity |
└ more_data | array | [] | Returns an array of Data information |
└ live_url | string | https://www.eeo.cn/live.php?lessonKey=0fdc12bc3558164d | Lesson live player address |
└ live_info | array | [] | Returns an array of Data information |
└ RTMP | string | “rtmp://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd” | Pull flow address |
└ HLS | string | “https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.m3u8?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd“ | Pull flow address |
└ FLV | string | “https://liveplay.eeo.cn/eeolive/576f5a8c97d9-183291632119a96.flv?txSecret=f4bfe1afcf2592de61c11af9e0954c00&txTime=7d8d37cd“ | Pull flow address |
└ data | number | 1369235 | Add class ID |
└ className | string | Test class-1 | Add the class name |
└ errno | number | 1 | Error code for this class |
└ error | string | “Normal execution” | Error list for this class |
error_info | object | Return message object | |
└ errno | number | 1 | Mã lỗi |
└ error | string | “Program normal execution” | Thông tin lỗi |
Sample #
- HTTP request
POST /partner/api/course.api.php?action=addCourseClassMultiple HTTP/1.1
Host: www.eeo.cn
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,"watchByLogin":0,"allowUnloggedChat":1",isHd":0,"courseUniqueIdentity":457354},{"className":"Chinses Test-2","beginTime":1493026245,"endTime":1493036245,"teacherUid":"23692341090","folderId":714013,"seatNum":6,"customColumn":124,"isAutoOnstage":0,,"watchByLogin":0,"allowUnloggedChat":1"isHd":0,"courseUniqueIdentity":457354,"classIntroduce ":"ClassIn,真正的在线教室"}]
- Shell cURL simulates request instructions
- Shell cURL analog request instruction
```bash
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",\
"teacherName":"教师1",\
"seatNum":4,\
"record":1,\
"live":0,\
"replay":1,\
"assistantUids": [1001002,1001003,1001004],\
"isAutoOnstage":"0", \
"isHd":"0", \
"courseUniqueIdentity":123457 \
"classIntroduce":"ClassIn,真正的在线教室" \
},\
{\
"className":"测试课节-2",\
"beginTime":1493029525,\
"endTime":1493039525,\
"teacherUid":"1001002",\
"teacherName":"教师2",\
"seatNum":4,\
"record":1,\
"live":1,\
"replay":1,\
"assistantUids": [1001002,1001003,1001004],\
"isAutoOnstage":"0", \
"isHd":"0",\
"courseUniqueIdentity":1234575 \
"classIntroduce":"ClassIn,真正的在线教室" \
}\
]' \
"https://api.eeo.cn/partner/api/course.api.php?action=addCourseClassMultiple"
Response sample(The normal return json
packet example) #
{
"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": "程序正常执行"
}
}
Error Code Description #
Error Code | Description |
---|---|
1 | Thành công |
100 | Parameters sai định dạng hoặc không hoàn chỉnh |
102 | Không có quyền thao tác (Xác thực bảo mật thất bại) |
104 | Thao tác thất bại |
114 | Lỗi server |
119 | Thời gian kết thúc lớp học phải trễ hơn thời gian bắt đầu |
120 | Thời gian lớp học bắt đầu phải cách thời điểm hiện tại ít nhất là 1 phút |
122 | Tài khoản của giáo viên có định dạng không hợp lệ |
133 | Lớp học này đã tồn tại (courseUniqueIdentity bị lặp lại khi truyền tham số classJson) |
136 | Giáo viên này không thuộc danh sách giáo viên của trường. Vui lòng thêm giáo viên vào trường trước |
144 | Trường không có khóa học này |
147 | Không có thông tin về khóa học này |
149 | Khóa học đã bị xóa |
153 | Khóa học đã kết thúc |
155 | Bảng dữ liệu (array data) không thể để trống |
160 | Trường của bạn không có tệp/thư mục này trong Drive |
161 | Tạo một lớp học không thành công |
165 | Thời gian diễn ra của lớp học tối thiểu là 15 phút và tối đa là 24 giờ |
172 | Học sinh của khóa học không thể được thêm làm giáo viên của lớp |
173 | Người dự thính của khóa học không thể được thêm làm giáo viên của lớp |
220 | Không thể tạo lớp học trên ứng dụng ClassIn |
259 | Số lượng học sinh trên bục vượt quá giới hạn cho phép |
268 | Thời gian bắt đầu của lớp vượt quá giới hạn cho phép (Thời gian bắt đầu phải trong vòng 3 năm tính từ thời điểm hiện tại) |
280 | Lớp học đã được tạo thành công, tuy nhiên tham số ghi hình lớp học không chính xác. Vì vậy lớp học không được bật chức năng ghi hình |
281 | Lớp học đã được tạo thành công, tuy nhiên có vấn đề với dịch vụ ghi hình. Vì vậy lớp học không được bật chức năng ghi hình |
318 | Không có thông tin của trợ giảng trong danh sách giáo viên của trường |
319 | Học sinh của khóa học không thể được thêm làm trợ giảng |
320 | Người dự thính của khóa học không thể được thêm làm trợ giảng |
322 | Giáo viên của khóa học không thể được thêm làm trợ giảng |
324 | Không thể thêm giáo viên vào danh sách giáo viên trường |
326 | Không thể thêm trợ giảng vào danh sách giáo viên trường |
330 | Định dạng của tài khoản trợ giảng không chính xác (Mã lỗi này đã ngưng sử dụng từ tháng 4 2022) |
368 | Số lượng học sinh được thiết lập trên bục giảng không hỗ trợ hiển thị camera HD |
369 | Lớp học công khai không cho phép thao tác |
387 | Giáo viên đã bị vô hiệu hóa |
388 | Trợ giảng đã bị vô hiệu hóa |
398 | Dữ liệu đã tồn tại (Tham số courseUniqueIdentity đã tồn tại) |
400 | Dữ liệu yêu cầu không hợp lệ |
454 | Thời gian bắt đầu và kết thúc lớp học trùng với thời gian bảo trì của hệ thống |
460 | Khóa học (course) hoặc lớp học (lesson) đang được tạo bởi một lệnh khác với cùng courseUniqueIdentity (trong vòng 1 giây) |
800 | Giáo viên đã bị cấm |
804 | Trợ giảng đã bị cấm |
824 | Lớp học đã được tạo thành công, nhưng phần thiết lập giới thiệu lớp học thất bại |
808 | Không hỗ trợ thiết lập dual camera cho lớp học này |
884 | Tài khoản của GV đã bị xóa |
885 | Tài khoản của trợ giảng đã bị xóa |
21316 | Dữ liệu trợ giảng bị trùng lặp |
21317 | Số lượng trợ giảng đã vượt giới hạn |