מבט כללי

אינטגרציית Stream עם Moodle מאפשרת:

  • סנכרון אוטומטי של הקלטות מפגשים (Zoom, Teams, Unicko וכו') לשרת Stream.
  • הטמעה אוטומטית של הקלטות בקורס Moodle הרלוונטי (תוסף local_stream).
  • פעילות Stream בקורס — פלייליסט ונגן וידאו מתוך Moodle (תוסף mod_stream).

שני התוספים עובדים יחד: local_stream מטפל בזרימת ההקלטות מהענן; mod_stream מציג לסטודנטים את הסרטונים מתוך Stream.

תוספים נדרשים

  • local_stream — אינטגרציה מרכזית (Local plugin) מסנכרן מפגשים והקלטות, מעלה לשרת Stream ומטמיע בקורס.
    GitHub – moodle-local_stream · Moodle.org
  • mod_stream — פעילות Stream (Activity module) מוסיף פעילות «STREAM» לקורס: פלייליסט, נגן מוטמע, איסוף הקלטות לפי קורס.
    GitHub – moodle-mod_stream · Moodle.org
אופציונלי: תוסף filter_stream להטמעת קישורי Stream בתוך תוכן Moodle (דפים, תוויות). ראו filter_stream ב־Moodle.org.

דרישות מקדימות

  • מערכת Moodle מעודכנת עם הרשאות מנהל אתר (Site administrator).
  • שרת Stream פעיל (למשל https://stream.example.ac.il) עם מפתח API (Account ID).
  • גישה ל־SSH/FTP או deployment לתיקיית Moodle, או התקנה דרך ממשק «Install plugins».
  • לסנכרון Zoom: חשבון Zoom עם Cloud Recording ו־API credentials (OAuth / Server-to-Server, לפי הגדרת הארגון).

גרסאות Moodle וענפי Git

ב־moodle-mod_stream מוגדרים הענפים:

גרסת Moodleענף Git מומלץ
Moodle 3.4 – 4.1MOODLE_401
Moodle 4.2MOODLE_402

ל־local_stream השתמשו בענף master או בענף שמתאים לגרסת Moodle שלכם (בדקו ב־README של המאגר).

התקנה

מומלץ להתקין קודם את local_stream, ואחריו את mod_stream.

שלב 1 — הורדת הקבצים

  1. הורידו ZIP מ־GitHub (Code → Download ZIP) או clone:
    git clone https://github.com/mattan-d/moodle-local_stream.git
          git clone https://github.com/mattan-d/moodle-mod_stream.git
  2. עבור mod_stream — עברו לענף המתאים לגרסת Moodle (למשל MOODLE_402).

שלב 2 — העתקה לתיקיות Moodle

תוסףנתיב בשרת Moodle
local_streammoodle/local/stream/
mod_streammoodle/mod/stream/

ודאו ששם התיקייה הוא stream (אותיות קטנות), ושכל קבצי התוסף נמצאים ישירות בתוכה (כולל version.php).

שלב 3 — השלמת ההתקנה ב־Moodle

  1. היכנסו כמנהל אתר.
  2. עברו לניהול האתר → הודעות (Site administration → Notifications).
  3. Moodle יזהה את התוספים החדשים — לחצו המשך והשלימו את עדכון מסד הנתונים.
  4. חזרו על התהליך לכל תוסף (אם התקנתם אחד אחרי השני).
חשוב: אחרי העדכון, נקו cache של Moodle: ניהול האתר → פיתוח → ניקוי כל המטמונים.

הגדרות בשרת Stream (VideoTube)

לפני הגדרת התוספים ב־Moodle, ודאו שבמערכת Stream מוגדר מפתח API שהתוספים ישתמשו בו:

  1. היכנסו להגדרות המערכת (/admin/settings) בשרת Stream.
  2. מצאו את שדה Account ID / API Key (הערך ב־$CONFIG->apikey).
  3. העתיקו את המפתח — הוא יוזן בשני תוספי Moodle כ־Account ID.
  4. ודאו שכתובת שרת Stream (URL) נגישה מ־Moodle (HTTPS, ללא חסימת firewall).

הגדרת local_stream

נתיב: ניהול האתר → תוספים → תוספים מקומיים → Stream

הגדרות עיקריות

  • Platform (פלטפורמה) — בחרו את מקור ההקלטות:
    • Zoom — סנכרון הקלטות ענן מ־Zoom.
    • Microsoft Teams — הקלטות Teams.
    • Unicko — דרך LTI (לפי הגדרת הארגון).
  • Stream server / API — כתובת שרת Stream ו־Account ID (מפתח API).
  • Zoom API (כשהפלטפורמה היא Zoom):
    • Client ID / Client Secret או JWT / Server-to-Server credentials — לפי סוג האפליקציה ב־Zoom Marketplace.
    • Cloud Recording חייב להיות מופעל בחשבון Zoom.
  • Embed order — האם לשים את פעילות ההקלטה מתחת לפעילות המפגש המקורית (למשל מתחת ל־Zoom).
  • Based grouping / duplicate handling — מניעת הטמעה כפולה של אותה הקלטה (לפי UUID של Zoom).
  • Notifications (אופציונלי) — הודעה לנרשמים בקורס כשהקלטה חדשה הוטמעה.

בדיקת חיבור

לאחר שמירת ההגדרות, השתמשו בבדיקת סטטוס החיבור (אם קיימת במסך) כדי לוודא ש־Moodle מתקשר עם Stream ועם Zoom.

זרימת Zoom (תמצית)

  1. מרצה יוצר פעילות Zoom בקורס Moodle.
  2. המפגש מתקיים עם הקלטה לענן.
  3. משימה מתוזמנת של local_stream מושכת רשימת הקלטות.
  4. ההקלטה מועלית ל־Stream (דרך webservice/api.php) ו/או נוצרת פעילות בקורס עם קישור לצפייה.

הגדרת mod_stream

נתיב: ניהול האתר → תוספים → מודולי פעילות → Stream

הגדרות ברמת האתר

  • Stream API endpoint — כתובת בסיס של שרת Stream (למשל https://stream.smkb.ac.il).
  • Account ID — אותו מפתח API כמו ב־local_stream ובהגדרות Stream.
  • Connection status — בדיקה ש־Moodle מצליח לגשת ל־api2.php ולקבל רשימת סרטונים.
  • ברירות מחדל (לפי גרסה):
    • האם לכלול אודיו / נגן אודיו לקורסים מסוימים.
    • מצב איסוף הקלטות אוטומטי לפעילות.

מה mod_stream עושה בקורס

  • מוסיף פעילות STREAM לקורס.
  • מציג פלייליסט של סרטונים משרת Stream (לפי בחירה ידנית או איסוף אוטומטי).
  • שולח ל־Stream פרטי משתמש מוגבלים (שם, דוא״ל, מזהה) לצורך אבטחה, סטטיסטיקות והגבלות צפייה — בהתאם להגדרות Stream.

משימות מתוזמנות (Cron)

ל־local_stream חובה להריץ Cron של Moodle:

  1. עברו לניהול האתר → שרת → משימות מתוזמנות (Scheduled tasks).
  2. מצאו את המשימה Embedded recordings (local_stream) — מחלקה local_stream\task\embed.
  3. ודאו שהיא מופעלת ורצה בתדירות מתאימה (למשל כל 5–15 דקות, או כל שעה).
  4. ודאו ש־Cron של Moodle רץ בשרת (crontab):
    * * * * * php /path/to/moodle/admin/cli/cron.php

אפשר להריץ ידנית לבדיקה:

php /path/to/moodle/admin/cli/scheduled_task.php --execute='\local_stream\task\embed'

בדקו בלוג Moodle אם יש שגיאות API (Zoom / Stream).

איך זה עובד

הורדת סרטונים מענן Zoom

לאחר שהתוסף local_stream מוגדר, המערכת מתחברת לענן Zoom, מזהה הקלטות של מפגשים שקשורים לקורסי Moodle, ומעלה אותן לשרת Stream. ההקלטות מרוכזות במערכת אחת לניהול, עריכה ותמלול.

הטמעה אוטומטית בקורס

הסרטונים שמסונכרנים מוטמעים אוטומטית בקורס הרלוונטי — זה שממנו נוצר מפגש ה־Zoom. המרצה לא חייב להעלות ידנית קבצים.

פעילות Stream לסטודנטים

באמצעות mod_stream ניתן להוסיף פעילות Stream עם כל סרטוני הקורס (כולל אלו שנאספו אוטומטית), לסדר פלייליסט ולשלוט בזמינות.

יתרון: חוסך זמן למרצים ומבטיח שהתוכן מרוכז, מנוהל ונגיש לסטודנטים בתוך Moodle.

שימוש למרצה (תקציר)

לאחר שהמנהל הגדיר את התוספים:

  1. Zoom + הקלטה אוטומטית — צרו פעילות Zoom בקורס, הקליטו לענן; אחרי עיבוד Zoom ההקלטה תופיע בקורס (דרך local_stream).
  2. פעילות STREAM — בקורס: «הוספת פעילות או משאב» → STREAM:
    • הגדירו כותרת ותיאור.
    • הפעילו «איסוף הקלטות» או בחרו סרטונים ידנית משרת Stream.
    • סדרו את הפלייליסט בגרירה.
    • קבעו תאריכי פתיחה/סגירה אם נדרש.

מדריך מפורט למרצה: מדריך שימוש מהיר למרצה – STREAM ב־Moodle.

יצירת שאלות מסרטון: יצירת שאלות מסרטון Stream ב־Moodle.

פתרון בעיות

בעיהמה לבדוק
הקלטה לא מופיעה בקורס Cloud Recording ב־Zoom; משימת local_stream\task\embed פעילה; Cron רץ; credentials של Zoom ו־Stream.
«Account ID is missing» / שגיאת API Account ID ב־Moodle תואם ל־apikey בשרת Stream; HTTPS נגיש.
כותרות / עברית מוצגות כ־???? UTF-8 ב־Moodle ו־MySQL; עדכון אחרון של שרת Stream (תיקון charset ב־API).
הקלטה בקורס הלא נכון מיפוי courseid / שם קורס בהגדרות; נושא המפגש ב־Zoom.
כפילויות של אותה הקלטה הפעילו «based grouping» / dedup ב־local_stream.
פעילות mod_stream ריקה חיבור ל־api2.php; המשתמש/מרצה בעל סרטונים ב־Stream; פרטיות הסרטונים (ציבורי/הזדהות).

לאבחון מתקדם: הפעילו debug ב־Moodle, הריצו את המשימה המתוזמנת ידנית ובדקו את הלוג.