Contesto
Abbiamo un sistema che ci permette di aggiungere programmatically utenti ai gruppi tramite l’API e di creare automaticamente messaggi privati per gruppi individuali, tutto tramite l’API.
Ad esempio, potremmo avere un gruppo chiamato: cooking-class-101
Per il quale creeremo un messaggio privato con cooking-class-101 e system come due partecipanti al messaggio privato.
Questo ha funzionato molto bene per noi come metodo per creare automaticamente chat di gruppo private per gruppi di persone.
Il Problema
Il problema che stiamo riscontrando è che, per gli utenti normali che fanno parte del gruppo, il message bus non restituisce alcun aggiornamento quando vengono aggiunti nuovi post al topic.
Ad esempio, abbiamo un messaggio privato di gruppo con ID topic 123. Possiamo vedere che il message bus è sottoscritto al canale topic/123, eppure, se un altro utente crea un post sul topic, il message bus non restituisce nulla e quindi l’ultimo post non viene mostrato automaticamente.
Abbiamo confermato che il message bus funziona generalmente come previsto, poiché restituisce correttamente i dati sul canale topic/presence/123.
La controparte di quanto sopra è che, per gli utenti admin che fanno parte del gruppo che è stato aggiunto al messaggio privato, il message bus restituisce correttamente i dati sul canale topic/123 e il nuovo post viene quindi mostrato correttamente sul topic in tempo reale.
Abbiamo anche confermato che, se un utente normale che è membro del gruppo viene invitato separatamente a partecipare al topic (quindi ora abbiamo cooking-class-101, system e regular-user come partecipanti), allora inizia a ricevere correttamente le risposte dal message bus sul canale topic/123 e quindi vede i nuovi post in tempo reale.
Ricerca
Scavando nel codice di Discourse, sono arrivato al seguente punto che sembra indicare che, per i topic di messaggi privati, potrebbe non esserci una notifica ai gruppi riguardo ai nuovi post pubblicati: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub
Non sono completamente sicuro di cosa dovrebbe restituire topic.allowed_users nel link sopra per un topic di messaggio privato con un gruppo aggiunto, ma sospetto che non includa l’elenco degli utenti che fanno parte del gruppo.
Ho etichettato questo come un bug, ma potrebbe essere un comportamento intenzionale?