إضافة التذكيرات المحلولة

:discourse2: الملخص يمتد إضافة تذكيرات المسائل (Solved Reminders Plugin) وظيفة إضافة المسائل من خلال تقديم قدرات تذكير إضافية للمواضيع التي تم حلها.
:hammer_and_wrench: رابط المستودع https://github.com/discourse/discourse-solved-reminders-plugin
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

:warning: لاحظ أن هذه الإضافة قيد التطوير النشط ولم تكتمل بعد بالكامل.

تمتد إضافة تذكيرات المسائل وظيفة إضافة Discourse المسائل من خلال إضافة قدرات التذكير والإشعار للمواضيع التي تتطلب إغلاقًا. لا تساعد هذه الإضافة فقط في الحفاظ على إدارة مواضيع فعالة من خلال تشجيع المستخدمين على تحديد المواضيع كمحلول، بل تشارك أيضًا المستخدمين من خلال رسائل التهاني.

الميزات

  • تذكيرات آلية: يرسل إشعارات للمستخدمين، مما يحفزهم على العودة وتحديد مواضيعهم كمحلول.
  • رسائل المشاركة: يهنئ المستخدمين الذين حلووا بنجاح مواضيع ويقترح مواضيع إضافية قد يساعدون في حلها.
  • تكامل سلس: يعمل بالتزامن مع إضافة Discourse المسائل لضمان تجربة مستخدم سلسة.

التثبيت

لتثبيت إضافة تذكيرات المسائل، يرجى اتباع عملية تثبيت الإضافات العامة الموضحة في دليل Discourse Meta:

  1. تعديل تكوين الحاوية: أضف رابط مستودع الإضافة إلى ملف app.yml الخاص بك تحت قسم hooks.
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
  1. إعادة بناء حاوية 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
17 إعجابًا

هل يمكن لرئيس الوزراء المهنئ ذكر عنوان الموضوع في عنوانه؟ إذا حصل المستخدم على حلول متعددة في وقت واحد، فقد يكون الأمر مربكًا للمستخدم إذا لم يعرف رئيس الوزراء إلى أي حل يشير.
هل يمكن أن يكون هناك إعداد للتحكم في عدد المنشورات التي سيتم إرسال التذكير بعدها؟

4 إعجابات

فقط للتأكد من أمرين:\n1. هل يرسل رسائل فقط لمؤلفي المواضيع التي تلقت ردًا واحدًا على الأقل؟\n2. هل يعمل مع إعداد المكون الإضافي للحلول لكل فئة، مما يعني أنه إذا كنت ترغب في تعطيله لبعض الفئات، فيجب عليك تعطيل تبديل المكون الإضافي للحلول على مستوى الموقع وبدلاً من ذلك تمكينه للفئات التي تريد استخدامه فيها؟

3 إعجابات

هل المواضيع المقترحة هي مواضيع عشوائية غير محلولة، أم محادثات مرتبطة بالموضوع الأصلي الذي تم حله؟ إذا كانت مرتبطة، فكيف يتم تحديدها؟

إعجاب واحد (1)

تم تقسيم منشورين إلى موضوع جديد: كيفية تحويل الكود المصدري إلى إضافة

قد يكون هذا مفيدًا للغاية، خاصة في منتدانا حيث يميل الأشخاص إلى نسيان وضع علامة على رد كحل بعد تلقي واحد، ومن ثم سيتعين على فريقنا الدخول لتذكيرهم يدويًا :weary:

بعض الأسئلة الأخرى التي لدي هي:

  • هل يمكننا تكوين من يرسل رسالة التذكير الخاصة، أم أنها دائمًا ما تكون افتراضية لـ Discobot؟
  • هل يمكننا أيضًا تعديل نصوص الرسائل الخاصة إذا أردنا؟

شكرا

إعجاب واحد (1)

شكراً على هذه الإضافة، فهي مفيدة جداً!

حسب فهمي، فإن المُرسِل لهذه الإضافة يعمل كل 14 يوماً. هذا يعني أن أي عدد من المواضيع التي أبدأها خلال 14 يوماً (ولم أضع عليها علامة “حل”) سيؤدي إلى إرسال رسالة خاصة + بريد إلكتروني.

لقد قمت بتشغيلها يدوياً، بعد 5 أيام من تثبيت الإضافة وحصلت على 7 رسائل خاصة (وبريد إلكتروني):

يبدو هذا مبالغاً فيه بعض الشيء. أعرف أنني حالة استثنائية بصفتي المسؤول الذي ينشئ الكثير من المواضيع بنشاط في الوقت الحالي، ولكن هناك عدد غير قليل من مستخدمينا ينشئون الكثير من المواضيع (رائع).

هل سيكون من الممكن بناء خيار يتم فيه دمج هذا الإشعار في إشعار واحد؟ مثل “تم وضع علامة حل على 7 من مشاركاتك” في رسالة واحدة بدلاً من رسالة لكل موضوع؟

5 إعجابات