| الملخص | يمتد إضافة تذكيرات المسائل (Solved Reminders Plugin) وظيفة إضافة المسائل من خلال تقديم قدرات تذكير إضافية للمواضيع التي تم حلها. | |
| رابط المستودع | https://github.com/discourse/discourse-solved-reminders-plugin | |
| دليل التثبيت | كيفية تثبيت الإضافات في Discourse |
لاحظ أن هذه الإضافة قيد التطوير النشط ولم تكتمل بعد بالكامل.
تمتد إضافة تذكيرات المسائل وظيفة إضافة Discourse المسائل من خلال إضافة قدرات التذكير والإشعار للمواضيع التي تتطلب إغلاقًا. لا تساعد هذه الإضافة فقط في الحفاظ على إدارة مواضيع فعالة من خلال تشجيع المستخدمين على تحديد المواضيع كمحلول، بل تشارك أيضًا المستخدمين من خلال رسائل التهاني.
الميزات
- تذكيرات آلية: يرسل إشعارات للمستخدمين، مما يحفزهم على العودة وتحديد مواضيعهم كمحلول.
- رسائل المشاركة: يهنئ المستخدمين الذين حلووا بنجاح مواضيع ويقترح مواضيع إضافية قد يساعدون في حلها.
- تكامل سلس: يعمل بالتزامن مع إضافة Discourse المسائل لضمان تجربة مستخدم سلسة.
التثبيت
لتثبيت إضافة تذكيرات المسائل، يرجى اتباع عملية تثبيت الإضافات العامة الموضحة في دليل 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 الإدارية. فكر في تعديل:
الاستخدام
بمجرد التكوين، سيعمل الإضافة تلقائيًا بناءً على الإعدادات التي قام بها المسؤول. يشارك بنشاط في ضمان وصول المواضيع إلى الحل من خلال تذكير المستخدمين ذوي الصلة برسائل التذكير والرسائل.
رسالة خاصة مرسلة إلى المستخدم لتذكيره بتحديد منشور كمحلول:
رسالة خاصة مرسلة إلى المستخدم الذي حدد المنشور كمحلول:
يمكن للمستخدمين تعطيل الرسالة الخاصة لتوصي بمواضيع مماثلة لتحديد كمحلول من تفضيلاتهم:
يمكن للمسؤولين تعديل التكوينات حسب الضرورة لتلبية احتياجات المجتمع.
تخصيص نص الرسالة
يمكن العثور على رسالة التذكير التي يتم إرسالها إلى المستخدمين في صفحة المظهر → نص الموقع لموقعك تحت mark_as_solution.message.
الإبلاغ وتحليل البيانات
لا تضيف هذه الإضافة أي جداول قاعدة بيانات محددة إلى Discourse، ومع ذلك، يمكنك استخدام هذه الإضافة بالاقتران مع إضافة Data Explorer لتتبع وتحليل فعالية رسائل التذكير الخاصة بك.
فيما يلي استعلامان SQL أمثلة لـ Data Explorer يمكنك استخدامهما مع هذه الإضافة.
تعداد رسائل تذكير المسائل
يوفر هذا الاستعلام إحصائيات مجمعة شهرية حول رسائل تذكير المسائل. إنه:
- يحدد الرسائل الخاصة التي تحتوي على النص “كان هناك رد على موضوع نشرته”
- يجمع البيانات حسب الشهر ويحسب:
- عدد رسائل التذكير المرسلة
- إجمالي عدد المستخدمين الذين تلقوا هذه التذكيرات
- عدد المستخدمين الذين قرأوا هذه التذكيرات
- نسبة القراءة (القراء/المستلمون)
- تظهر النتائج الاتجاهات الشهرية في نشاط وفعالية رسائل التذكير
تفاصيل 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
رسائل تذكير المسائل الفردية
يوفر هذا الاستعلام بيانات مفصلة على مستوى الفرد لكل مستخدم تلقى رسالة تذكير. إنه:
- يحدد الرسائل الخاصة التي تحتوي على النص “كان هناك رد على موضوع نشرته”
- يسرد كل مستلم فردي مع:
- معلومات المستخدم (المعرف، اسم المستخدم، الاسم، البريد الإلكتروني)
- تفاصيل الرسالة (العنوان، الرابط)
- ما إذا كان قد قرأ الرسالة (صحيح/خطأ)
- متى قرأها (إذا كان ذلك مناسبًا)
- كم ثانية قضى في عرضها
- يتم ترتيب النتائج حسب تاريخ الإرسال واسم المستخدم، مما يظهر بالضبط من تلقى ومن قرأ كل رسالة
تفاصيل 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, -- Renders as link to user
u.username,
u.name,
ue.email,
r.topic_id, -- Renders as link to topic
r.message_title,
-- Link to the message (manually constructed for reference)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- Check if user has read the message
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- When they read it (if they did)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- How much time spent viewing (in seconds)
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
-- Exclude the sender (system/bot) from the recipients list
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username





