Gruppen-Privatnachricht – Problem mit der Nachrichtenwarteschlange

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?

2 „Gefällt mir“

Für mich fühlt sich das definitiv eher nach einem Supportfall als nach einem Bug an.

Gehen Sie es rückwärts an und testen Sie alles über die Benutzeroberfläche.

Funktioniert es?

Zum Beispiel:

  • Benutzer1 ist Mitglied der Gruppe A
  • Eine Nachricht wird an Gruppe A gesendet
  • Benutzer1 betrachtet die Nachricht
  • Benutzer2 antwortet auf die Nachricht
  • Erscheint die Antwort live bei Ihnen?

Wenn ja, dann stimmt etwas mit Ihrer Art, die API zu nutzen, nicht.

3 „Gefällt mir“

Danke für die Antwort, Sam.

Wir haben dies innerhalb der Discourse-Benutzeroberfläche getestet, und es zeigt dasselbe fehlerhafte Verhalten – das heißt, die Antwort erscheint nicht in Echtzeit, sondern nur eine Benachrichtigung/Benachrichtigungsalarm.

Danach ist ein Seiten-Refresh erforderlich, um den neuesten Beitrag zu sehen.

In deinem obigen Beispiel funktioniert jedoch alles wie erwartet, wenn user1 ein Administrator ist.

2 „Gefällt mir“

Das klingt also definitiv nach einem Fehler. Wir werden es testen, das kann ein paar Tage dauern.

4 „Gefällt mir“

Großartig – danke! Lass mich wissen, falls du weitere Informationen benötigst.

1 „Gefällt mir“

Hallo Sam – ich wollte nur kurz nachfragen, ob es eine Möglichkeit gibt, den Fortschritt bei diesem Fehler zu verfolgen? Ich bin mir nicht ganz sicher, wie der Prozess für Fehlerberichte und -behebungen bei Discourse abläuft. Danke!

2 „Gefällt mir“

Ich bin mir ziemlich sicher, dass Kris es behoben hat. Ich empfehle dir, es erneut zu testen.

3 „Gefällt mir“

Hey @danjw,

Entschuldigung, ich habe vergessen, dir Bescheid zu geben. Sam hat recht, es wurde mit dem folgenden PR behoben:

3 „Gefällt mir“