Dán link lớp học trực tuyến của riêng bạn

Giảng viên có thể dán link Zoom, Microsoft Teams hoặc nền tảng khác vào lớp học trực tiếp. Học viên vào lớp bằng một nút, không cần biết lớp chạy trên nền tảng nào.

SP-769 · 1 Oct 2026

Trạng thái tính đến 1 Oct 2026

Giai đoạn
Đang review. Một PR đang mở. Chưa merge vào main, chưa lên beta, chưa có trong tag production.
PR
#510 chứa toàn bộ thay đổi: cột "meeting_provider" và migration, quy tắc backend, form giảng viên, nút của học viên, bản dịch en và vi. Đã rebase lên main (sau SP-390) và thêm một commit nhỏ đổi nhãn ô nhập thành "URL link lớp học" ngày 1 Oct 2026; ảnh 2 và 3 chụp lại sau thay đổi này, video vẫn hiện nhãn cũ "Link lớp học".
Ticket
SP-769, thuộc ticket cha SP-768 (kế hoạch tích hợp Google Meet, Zoom, Teams theo tài khoản của từng tenant).
Ảnh và video
Tất cả ảnh và video được quay trên stack local với dữ liệu giả. Tên lớp, tên tenant và link đều không phải dữ liệu thật.

Vì sao có tính năng này

Trước đây mọi lớp học trực tiếp đều lấy link Google Meet từ một tài khoản Google Workspace duy nhất của SkillPixel. Tenant nào cũng dùng chung tài khoản đó, nên giảng viên bên ngoài không thể dạy trên Zoom hay Teams mà họ đã quen. Các tenant khác cũng không nên chạy lớp trên tài khoản Google của SkillPixel.

Bước này thêm cách rẻ nhất để gỡ nút thắt đó. Giảng viên tự tạo phòng học trên nền tảng mình chọn, rồi dán link vào bài học. Việc kết nối tài khoản Google, Zoom, Teams của từng tenant sẽ làm ở các ticket sau.

Thay đổi trong một hình

Bước 1

Tạo lớp học trực tiếp

Giảng viên nhập tiêu đề, thời gian bắt đầu và kết thúc như trước.

Bước 2

Chọn nguồn link

Tenant mặc định chọn Google Meet tự động hoặc dán link. Tenant khác chỉ có ô dán link.

Bước 3

Lưu

Link phải bắt đầu bằng https://. Hệ thống lưu link kèm nguồn của nó.

Bước 4

Học viên vào lớp

Nút "Tham gia lớp học trực tuyến" mở link trong tab mới, 15 phút trước giờ bắt đầu.

Video demo

Hai video ngắn, không có tiếng. Chấm xanh là con trỏ chuột.

Tenant mặc định (Skill Pixel QA), khoảng 49 giây

Bạn sẽ thấy gì

  1. Form tạo lớp mở ra, "Tự động tạo link Google Meet" được chọn sẵn, giống cách làm cũ.
  2. Giảng viên nhập tiêu đề, chuyển sang "Dán link của tôi" và dán một link Zoom.
  3. Bấm Lưu. Lớp được tạo và giữ nguyên link đã dán, không gọi Google.
  4. Trang học viên của lớp Zoom: nút "Tham gia lớp học trực tuyến" sáng vì lớp đang diễn ra.
  5. Trang học viên của lớp Google Meet: nút vẫn là "Tham gia lớp Google Meet" như cũ.

Tenant khác (Học viện Demo A), khoảng 50 giây

Bạn sẽ thấy gì

  1. Form tạo lớp chỉ có một ô "Link lớp học". Không có lựa chọn Google Meet.
  2. Bấm Lưu khi chưa có link: form báo "Vui lòng nhập link lớp học".
  3. Dán link Zoom rồi Lưu. Lớp được tạo.
  4. Trang học viên của lớp Teams với nút "Tham gia lớp học trực tuyến".
  5. Lớp cũ tạo trước cập nhật vẫn giữ link Google Meet của nó trong ô link.

Cách dùng

  1. Mở form tạo lớp học trực tiếp

    Trong khoá học, bấm "Thêm bài học" rồi chọn "Lớp học trực tiếp". Ở tenant mặc định, mục "Link lớp học" có hai lựa chọn. Google Meet được chọn sẵn, nên ai không đổi gì thì vẫn làm việc như cũ.

    Form tạo lớp học trực tiếp ở tenant mặc định với hai lựa chọn link, Google Meet được chọn sẵn
    Tenant mặc định. Hai lựa chọn dưới "Link lớp học". Ô "URL đến lớp học trực tuyến" chỉ đọc, ghi "Chưa tạo" vì link Meet chỉ sinh ra sau khi lưu.
  2. Chọn "Dán link của tôi" và dán link

    Ô "Link lớp học" xuất hiện. Dán link từ Zoom, Microsoft Teams, Google Meet hoặc nền tảng khác. Bất kỳ tên miền nào cũng được, nhưng link phải bắt đầu bằng https://.

    Lựa chọn Dán link của tôi được chọn, ô link chứa một link Zoom
    Sau khi chọn "Dán link của tôi", ô "URL link lớp học" nhận một link Zoom và có dòng hướng dẫn bên dưới.
  3. Lưu. Link sai bị chặn ngay trên form

    Link http:// hoặc thiếu tên miền không lưu được. Backend kiểm tra lại cùng quy tắc, nên gọi API trực tiếp cũng không lách được.

    Form báo lỗi Vui lòng nhập link hợp lệ bắt đầu bằng https:// khi dán link http
    Link "http://zoom.us/..." bị từ chối với thông báo "Vui lòng nhập link hợp lệ bắt đầu bằng https://".
  4. Mở lại lớp đã lưu

    Khi sửa lớp, form nhớ lựa chọn đã dùng. Lớp dán link hiện link trong ô có thể sửa. Lớp Google Meet hiện link Meet thật trong ô chỉ đọc. Đổi từ Google Meet sang dán link sẽ huỷ sự kiện Google cũ. Đổi ngược lại sẽ tạo link Meet mới khi lưu.

    Form sửa lớp Buổi 4 với lựa chọn Dán link của tôi và link Zoom
    Lớp "Buổi 4: Ôn tập qua Zoom". "Dán link của tôi" được chọn, link Zoom nằm trong ô sửa được.
    Form sửa lớp Buổi 3 với Google Meet được chọn và link meet.google.com
    Lớp "Buổi 3: Hàm và module (Google Meet)". Google Meet được chọn, link meet.google.com do hệ thống tạo trên stack local.
  5. Học viên vào lớp

    Học viên không thấy nguồn link. Nút vào lớp ghi "Tham gia lớp học trực tuyến" với link dán, và vẫn ghi "Tham gia lớp Google Meet" với lớp Meet. Nút chỉ bật từ 15 phút trước giờ bắt đầu đến khi lớp kết thúc, và mở link trong tab mới.

    Trang học viên lớp Zoom, trạng thái Đang diễn ra, nút Tham gia lớp học trực tuyến
    Lớp Zoom, trạng thái "Đang diễn ra", nút "Tham gia lớp học trực tuyến".
    Trang học viên lớp Google Meet với nút Tham gia lớp Google Meet
    Lớp Google Meet giữ nút "Tham gia lớp Google Meet" như trước.
  6. Ở tenant khác, chỉ có ô dán link

    Tenant không phải mặc định không được tạo link Google Meet tự động nữa. Form chỉ có một ô "Link lớp học" bắt buộc. Backend từ chối yêu cầu tạo Google Meet từ tenant này bằng lỗi 400.

    Form tạo lớp ở tenant Học viện Demo A với một ô Link lớp học bắt buộc
    Tenant "Học viện Demo A". Một ô "Link lớp học" có dấu bắt buộc, không có lựa chọn Google Meet.
    Form báo Vui lòng nhập link lớp học khi để trống ô link
    Bấm Lưu khi ô link còn trống: "Vui lòng nhập link lớp học".
  7. Lớp cũ ở tenant khác vẫn chạy

    Lớp được tạo trước cập nhật giữ link Google Meet của nó. Khi mở lại, link nằm sẵn trong ô. Nếu giảng viên không đổi link, lớp giữ nguyên nguồn Google. Nếu đổi sang link khác, lớp chuyển sang link dán.

    Form sửa lớp Buổi 1 ở tenant khác với link teams.microsoft.com
    Lớp mới "Buổi 1: Speaking Part 1 trên Microsoft Teams" với link Teams đã dán.
    Form sửa lớp cũ ở tenant khác, ô link chứa link meet.google.com cũ
    Lớp cũ "Buổi 2". Link meet.google.com được giữ trong ô link và vẫn hoạt động cho học viên.
    Trang học viên lớp Teams ở tenant khác với nút Tham gia lớp học trực tuyến
    Học viên của tenant khác thấy nút "Tham gia lớp học trực tuyến" cho lớp Teams.

Đọc màn hình

MụcÝ nghĩaVí dụ
Tự động tạo link Google MeetHệ thống tạo sự kiện Google Calendar kèm link Meet sau khi lưu. Chỉ có ở tenant mặc định.https://meet.google.com/yzh-vdxj-gfq
Dán link của tôiGiảng viên tự tạo phòng học và dán link. Hệ thống không gọi Google.https://zoom.us/j/98765432100?pwd=demoSP769
Link lớp học (ô nhập)Bắt buộc khi dán link. Phải bắt đầu bằng https://, tối đa 2048 ký tự, tên miền nào cũng được.Link Teams dài hơn 60 ký tự vẫn nhận
URL đến lớp học trực tuyến (ô chỉ đọc)Link Meet do hệ thống tạo. "Chưa tạo" khi lớp chưa lưu hoặc tạo Meet thất bại.Chưa tạo
Nút vào lớp của học viên"Tham gia lớp học trực tuyến" với link dán, "Tham gia lớp Google Meet" với lớp Meet. Bật từ 15 phút trước giờ bắt đầu.Đang diễn ra

Vì sao tin được

Bốn dòng live_class_lessons trong database với cột meeting_provider là GOOGLE_MEET hoặc MANUAL
Bốn lớp demo trong database. Hai lớp Zoom và Teams là MANUAL, hai lớp Meet là GOOGLE_MEET. Chỉ lớp Meet do hệ thống tạo mới có sự kiện Google (has_event = t). Bấm để mở ảnh lớn.
API trả HTTP 400 khi tenant khác yêu cầu Google Meet
Gọi API tạo lớp với Google Meet ở tenant khác: HTTP 400, "Google Meet links are not available for this tenant; paste a meeting link instead".

Kiểm tra tay. Link Meet trong ảnh 5 và 7 được tạo thật qua Google Calendar từ stack local, không phải chuỗi gõ tay. Sau demo, lớp đó sẽ bị huỷ để xoá sự kiện trên lịch.

Giới hạn đã biết

Quyết định đã chốt

Câu hỏiLựa chọn
Tenant mặc định có đổi gì không?Giữ nguyên Google Meet tự động làm mặc định, thêm "Dán link của tôi" làm lựa chọn thứ hai.
Tenant khác dùng gì?Chỉ dán link. Không tạo Google Meet mới từ tài khoản SkillPixel. Lớp cũ giữ link.
Link nào được nhận?Bất kỳ tên miền, bắt buộc https://, tối đa 2048 ký tự, bắt buộc khi chọn dán link.
Đổi tên cột link cũ?Không. "meet_join_url" vẫn là cột link chung cho mọi nguồn, thêm cột "meeting_provider".
Thứ tự làm tiếpGoogle Meet theo tài khoản tenant trước, rồi Zoom, rồi Teams. Nút "Kết nối với ..." để sau vì cần vendor duyệt app.

Checklist triển khai

  1. Merge PR #510. Một PR, không xếp chồng.
  2. Migration "f7d2c3f3ced2" thêm một cột có giá trị mặc định, chạy nhanh và tương thích với bản backend cũ. Không có config hay job mới.
  3. Kiểm tra trên beta: tạo một lớp dán link ở tenant mặc định và ở một tenant khác, mở trang học viên trong khung 15 phút, bấm nút vào lớp. Mở lại một lớp Google Meet cũ ở tenant khác và lưu mà không đổi link, kiểm tra link còn nguyên.
  4. Chuyển SP-769 sang Testing sau khi lên beta, và sang Done khi có trong tag production.