Wir haben in den letzten Jahren erhebliche Zeit in die Zuverlässigkeit von Chat-Benachrichtigungen investiert, Alex.
Wann hast du mit dem Chat aufgehört? @jordan-violet, tritt das Problem in der OP immer noch auf?
Wir haben in den letzten Jahren erhebliche Zeit in die Zuverlässigkeit von Chat-Benachrichtigungen investiert, Alex.
Wann hast du mit dem Chat aufgehört? @jordan-violet, tritt das Problem in der OP immer noch auf?
Danke für deine Bemühungen, Sam. Persönlich funktionierten die Benachrichtigungen bei mir meistens, fielen aber zufällig aus und erforderten ein Neuladen der Discourse-Seite, um sie wieder zum Laufen zu bringen – historisch gesehen funktionierten sie aber nie, oder nur sporadisch, und hatten definitiv die Angewohnheit, bei Discourse-Upgrades komplett deaktiviert zu werden.
Wir haben diese Woche aufgehört, Chat zu nutzen, nachdem wir ihn Anfang 2023 eingeführt hatten. Benachrichtigungen in Google Chat funktionierten einfach für das gesamte Team, einschließlich derjenigen, mit denen wir regelmäßig Probleme hatten oder die wir nie zum Laufen gebracht haben.
Hallo @lindsey, wir haben das gleiche Problem. Haben Sie Neuigkeiten von Ihrer Seite bezüglich des Status und einer möglichen Lösung?
Hallo Micha,
könntest du bitte versuchen, einen detaillierteren Bericht darüber zu erstellen, wann du die Benachrichtigungen nicht erhältst? Es gibt viele Fälle (iOS, Android, PWA, Discourse Hub, Desktop Safari, Chrome, Firefox, welche Art von Benachrichtigung: öffentlicher Kanal? DM? Thread? Alle? Hast du gesurft, als du sie hättest erhalten sollen?..).
Ich habe angefangen, mir diesen Code anzusehen, aber ich denke, ein großes Problem liegt bei den „Erwartungen“.
Es gibt eine große Familie von Problemen, die ich als bekannte Probleme betrachten würde, die wir verbessern können.
push notification time window. Dies führte dazu: @Erwähnung, ich besuche die App innerhalb von 60 Sekunden. Keine @Erwähnung.Ehrlich gesagt, @lindsey / @j.jaffeux / @pmusaraj, ich habe das Gefühl, dass „laut werden“ wahrscheinlich die überwiegende Mehrheit der Probleme und Beschwerden beseitigen würde, die wir im Laufe der Jahre bezüglich Chat-Benachrichtigungen gesehen haben.
update_message.rb, das eine Nachricht innerhalb einer Transaktion veröffentlicht. (In Multi-Thread-Umgebungen kann dies verloren gehen)Im Grunde genommen die ganze „Ups, wir hätten Sie nicht benachrichtigen sollen“-Logik standardmäßig entfernen.
Bei einem Discourse-Upgrade komplett deaktiviert, für Self-Hosters kann dies definitiv auf Verbindungsprobleme mit dem Push-Gateway zurückzuführen sein. Vielleicht dauern Upgrades auf einigen Servern Tage, vielleicht ist es aus irgendeinem Grund 24 Stunden lang ein Intranet.
Relevanter Code (via Gemini 3 pro)
Die Logik, die Abonnements nach 3 Fehlern innerhalb von 24 Stunden beendet, befindet sich in der Methode handle_generic_error.
Die Logik, die prüft, ob ein Benutzer online ist („Debounce“) und die Push-Benachrichtigung überspringt, befindet sich zentral hier. Dies hängt von SiteSetting.push_notification_time_window_mins ab.
Der Dienst UpdateMessage fasst den publish-Schritt in einer Datenbanktransaktion zusammen. Dies kann zu Race Conditions führen, bei denen der Benachrichtigungsjob versucht, die Nachricht zu lesen, bevor die Transaktion committet wird.
Der Code filtert explizit nach following: true, wenn Erwähnungen für öffentliche Kanäle verarbeitet werden, wodurch verhindert wird, dass Benutzer, die dem Kanal nicht folgen, Benachrichtigungen erhalten.
Die Tag-Generierungslogik, die Benachrichtigungen pro Kanal dedupliziert (zusammenfasst), ist hier definiert:
Das ist etwas, das wir in den letzten Jahren bereits häufig getan haben. Ich habe viel vom „intelligenten“ Code entfernt, der immer schwer nachzuvollziehen und anfällig für Nachfragen ist. Aber ja, es gibt immer noch verschiedene Code-Pfade.
Obligatorischer berüchtigter Slack-Benachrichtigungs-Flussdiagramm:

Deshalb habe ich oben nach mehr Details gefragt, es gibt so viele Situationen…
Ich würde es LIEBEN, wenn „laut werden“ als systemweite Voreinstellung eingeführt würde.
„Entschuldigung, ich sehe diese Nachricht erst jetzt – die Push-Benachrichtigungen haben wieder nicht funktioniert. Ich will mein Slack/Whatsapp/Signal/XYZ zurück“
Dies ist bei weitem das größte Problem, mit dem wir bei der Einführung von Discourse als unternehmensweites soziales Intranet konfrontiert sind.