ربط 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 للمركز:
- إضافة Moodle LRS Plugin: moodle-lrs-plugin
يُوصى باستخدام هذه الإضافة بشكل أساسي لتوليد وإرسال إفادات التعلم متكاملةً ومتوافقةً مع معايير الاعتماد الفنية.
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: تثبيت من لوحة التحكم
- انتقل إلى: Site Administration → Plugins → Install Plugins
- ارفع ملف ZIP للإضافة
- انقر "Install plugin from the ZIP file"
- اتبع معالج التثبيت
- انقر "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:
- سجّل على بوابة NELC: nelc.gov.sa
- أنشئ حساباً مؤسسياً
- اطلب إنشاء "LRS Account" لمؤسستك
- ستحصل على:
- 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
الأسباب المحتملة:
- Cron job معطّل في Moodle
- الـ Queue ممتلئة
- مشكلة في الشبكة
الحل:
# تشغيل 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.