لقد أمضينا وقتًا طويلاً على مدار العامين الماضيين في موثوقية إشعارات الدردشة يا أليكس.
متى تخلت عن الدردشة؟ هل ما زلت تواجه المشكلة في OP يا @jordan-violet؟
لقد أمضينا وقتًا طويلاً على مدار العامين الماضيين في موثوقية إشعارات الدردشة يا أليكس.
متى تخلت عن الدردشة؟ هل ما زلت تواجه المشكلة في OP يا @jordan-violet؟
شكراً لجهودك يا سام. بالنسبة لي شخصياً، كانت الإشعارات تعمل في معظم الأوقات، لكنها كانت تنقطع بشكل عشوائي وتتطلب تحديث صفحة Discourse لإعادة تشغيلها - ولكن تاريخياً لم تكن تعمل على الإطلاق، أو كانت تعمل بشكل متقطع، وبالتأكيد لديها عادة الانقطاع تماماً عند ترقية Discourse.
توقفنا عن استخدام الدردشة هذا الأسبوع بعد اعتمادها في بداية عام 2023. كانت الإشعارات في Google Chat تعمل بشكل جيد للفريق بأكمله بما في ذلك أولئك الذين واجهنا معهم مشاكل منتظمة أو لم نتمكن أبداً من جعلها تعمل.
مرحباً @lindsey، نحن نواجه نفس المشكلة. هل لديك أي تحديث من جانبك بخصوص الحالة وإصلاح محتمل؟
مرحباً ميشا،
هل يمكنك محاولة إعداد تقرير أكثر تفصيلاً حول متى لا تصلك الإشعارات من فضلك؟ هناك الكثير من الحالات (نظام التشغيل iOS، أندرويد، تطبيق الويب التقدمي (PWA)، مركز ديسكورس (Discourse Hub)، سفاري لسطح المكتب، كروم، فايرفوكس، ما نوع الإشعار: قناة عامة؟ رسالة مباشرة؟ موضوع فرعي؟ كلها؟ هل كنت تتصفح عندما كان يجب أن تتلقاها؟…).
لقد بدأت ألقي نظرة على هذا الكود، ولكني أشعر أن هناك مشكلة كبيرة تتعلق بـ “التوقعات”
هناك عائلة كبيرة مما أعتبره مشاكل معروفة يمكننا تحسينها.
لأكون صادقًا @lindsey / @j.jaffeux / @pmusaraj، أشعر أن “الجهر بالرأي” قد يؤدي إلى إزالة الغالبية العظمى من المشاكل التي يواجهها الناس والشكاوى التي رأيناها على مر السنين بخصوص إشعارات الدردشة.
أرسل دائمًا إشعارات @mention فورًا (الإعداد الافتراضي للموقع)؛ يمكن للمواقع التي تريد تأخيرًا تكوينه.
أرسل دائمًا إشعارات @mention من جميع القنوات، واستبعد فقط القنوات التي يكتمها المستخدمون صراحةً (أو ليس لديهم إذن برؤيتها)، وهذا يتماشى مع السلوك الموجود في المنتدى.
هناك شيء غريب في update_message.rb يقوم بنشر رسالة داخل معاملة. (في البيئات متعددة الخيوط يمكن أن تضيع هذه الرسالة)
إذا قمنا بإنهاء اشتراك في PWA، اعرض لافتة (banner) في PWA تقول - إشعارات الدفع غير مهيأة، هل تريد تهيئتها؟ ربما لا تقم بإنهاء الاشتراك إلا بعد أسبوع / أسبوعين بدلاً من يوم واحد.
يتم إزالة تكرار علامات الدفع (Push tags) لكل قناة، hostname-chat-mention-general … هذا ليس مثاليًا للإشارات لأننا ندمج لكل قناة وقد يكون مربكًا إذا أشار 4 أشخاص مختلفون إليك في أوقات مختلفة في القناة.
أرسل دائمًا الإشعارات حتى لو كان المستخدم متصلاً بالإنترنت (افتراضيًا) - اسمح للمستخدمين بتجاوز هذا السلوك إذا رغبوا في ذلك.
إضافة رائعة لكل هذا هي دعم إشعارات الدفع من الدرجة الأولى على جميع المواقع للأشخاص الذين لديهم معرف Discourse (عبر معرف Discourse) - سيمنح هذا Hub شعورًا متسقًا عبر كل شيء.
بشكل أساسي، تخلص من الكثير من منطق “عفوًا، لم يكن ينبغي أن نرسل لك إشعارًا” بشكل افتراضي.
تم إيقاف التشغيل بالكامل عند ترقية Discourse، بالنسبة للمستضافين ذاتيًا، يمكن أن يكون بالتأكيد بسبب مشاكل الاتصال ببوابة الدفع. ربما تستغرق الترقيات على بعض الخوادم أيامًا، وربما تكون شبكة داخلية لمدة 24 ساعة لسبب ما.
الكود ذو الصلة (عبر Gemini 3 pro)
يوجد المنطق الذي ينهي الاشتراكات بعد 3 إخفاقات في 24 ساعة في الطريقة handle_generic_error.
المنطق الذي يتحقق مما إذا كان المستخدم متصلاً بالإنترنت (“تخفيف”) ويتخطى إشعار الدفع موجود مركزيًا هنا. يعتمد هذا على SiteSetting.push_notification_time_window_mins.
تغلف خدمة UpdateMessage خطوة publish داخل معاملة قاعدة بيانات. يمكن أن يسبب هذا شروط سباق حيث تحاول وظيفة الإشعار قراءة الرسالة قبل التزام المعاملة.
يقوم الكود صراحةً بتصفية following: true عند معالجة الإشارات للقنوات العامة، مما يمنع الإشعارات للمستخدمين الذين لا يتابعون القناة.
يتم تعريف منطق إنشاء العلامات الذي يزيل التكرار في الإشعارات لكل قناة (ويقوم بدمجها) هنا:
هذا شيء قمنا به بالفعل كثيرًا في السنوات الماضية، لقد أزلت الكثير من التعليمات البرمجية “الذكية”، والتي يصعب دائمًا متابعتها وعرضة للاستجوابات. ولكن نعم، لا تزال هناك مسارات تعليمات برمجية مختلفة.
مخطط تدفق إشعار Slack سيئ السمعة إلزامي:

لهذا السبب كنت أطلب المزيد من التفاصيل أعلاه، هناك العديد من المواقف…
أحب أن أرى “الذهاب بصوت عالٍ” كإعداد مسبق على مستوى النظام.
“آسف، أرى هذه الرسالة الآن فقط — إشعارات الدفع لم تعمل مرة أخرى. أريد استعادة Slack/Whatsapp/Signal/XYZ الخاص بي”
هذه هي أكبر مشكلة نواجهها في اعتمادنا على Discourse كإنترانت اجتماعي للمؤسسات.