|||
-|-|-|
| ملخص | يوسع المكون الإضافي Solved Reminders Plugin وظائف المكون الإضافي Solved من خلال تقديم إمكانيات تذكير إضافية للمواضيع التي تم حلها.
| رابط المستودع | \u003chttps://github.com/discourse/discourse-solved-reminders-plugin\u003e
| دليل التثبيت | كيفية تثبيت المكونات الإضافية في Discourse
\u003e
لاحظ أن هذا المكون الإضافي قيد التطوير النشط ولم يكتمل بعد.
يمتد المكون الإضافي Solved Reminders وظائف المكون الإضافي Discourse Solved Plugin عن طريق إضافة إمكانيات التذكير والإشعارات للمواضيع التي تتطلب الإغلاق. لا يساعد هذا المكون الإضافي فقط في الحفاظ على إدارة فعالة للمواضيع من خلال تشجيع المستخدمين على وضع علامة على المواضيع كحلول، ولكنه يشرك المستخدمين أيضًا من خلال رسائل التهنئة.
الميزات
- تذكيرات تلقائية: يرسل إشعارات للمستخدمين، ويحثهم على إعادة زيارة ووضع علامة على مواضيعهم كحلول.
- رسائل تفاعلية: يهنئ المستخدمين الذين قاموا بحل المواضيع بنجاح ويقترح مواضيع إضافية قد يساعدون في حلها.
- تكامل سلس: يعمل بالاقتران مع المكون الإضافي Discourse Solved plugin لضمان تجربة مستخدم سلسة.
التثبيت
لتثبيت المكون الإضافي Solved Reminders، يرجى اتباع عملية تثبيت المكون الإضافي العامة الموضحة في دليل Discourse Meta:
- تعديل تكوين الحاوية الخاصة بك: أضف رابط مستودع المكون الإضافي إلى ملف
app.ymlالخاص بك ضمن قسمhooks.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- إعادة بناء حاوية Discourse: قم بتطبيق المكون الإضافي عن طريق إعادة بناء تطبيقك.
./launcher rebuild app
التكوين
بعد التثبيت، يمكنك ضبط إعدادات المكون الإضافي بدقة من خلال لوحة تحكم مسؤولي Discourse. ضع في اعتبارك تعديل:
الاستخدام
بمجرد التكوين، سيعمل المكون الإضافي تلقائيًا بناءً على الإعدادات التي قام المسؤول بتكوينها. يشارك بنشاط في ضمان وصول المواضيع إلى الحل من خلال مطالبة المستخدمين المعنيين بالتذكيرات والرسائل.
رسالة خاصة مرسلة إلى المستخدم لتذكيره بوضع علامة كحل:
رسالة خاصة مرسلة إلى المستخدم الذي وضع علامة كحل:
يمكن للمستخدمين تعطيل الرسائل الخاصة للتوصية بمواضيع مماثلة لوضع علامة كحل من تفضيلاتهم:
يمكن للمسؤولين تعديل التكوينات حسب الضرورة لتلبية احتياجات المجتمع.
تخصيص نص الرسالة
يمكن العثور على نص رسالة التذكير التي يتم إرسالها إلى المستخدمين في صفحة Appearance → Site Text الخاصة بموقعك تحت mark_as_solution.message.
إعداد التقارير وتحليل البيانات
لا يضيف هذا المكون الإضافي أي جداول قاعدة بيانات محددة إلى Discourse، ومع ذلك، يمكنك استخدام هذا المكون الإضافي بالاشتراك مع المكون الإضافي Data Explorer لتتبع وتحليل فعالية رسائل التذكير الخاصة بك.
فيما يلي استعلامان SQL نموذجيان لـ Data Explorer يمكنك استخدامهما مع هذا المكون الإضافي.
عدد رسائل تذكير الحل
يقدم هذا الاستعلام إحصائيات مجمعة شهرية حول رسائل تذكير الحل. يقوم بما يلي:
- يحدد الرسائل الخاصة التي تحتوي على النص “There has been a reply on topic you posted”
- يجمع البيانات حسب الشهر ويحسب:
- عدد رسائل التذكير المرسلة
- العدد الإجمالي للمستخدمين الذين تلقوا هذه التذكيرات
- عدد المستخدمين الذين قرأوا هذه التذكيرات
- نسبة معدل القراءة (القراء / المستلمين)
- تظهر النتائج الاتجاهات الشهرية في نشاط وفعالية رسائل التذكير.
تفاصيل SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %There has been a reply on topic you posted%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.created_at,
p.id AS post_id,
p.user_id AS sender_id,
DATE_TRUNC('month', t.created_at) AS month
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
),
recipient_stats AS (
SELECT
r.topic_id,
r.month,
COUNT(DISTINCT tu.user_id) AS total_recipients,
COUNT(DISTINCT CASE WHEN tu.last_read_post_number > 0 THEN tu.user_id END) AS read_recipients
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id AND tu.user_id != r.sender_id
GROUP BY r.topic_id, r.month
)
SELECT
TO_CHAR(month, 'YYYY-MM') AS month,
COUNT(DISTINCT topic_id) AS reminder_pms_sent,
SUM(total_recipients) AS total_users_received,
SUM(read_recipients) AS users_who_read,
ROUND(100.0 * SUM(read_recipients) / NULLIF(SUM(total_recipients), 0), 2) AS read_rate_percentage
FROM recipient_stats
GROUP BY month
ORDER BY month
رسائل فردية لتذكير الحل
يقدم هذا الاستعلام بيانات فردية مفصلة لكل مستخدم تلقى رسالة تذكير. يقوم بما يلي:
- يحدد الرسائل الخاصة التي تحتوي على النص “There has been a reply on topic you posted”
- يسرد كل مستلم فردي مع:
- معلومات المستخدم (المعرف، اسم المستخدم، الاسم، البريد الإلكتروني)
- تفاصيل الرسالة (العنوان، الرابط)
- ما إذا كانوا قد قرأوا الرسالة (صحيح / خطأ)
- متى قرأوها (إذا كان ذلك منطبقًا)
- عدد الثواني التي قضوها في عرضها
- يتم فرز النتائج حسب تاريخ الإرسال واسم المستخدم، مما يوضح بالضبط من تلقى كل رسالة وقرأها.
تفاصيل SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %There has been a reply on topic you posted%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.title AS message_title,
t.slug AS message_slug,
t.created_at AS sent_at,
p.id AS post_id,
p.user_id AS sender_id,
p.raw AS message_content
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
)
SELECT
u.id AS user_id, -- يتم عرضه كرابط للمستخدم
u.username,
u.name,
ue.email,
r.topic_id, -- يتم عرضه كرابط للموضوع
r.message_title,
-- رابط للرسالة (تم إنشاؤه يدويًا كمرجع)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- التحقق مما إذا كان المستخدم قد قرأ الرسالة
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- متى قرأوها (إذا فعلوا ذلك)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- مقدار الوقت المستغرق في العرض (بالثواني)
ROUND(tu.total_msecs_viewed / 1000.0, 1) AS time_viewed_seconds
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id
JOIN users u ON u.id = tu.user_id
LEFT JOIN user_emails ue ON ue.user_id = u.id AND ue.primary = TRUE
WHERE
-- استبعاد المرسل (النظام/البوت) من قائمة المستلمين
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username





