ربط Moodle بـ xAPI و NELC — الدليل الشامل

ربط Moodle بـ xAPI و NELC — الدليل الشامل

المؤلف: فريق Bzzix التقني
آخر تحديث: 2026
المستوى: متوسط إلى متقدم
المتطلبات: Moodle 3.9+، صلاحية المشرف
الوقت المقدر للقراءة: 30 دقيقة


مقدمة

Moodle هو نظام LMS مفتوح المصدر الأكثر استخداماً في المملكة العربية السعودية والعالم. منذ الإصدار 3.9، بدأت Moodle بدعم xAPI بشكل مدمج، مع إمكانية تعزيز هذا الدعم عبر إضافات متخصصة. هذا الدليل يأخذك خطوة بخطوة من التثبيت حتى الربط الكامل بـ NELC.


1. دعم Moodle المدمج لـ xAPI

1.1 تاريخ دعم xAPI في Moodle

إصدار Moodle مستوى دعم xAPI
Moodle < 3.9 ❌ لا يوجد
Moodle 3.9 ⚠️ أساسي (Logstore فقط)
Moodle 4.0 ✅ دعم محسّن
Moodle 4.1+ ✅ دعم كامل مع H5P
Moodle 4.3+ ✅ أفضل دعم حتى الآن

1.2 ما تدعمه Moodle بشكل مدمج

  • ✅ إرسال Statements عند إكمال الأنشطة
  • ✅ تسجيل نتائج الاختبارات
  • ✅ تتبع الدورات H5P
  • ✅ تسجيل الولوج والخروج
  • ⚠️ محدود في الأفعال المخصصة

2. الإضافات المطلوبة

2.0 الإضافة الرسمية من المركز الوطني (NELC Moodle LRS Plugin)

يوفر المركز الوطني للتعليم الإلكتروني (NELC) إضافة رسمية مفتوحة المصدر لربط Moodle مباشرة بقاعدة بيانات LRS للمركز:

يُوصى باستخدام هذه الإضافة بشكل أساسي لتوليد وإرسال إفادات التعلم متكاملةً ومتوافقةً مع معايير الاعتماد الفنية.

2.1 الإضافة الأساسية: Logstore xAPI

الاسم الرسمي: logstore_xapi
المطوّر: Learning Locker / HT2 Labs
الرابط: moodle.org/plugins/logstore_xapi

ما تفعله:

  • تحوّل أحداث Moodle إلى جمل xAPI
  • ترسلها إلى LRS خارجي (مثل NELC)
  • تدعم التحميل المجمّع (Batch)
  • قابلة للتخصيص

الأحداث التي تُرسلها:

حدث Moodle فعل xAPI
إكمال الدورة completed
إكمال النشاط completed
اجتياز اختبار passed
رسوب اختبار failed
إجابة سؤال answered
تسجيل دخول logged-in
مشاهدة مورد experienced
نشر في منتدى commented

2.2 الإضافة التكميلية: SCORM xAPI

الاسم الرسمي: mod_scormlite أو scorm_xapi
الوظيفة: تحويل محتوى SCORM الموجود ليُرسل xAPI أيضاً

SCORM Package
     ↓
Moodle + SCORM xAPI Plugin
     ↓
xAPI Statement ← LRS (NELC)
     ↓
Moodle Gradebook

2.3 إضافة H5P xAPI

إذا كنت تستخدم H5P لإنشاء المحتوى التفاعلي:

  • Moodle 4.0+ يدعم تلقائياً إرسال xAPI من H5P
  • كل تفاعل داخل H5P يولّد Statement منفصلاً

3. تثبيت Logstore xAPI خطوة بخطوة

الخطوة 1: تحميل الإضافة

# عبر مدير الإضافات في Moodle
# أو عبر سطر الأوامر:
cd /var/www/html/moodle
git clone https://github.com/xAPI-vle/moodle-logstore_xapi.git admin/tool/log/store/xapi

الخطوة 2: تثبيت من لوحة التحكم

  1. انتقل إلى: Site Administration → Plugins → Install Plugins
  2. ارفع ملف ZIP للإضافة
  3. انقر "Install plugin from the ZIP file"
  4. اتبع معالج التثبيت
  5. انقر "Upgrade Moodle database now"

الخطوة 3: تفعيل Logstore

Site Administration
    → Plugins
        → Logging
            → Manage log stores
                → xAPI logstore [✓ Enable]

الخطوة 4: إعداد الاتصال بـ LRS

انتقل إلى إعدادات Logstore xAPI:

Site Administration → Plugins → Logging → xAPI logstore → Settings

أدخل البيانات التالية:

الحقل القيمة
Endpoint URL https://lrs.nelc.gov.sa/xapi/
Username اسم المستخدم من NELC
Password كلمة المرور من NELC
Send interval 60 (ثانية)
Max batch size 100
Backlog size 100000

4. إعداد NELC كـ LRS في Moodle

4.1 الحصول على بيانات NELC

للحصول على بيانات الاعتماد من NELC:

  1. سجّل على بوابة NELC: nelc.gov.sa
  2. أنشئ حساباً مؤسسياً
  3. اطلب إنشاء "LRS Account" لمؤسستك
  4. ستحصل على:
    • Endpoint URL
    • Client ID
    • Client Secret

4.2 إعداد الـ Endpoint

Endpoint الرئيسي لـ NELC:
https://lrs.nelc.gov.sa/xapi/statements

Headers المطلوبة:
Authorization: Basic base64(username:password)
Content-Type: application/json
X-Experience-API-Version: 1.0.3

4.3 تكوين الـ Actor

يجب أن يتضمن كل Statement هوية المتعلم. في Moodle، يتم ذلك تلقائياً باستخدام:

{
  "actor": {
    "objectType": "Agent",
    "name": "اسم المتعلم",
    "account": {
      "homePage": "https://your-moodle.com",
      "name": "12345"
    }
  }
}

أو باستخدام البريد الإلكتروني:

{
  "actor": {
    "mbox": "mailto:student@institution.sa"
  }
}

4.4 إعداد Context لـ NELC

يجب إضافة context يتضمن بيانات المؤسسة:

{
  "context": {
    "platform": "Moodle",
    "extensions": {
      "https://nelc.gov.sa/extensions/institution-id": "INST-12345",
      "https://nelc.gov.sa/extensions/program-id": "PROG-001"
    }
  }
}

5. اختبار xAPI Statements مع ADL Test Suite

5.1 ADL SCORM Test Suite

استخدم أداة الاختبار الرسمية من ADL:

5.2 اختبار يدوي عبر Postman

POST https://lrs.nelc.gov.sa/xapi/statements
Authorization: Basic dXNlcjpwYXNz
Content-Type: application/json
X-Experience-API-Version: 1.0.3

Body:
{
  "actor": {
    "name": "Test Student",
    "mbox": "mailto:test@bzzix.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/launched",
    "display": { "ar": "بدأ", "en-US": "launched" }
  },
  "object": {
    "id": "https://your-moodle.com/test-activity",
    "definition": {
      "name": { "ar": "اختبار التكامل" }
    }
  }
}

الاستجابة المتوقعة:

HTTP 200 OK
["statement-uuid-here"]

5.3 التحقق من الـ Statements المُرسلة

GET https://lrs.nelc.gov.sa/xapi/statements?agent={"mbox":"mailto:test@bzzix.com"}
Authorization: Basic dXNlcjpwYXNz
X-Experience-API-Version: 1.0.3

6. الأخطاء الشائعة وحلولها

خطأ 401: Unauthorized

Error: 401 Unauthorized

السبب: بيانات الاعتماد خاطئة
الحل:

  • تحقق من Username/Password في إعدادات Logstore
  • تأكد أن Base64 encoding صحيح
  • تواصل مع NELC للتحقق من الحساب

خطأ 400: Bad Request

Error: 400 Bad Request - Invalid Statement

السبب: Statement لا يطابق مواصفات xAPI
الحل:

// تحقق من هذه الحقول الإلزامية:
{
  "actor": { /* ✅ يجب أن يحتوي mbox أو account */ },
  "verb": { "id": "/* ✅ URI كامل */" },
  "object": { "id": "/* ✅ URI كامل */" }
}

الـ Statements لا تصل إلى LRS

الأسباب المحتملة:

  1. Cron job معطّل في Moodle
  2. الـ Queue ممتلئة
  3. مشكلة في الشبكة

الحل:

# تشغيل Cron يدوياً
php admin/cli/cron.php

# أو تحقق من حالة Queue
php admin/cli/scheduled_task.php --list

خطأ في encoding العربية

Error: JSON encoding failed

الحل: تأكد أن Moodle يستخدم UTF-8:

// في config.php
$CFG->dbcollation = 'utf8mb4_unicode_ci';

7. التحقق من الامتثال لـ NELC

قائمة التحقق (Compliance Checklist)

  • Logstore xAPI مثبّت ومفعّل
  • Endpoint URL الخاص بـ NELC مُعدَّ بشكل صحيح
  • بيانات الاعتماد صحيحة
  • كل Statement يحتوي على Actor بـ mbox أو account
  • Verb URI يستخدم مسارات ADL المعتمدة
  • Object ID هو URI كامل وصالح
  • Context يحتوي على معرّف المؤسسة
  • اختبار إرسال Statement ناجح
  • التحقق من استقبال LRS للـ Statements
  • Cron job يعمل بشكل منتظم
  • إعداد Retry للـ Statements الفاشلة

8. ضبط الأداء والإعدادات المتقدمة

8.1 إعداد Batch Size

لتحسين الأداء مع عدد كبير من المتعلمين:

Max batch size: 100  (للمؤسسات الصغيرة)
Max batch size: 500  (للمؤسسات المتوسطة)
Max batch size: 1000 (للمؤسسات الكبيرة)

8.2 إعداد Retry

Max failed attempts: 5
Retry interval: 300 seconds

8.3 تصفية الأحداث

يمكنك تحديد الأحداث التي تُرسل إلى NELC:

// في إعدادات Logstore، حدد:
[✓] course_completed
[✓] quiz_attempt_submitted
[✓] scorm_scoreraw_submitted
[ ] user_loggedin (اختياري)
[ ] user_loggedout (اختياري)

9. مراقبة وتقارير

9.1 مراقبة إرسال الـ Statements

Site Administration → Reports → Logs → xAPI Logstore

9.2 تقرير الـ Queue

-- في قاعدة بيانات Moodle
SELECT COUNT(*), status 
FROM mdl_logstore_xapi_log 
GROUP BY status;
Status المعنى
0 في الانتظار
1 تم الإرسال بنجاح
2 فشل الإرسال

10. [PREMIUM] — طلب خدمة التثبيت والإعداد

🔒 خدمة PREMIUM من Bzzix

هل تريد أن يتولى فريق Bzzix التقني إعداد Moodle مع xAPI وNELC بشكل كامل؟

ما يشمله الإعداد الكامل:

  • ✅ تثبيت وتكوين Logstore xAPI
  • ✅ الربط الكامل بـ NELC LRS
  • ✅ اختبار وتحقق من صحة الـ Statements
  • ✅ إعداد Cron jobs وخطط الاستعادة
  • ✅ تدريب المشرفين التقنيين
  • ✅ دعم فني لمدة 30 يوماً بعد التثبيت
  • ✅ توثيق مخصص لإعداداتك

زمن التسليم: 1-3 أيام عمل
يشمل: اختبار تكامل مع NELC + شهادة اعتماد تقني

📧 تواصل معنا: bzzix.com/contact
📞 أو اتصل: +966-XX-XXXXXXX


11. مصادر مفيدة


الخطوة التالية

لربط WordPress مع xAPI وNELC، انتقل إلى:
04_wordpress_xapi.md


© 2026 Bzzix — جميع الحقوق محفوظة. هذه الوثيقة جزء من مجموعة وثائق xAPI الرسمية لمنصة Bzzix.

هل تحتاج مساعدة في تنفيذ ما في الدليل؟ فريق Bzzix متاح لخدمتك.
تواصل معنا الآن