Kontext
Wir verfügen über ein System, mit dem wir programmgesteuert Benutzer über die API zu Gruppen hinzufügen und automatisch private Nachrichten für einzelne Gruppen erstellen – ebenfalls alles über die API.
Zum Beispiel könnten wir eine Gruppe namens cooking-class-101 haben.
Dafür erstellen wir eine private Nachricht mit cooking-class-101 und system als zwei Teilnehmer der privaten Nachricht.
Das hat sich für uns als sehr effektive Methode bewährt, um automatisch private Gruppenchats für Personengruppen zu erstellen.
Das Problem
Das Problem, das wir beobachten, ist, dass für normale Benutzer, die Teil der Gruppe sind, der Message Bus keine Updates zurückgibt, wenn neue Beiträge zum Thema hinzugefügt werden.
Zum Beispiel haben wir eine Gruppen-private Nachricht mit der Topic-ID 123. Wir können sehen, dass der Message Bus an den Kanal topic/123 angeschlossen ist, doch wenn ein anderer Benutzer einen Beitrag zum Thema erstellt, gibt der Message Bus nichts zurück, und der neueste Beitrag wird daher nicht automatisch angezeigt.
Wir haben bestätigt, dass der Message Bus im Allgemeinen wie erwartet funktioniert, da er korrekt Daten auf dem Kanal topic/presence/123 zurückgibt.
Im Gegensatz dazu gibt der Message Bus für Admin-Benutzer, die Teil der Gruppe sind, die zur privaten Nachricht hinzugefügt wurde, korrekt Daten auf dem Kanal topic/123 zurück, und der neue Beitrag wird daher in Echtzeit korrekt im Topic angezeigt.
Wir haben zudem bestätigt, dass ein normaler Benutzer, der Mitglied der Gruppe ist, wenn er separat zur Teilnahme am Topic eingeladen wird (so dass wir nun cooking-class-101, system und normaler-benutzer als Teilnehmer haben), korrekt Antworten vom Message Bus auf dem Kanal topic/123 erhält und daher neue Beiträge in Echtzeit sieht.
Recherche
Bei der Durchsicht des Discourse-Codes stoße ich auf Folgendes, was darauf hindeutet, dass für private Nachrichtentopics möglicherweise keine Gruppen über neu veröffentlichte Beiträge informiert werden: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub
Ich bin mir nicht ganz sicher, was topic.allowed_users im obigen Link für ein privates Nachrichtentopic mit einer hinzugefügten Gruppe zurückgeben soll, aber ich vermute, dass es die Liste der Benutzer nicht enthält, die als Teil der Gruppe existieren.
Ich habe dies als Fehler markiert, aber es könnte sich auch um beabsichtigtes Verhalten handeln?