من الممكن القيام بذلك من خلال وحدة تحكم Rails (وأيضًا واجهة برمجة التطبيقات API أيضًا)، ولكن يجب أن تفكر مليًا فيما إذا كان يجب عليك فعل ذلك أم لا. إذا اتخذ المستخدم قرارًا متعمدًا بمشاهدة أو كتم فئة (أو علامة أو موضوع)، فإن تجاوز هذا القرار من المحتمل أن يكون غير مرغوب فيه. يمكنهم أيضًا ببساطة إعادة ضبطه إلى ما كان عليه، لذلك قد لا تحقق أي شيء.
الفكرة هي التراجع عن الإعداد الافتراضي الجديد (مراقبة فئة معينة) ثم السماح للأشخاص بتغييره حسب رغبتهم.
لاحظت الآن أن الأمر أعلاه User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end لم يعمل بطريقة ما لتغيير تفضيلات جميع المستخدمين. هل لديك أي فكرة عن السبب؟ بل سيكون أفضل لو تم إلحاق تفضيل التتبع الجديد بتفضيلات تتبع المستخدم الحالية…
ملاحظة: نحن مجتمع صغير وأعلم أن نسبة صغيرة فقط أخذت الوقت لتعديل تفضيلاتهم (؛
بالنسبة لأي شخص لم يقم بتعيين فئة معينة على مستوى الإشعارات بشكل خاص، فإن إعادة تعيين “مشاهدة الفئة الافتراضية” وتطبيقها تاريخيًا يجب أن يعيدها إلى المستويات العادية.
إذا كانت الأرقام صغيرة، فقد يكون استخدام واجهة المستخدم أو واجهة برمجة التطبيقات (API) خيارًا أكثر أمانًا من وحدة تحكم Rails. عن كم عدد الأشخاص نتحدث؟
للفهم، الفئة المعنية تسمى الإعلانات ومعرفها هو 22.
لقد فعلت هذا بالضبط قبل محاولة الأمر أيضًا. ولكن لا يزال بعد كليهما، عند وجود منشور جديد في الإعلانات، يتلقى بعض المستخدمين فقط بريدًا إلكترونيًا.
ما قد يكون قد حدث هو أن المستخدمين ألغوا الاشتراك في إشعارات البريد الإلكتروني لأن البريد الإلكتروني الملخص احتوى فقط على نشاط “طفيف” (أي، لا توجد منشورات من الإعلانات كما هو موضح في المشكلة ذات الصلة المرتبطة سابقًا)
أعتقد أننا بحاجة إلى معرفة المزيد من التفاصيل قبل التوصل إلى حل. جدول category_users يحتفظ فقط بسجل لمستويات إشعارات الفئات النشطة، لذلك إذا لم يكن لدى شخص ما مستوى، فلن تكون البيانات موجودة في الجدول لتغييرها عبر وحدة تحكم Rails. (على سبيل المثال، إذا أضفت #site-feedback إلى إعداد المسؤول default categories watching، فسيضيف سجلاً في category_users لكل مستخدم، وعندما أعيد تعيين الإعداد، سيحذف تلك السجلات مرة أخرى).
يمكنني التأكيد على أن User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) قد غيّر تفضيلات التتبع لجميع المستخدمين لمراقبة الفئة المطلوبة (22 | Announcements)؛ حيث أن هذا الاستعلام يسرد جميع المستخدمين:
SELECT *
FROM category_users
WHERE category_id = '22' AND notification_level = '3'
وهذا الاستعلام يسرد مستخدمًا واحدًا فقط:
SELECT *
FROM user_options uo
WHERE uo.email_level = '2'
السؤال الآن هو، لماذا لا يتلقى العديد من المستخدمين بريدًا إلكترونيًا عند وجود منشور جديد في الفئة 22 “Announcements”
ملاحظة: أنا أعبث بالاستعلامات SQL ولا أعرف كيفية ربطها.
مرحباً. لم أجد حلاً بعد. لا أستطيع فهم تفضيلات المستخدم اللازمة لتلقي رسائل البريد الإلكتروني الخاصة بإشعارات المشاركات للمواضيع التي تمت مشاهدتها. أي فكرة؟ شكراً!
فقط للتأكيد، ما زلت أستفسر وأحاول حل هذه المشكلة. لقد عزلت إعدادات أحد مستخدمينا الذي لديه الإعدادات الافتراضية لمتابعة فئة معينة (‘الإعلانات’) ولكنه لا يتلقى إشعارات البريد الإلكتروني للمنشورات الجديدة:
user
mailing_list_mode
email_digests
external_links_in_new_tab
enable_quoting
dynamic_favicon
automatically_unpin_topics
digest_after_minutes
auto_track_topics_after_msecs
new_topic_duration_minutes
last_redirected_to_top_at
email_previous_replies
email_in_reply_to
like_notification_frequency
mailing_list_mode_frequency
include_tl0_in_digests
notification_level_when_replying
theme_key_seq
allow_private_messages
homepage
theme_ids
hide_profile_and_presence
text_size_key
text_size_seq
email_level
email_messages_level
title_count_mode_key
enable_defer
timezone
enable_allowed_pm_users
dark_scheme
skip_new_user_tips
color_scheme
default_calendar
oldest_search_log_date
chat_enabled
only_chat_push_notifications
chat_sound
dismissed_channel_retention_reminder
dismissed_dm_retention_reminder
bookmark_auto_delete_preference
ignore_channel_wide_mention
chat_email_frequency
enable_experimental_sidebar
seen_popups
chat_header_indicator_preference
sidebar_link_to_filtered_list
sidebar_show_count_of_new_items
watched_precedence_over_muted
chat_separate_sidebar_mode
topics_unread_when_closed
show_thread_title_prompts
JohnDoe
false
true
true
true
false
true
10080
240000
2880
2023-06-13T08:25:13.000Z
1
false
1
1
true
2
0
true
NULL
{}
false
0
0
1
1
0
false
Europe/Somewhere
false
NULL
false
NULL
0
NULL
true
NULL
NULL
NULL
NULL
3
NULL
1
false
{1,2,3,4,5}
0
false
false
NULL
0
true
true
لا أرى حقًا سبب ظهور هذه المشكلة لأن هذا هو سطر المستخدم عند الاستعلام عن المستخدمين الذين يتابعون الفئة ‘الإعلانات’:
id
category
user
notification_level
last_seen_at
123
Announcements
JohnDoe
3
NULL
هل هناك أي إعدادات أخرى أفتقدها؟ هل يمكن أن يكون المستخدم قد نقر على إلغاء الاشتراك في أحد رسائل البريد الإلكتروني الإشعارية وهذا قد غيّر إعدادات البريد الإلكتروني الخاصة به؟
النقر على رابط “إلغاء الاشتراك” من رسالة بريد إلكتروني خاصة بالإشعارات ينقل المستخدم إلى صفحة يمكنه فيها تغيير تفضيلات الإشعارات الخاصة به. على سبيل المثال:
إذا اختار المستخدم إما خيار “إيقاف مشاهدة جميع المواضيع في فئة <category_name>” أو خيار “لا ترسل لي أي بريد إلكتروني من Discourse”، فسترى التغييرات في صفحة تفضيلاته. إما أن تكون الفئة قد تمت إزالتها من قائمة الفئات التي يشاهدها، أو سيتم تغيير تفضيلات بريده الإلكتروني بحيث يتم تعيين جميع الإعدادات في صفحة بريده الإلكتروني إلى “أبدًا”.
من الصعب رؤية التغيير إذا اختار المستخدم خيار “إيقاف مشاهدة هذا الموضوع”. في هذه الحالة، يمكنك انتحال شخصية المستخدم من صفحة المسؤول الخاصة به، ثم زيارة الموضوع لمعرفة ما إذا كان مستوى الإشعارات الخاص به للموضوع قد تغير من “مشاهدة” إلى “تتبع”. يمكنك أيضًا الحصول على معلومات حول مستوى الإشعارات الخاص به للموضوع من وحدة تحكم Rails:
قبل أن تنشغل بهذا كثيرًا، انتقل إلى صفحة سجلات البريد الإلكتروني التي تم تخطيها في الموقع. يمكنك الانتقال إليها من الشريط الجانبي للمسؤول. أدخل البريد الإلكتروني للمستخدم في حقل “إلى العنوان” الموجود في أعلى الصفحة. قد يوضح لك تفاصيل حول سبب عدم إرسال البريد الإلكتروني المحدد إلى المستخدم.
شكراً على الرد.
لقد تحققت من قسم رسائل البريد الإلكتروني التي تم تخطيها. هناك فقط حالات “تمت رؤية المستخدم مؤخرًا”، و"تم تعطيل إشعارات القائمة البريدية لمنشورات المستخدم الخاصة"، و"تجاوزت عتبة درجة الارتداد".
كنت أتساءل عما إذا كانت هناك إمكانية لتغيير الإعدادات لجميع المستخدمين بإحدى الطرق التالية:
تغيير إعداد جميع المستخدمين “كما لو” أنهم قاموا بالتسجيل للتو.
أو: أقوم بإنشاء مستخدم اختبار جديد وأستخدم هذه الإعدادات للصقها على جميع المستخدمين الحاليين الآخرين.
هناك إعداد الموقع “افتراضي فئات المراقبة”. إذا قمت بتغييره، فستُمنح خيار تطبيق التغييرات تاريخيًا. سيؤدي تحديد هذا الخيار إلى تحديث التفضيلات لجميع المستخدمين باستثناء المستخدمين الذين قاموا بتكوين تفضيلاتهم بشكل صريح لتلك الفئة في صفحة تفضيلاتهم. أعتقد أن هذه هي المشكلة التي تحاول تجنبها. يمكنك التعامل مع ذلك من وحدة تحكم Rails، لكنني سأتجنب هذا النهج.
يمكنك ببساطة إنشاء فئة جديدة للإعلانات وإضافة تلك الفئة إلى إعداد الموقع “افتراضي فئات المراقبة” الخاص بموقعك. يمكنك بعد ذلك ترتيب الموقع عن طريق نقل المواضيع من فئة الإعلانات القديمة إلى الفئة الجديدة. إذا كنت ترغب في الاحتفاظ باسم الفئة “الإعلانات”، فابدأ بإعادة تسمية فئة “الإعلانات” الأصلية إلى شيء آخر. أدرك أن هذا يعتبر حلاً مؤقتًا، ولكنه طريقة لحل المشكلة دون لمس وحدة تحكم Rails.