Nous avons passé beaucoup de temps ces deux dernières années sur la fiabilité des notifications de chat Alex.
Quand avez-vous abandonné Chat ? @jordan-violet, rencontrez-vous toujours le problème mentionné dans le premier message ?
Nous avons passé beaucoup de temps ces deux dernières années sur la fiabilité des notifications de chat Alex.
Quand avez-vous abandonné Chat ? @jordan-violet, rencontrez-vous toujours le problème mentionné dans le premier message ?
Merci pour vos efforts, Sam. Pour ma part, les notifications ont fonctionné la plupart du temps, mais elles tombaient aléatoirement et nécessitaient de rafraîchir la page Discourse pour les faire fonctionner à nouveau - mais historiquement, elles n’ont jamais fonctionné du tout, ou ont fonctionné sporadiquement, et ont définitivement une tendance à être désactivées complètement lors des mises à niveau de Discourse.
Nous avons arrêté d’utiliser le chat cette semaine après l’avoir adopté au début de 2023. Les notifications dans Google Chat ont simplement fonctionné pour toute l’équipe, y compris ceux avec qui nous avons eu des problèmes réguliers ou que nous n’avons jamais réussi à faire fonctionner.
Bonjour @lindsey, nous rencontrons le même problème. Avez-vous des nouvelles de votre côté concernant l’état et une solution potentielle ?
Salut Micha,
Peux-tu essayer de faire un rapport plus détaillé sur les moments où tu ne reçois pas les notifications s’il te plaît ? Il y a beaucoup de cas (ios, android, pwa, hub Discourse, safari bureau, chrome, firefox, quel type de notification : canal public ? mp ? fil de discussion ? toutes ? étais-tu en train de naviguer lorsque tu aurais dû la recevoir ?..)
J’ai commencé à examiner ce code, mais je pense qu’un gros problème réside dans les « attentes ».
Il y a une grande famille de ce que je considérerais comme des problèmes connus que nous pouvons améliorer.
push notification time window (fenêtre de temps de notification push). Cela a provoqué : @mention, je visite l’application dans les 60 secondes. Pas de @mention.Honnêtement @lindsey / @j.jaffeux / @pmusaraj, j’ai l’impression que « devenir bruyant » entraînerait probablement la suppression de la grande majorité des problèmes que les gens rencontrent et des plaintes que nous avons vues au fil des ans concernant les notifications de chat.
update_message.rb qui publie un message dans le cadre d’une transaction. (dans les environnements multi-threadés, cela peut être manqué)hostname-chat-mention-general… ce n’est pas idéal pour les mentions car nous nous regroupons par canal et cela peut être déroutant si 4 personnes différentes vous ont mentionné à des moments différents sur le canal.En gros, supprimez par défaut beaucoup de la logique « oops nous n’aurions pas dû vous notifier ».
Complètement désactivé lors de la mise à niveau de Discourse, pour les auto-hébergeurs, cela peut certainement être dû à des problèmes de connectivité à la passerelle de notification push. Peut-être que les mises à niveau sur certains serveurs prennent des jours, peut-être est-ce un intranet pendant 24 heures pour une raison quelconque.
Code pertinent (via Gemini 3 pro)
La logique qui tue les abonnements après 3 échecs en 24 heures se trouve dans la méthode handle_generic_error.
La logique qui vérifie si un utilisateur est en ligne (« debounce ») et saute la notification push est située de manière centrale ici. Cela dépend de SiteSetting.push_notification_time_window_mins.
Le service UpdateMessage enveloppe l’étape publish dans une transaction de base de données. Cela peut provoquer des conditions de concurrence où le travail de notification tente de lire le message avant que la transaction ne soit validée.
Le code filtre explicitement pour following: true lors du traitement des mentions pour les canaux publics, empêchant les notifications pour les utilisateurs qui ne suivent pas le canal.
La logique de génération de balises qui déduplique les notifications par canal (les regroupant) est définie ici :
C’est déjà quelque chose que nous avons fait beaucoup ces dernières années, j’ai supprimé beaucoup du code « intelligent », qui est toujours difficile à suivre et sujet à des interrogations. Mais oui, il reste encore divers chemins de code.
Organigramme obligatoire et tristement célèbre des notifications Slack :

C’est pourquoi j’ai demandé plus de détails plus haut, il y a tellement de situations…
J’ADORERAIS voir le « mode bruyant » comme préréglage à l’échelle du système.
« Désolé, je ne vois ce message que maintenant — les notifications push n’ont pas fonctionné à nouveau. Je veux récupérer mon Slack/Whatsapp/Signal/XYZ »
C’est de loin le plus gros problème auquel nous sommes confrontés avec notre adoption de Discourse en tant qu’intranet social d’entreprise.