Abbiamo dedicato molto tempo negli ultimi due anni all’affidabilità delle notifiche di chat Alex.
Quando hai abbandonato Chat? @jordan-violet stai ancora riscontrando il problema menzionato nell’OP?
Abbiamo dedicato molto tempo negli ultimi due anni all’affidabilità delle notifiche di chat Alex.
Quando hai abbandonato Chat? @jordan-violet stai ancora riscontrando il problema menzionato nell’OP?
Grazie per i tuoi sforzi, Sam. Personalmente, le notifiche hanno funzionato la maggior parte delle volte, ma si interrompevano casualmente e richiedevano l’aggiornamento della pagina Discourse per farle funzionare di nuovo, ma storicamente non hanno mai funzionato affatto, o hanno funzionato sporadicamente, e sicuramente hanno l’abitudine di essere disattivate completamente durante l’aggiornamento di Discourse.
Abbiamo smesso di usare la chat questa settimana dopo averla adottata all’inizio del 2023. Le notifiche in Google Chat hanno funzionato per tutto il team, compresi coloro con cui abbiamo avuto problemi regolari o che non siamo mai riusciti a far funzionare.
Ciao @lindsey, stiamo riscontrando lo stesso problema. Hai aggiornamenti da parte tua riguardo allo stato e a una potenziale soluzione?
Ciao Micha,
puoi provare a creare un resoconto più dettagliato di quando non ricevi le notifiche, per favore? Ci sono molti casi (ios, android, pwa, discourse hub, desktop safari, chrome, firefox, che tipo di notifica: canale pubblico? dm? thread? tutte? stavi navigando quando avresti dovuto riceverla?..)
Ho iniziato a dare un’occhiata a questo codice, ma ritengo che un grosso problema riguardi le “aspettative”.
C’è una grande famiglia di quelli che considererei problemi noti che possiamo migliorare.
push notification time window (finestra temporale notifica push). Questo ha causato: @menzione, capita che io visiti l’app entro 60 secondi. Nessuna @menzione.Onestamente @lindsey / @j.jaffeux / @pmusaraj, ritengo che “andare in chiaro” probabilmente risolverebbe la stragrande maggioranza dei problemi che le persone hanno e delle lamentele che abbiamo visto negli anni riguardo alle notifiche di chat.
update_message.rb che pubblica un messaggio all’interno di una transazione. (negli ambienti multi-thread questo può andare perso)In pratica, eliminare per impostazione predefinita gran parte della logica del tipo “ops, non avremmo dovuto notificarti”.
Disattivate completamente durante l’aggiornamento di Discourse, per gli self-hoster può essere sicuramente dovuto a problemi di connettività al gateway di push. Forse gli aggiornamenti su alcuni server richiedono giorni, forse la rete è interna per 24 ore per qualche motivo.
Codice pertinente (tramite Gemini 3 pro)
La logica che elimina le sottoscrizioni dopo 3 errori in 24 ore si trova nel metodo handle_generic_error.
La logica che controlla se un utente è online (“debounce”) e salta la notifica push è posizionata centralmente qui. Si basa su SiteSetting.push_notification_time_window_mins.
Il servizio UpdateMessage racchiude il passaggio publish all’interno di una transazione di database. Questo può causare condizioni di gara in cui il job di notifica tenta di leggere il messaggio prima che la transazione venga commessa.
Il codice filtra esplicitamente per following: true quando elabora le menzioni per i canali pubblici, impedendo le notifiche agli utenti che non seguono il canale.
La logica di generazione dei tag che deduplica le notifiche per canale (collassandole) è definita qui:
È qualcosa che abbiamo già fatto molto negli ultimi anni, ho rimosso gran parte del codice “intelligente”, che è sempre difficile da seguire e soggetto a interrogazioni. Ma sì, ci sono ancora vari percorsi di codice.
Diagramma di flusso obbligatorio delle famigerate notifiche di Slack:

Ecco perché ho chiesto maggiori dettagli sopra, ci sono così tante situazioni…
Mi piacerebbe molto vedere “andare a tutto volume” come predefinito a livello di sistema.
“Scusa, vedo questo messaggio solo ora — le notifiche push non hanno funzionato di nuovo. Voglio indietro il mio Slack/Whatsapp/Signal/XYZ”
Questo è di gran lunga il problema più grande che stiamo affrontando con l’adozione di Discourse come intranet sociale aziendale.