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

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

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

الميزات

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

التثبيت

لتثبيت المكون الإضافي Solved Reminders، يرجى اتباع عملية تثبيت المكون الإضافي العامة الموضحة في دليل 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. ضع في اعتبارك تعديل:

الاستخدام

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

رسالة خاصة مرسلة إلى المستخدم لتذكيره بوضع علامة كحل:

رسالة خاصة مرسلة إلى المستخدم الذي وضع علامة كحل:

يمكن للمستخدمين تعطيل الرسائل الخاصة للتوصية بمواضيع مماثلة لوضع علامة كحل من تفضيلاتهم:

يمكن للمسؤولين تعديل التكوينات حسب الضرورة لتلبية احتياجات المجتمع.

تخصيص نص الرسالة

يمكن العثور على نص رسالة التذكير التي يتم إرسالها إلى المستخدمين في صفحة 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
15 إعجابًا

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

3 إعجابات

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

3 إعجابات

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

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

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

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

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

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

شكرا

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

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

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

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

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

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

4 إعجابات