Мы потратили значительное время за последние пару лет на надежность уведомлений чата, Алекс.
Когда вы перестали использовать чат? @jordan-violet, вы все еще сталкиваетесь с проблемой, описанной в исходном сообщении?
Мы потратили значительное время за последние пару лет на надежность уведомлений чата, Алекс.
Когда вы перестали использовать чат? @jordan-violet, вы все еще сталкиваетесь с проблемой, описанной в исходном сообщении?
Спасибо за ваши усилия, Сэм. Лично для меня уведомления работали в большинстве случаев, но иногда случайно переставали функционировать, и требовалось обновить страницу Discourse, чтобы они снова заработали. Однако исторически они либо вообще не работали, либо работали с перебоями, и определенно имеют привычку полностью отключаться при обновлении Discourse.
Мы перестали использовать чат на этой неделе после его внедрения в начале 2023 года. Уведомления в Google Chat просто работали для всей команды, включая тех, у кого мы сталкивались с регулярными проблемами или так и не смогли заставить их работать.
Привет, @lindsey, у нас возникает та же проблема. Есть ли у вас какие-либо обновления относительно статуса и возможного исправления?
Привет, Миха,
не мог бы ты, пожалуйста, составить более подробный отчёт о том, когда уведомления не приходят? Случаев может быть много: iOS, Android, PWA, Discourse Hub, десктопный Safari, Chrome, Firefox. Какой тип уведомления: публичный канал, личное сообщение, ветка, все? Ты был в браузере в момент, когда должно было прийти уведомление?..
Я начал изучать этот код, но чувствую, что основная проблема связана с «ожиданиями»:
Существует целый ряд проблем, которые я считаю известными, и которые мы можем улучшить.
push notification time window. Это привело к следующему: @упоминание, я случайно зашёл в приложение в течение 60 секунд — и никакого @упоминания.Честно говоря, @lindsey / @j.jaffeux / @pmusaraj, мне кажется, что «громкое заявление» скорее всего приведёт к устранению подавляющего большинства проблем и жалоб, с которыми мы сталкивались за годы в отношении уведомлений чата.
update_message.rb есть что-то странное, что публикует сообщение внутри транзакции. (в многопоточных средах это может быть потеряно)По сути, нужно убрать большую часть логики «ой, мы не должны были вас уведомлять» по умолчанию.
Полное отключение при обновлении Discourse у самохостеров может быть связано с проблемами подключения к шлюзу push-уведомлений. Возможно, обновления на некоторых серверах занимают дни, или, возможно, на 24 часа возникает проблема с интранетом.
Соответствующий код (через Gemini 3 pro)
Логика отключения подписок после 3 неудачных попыток за 24 часа находится в методе handle_generic_error.
Логика проверки, находится ли пользователь онлайн («дебаунсирование»), и пропуска push-уведомления находится здесь. Она зависит от SiteSetting.push_notification_time_window_mins.
Сервис UpdateMessage оборачивает шаг publish в транзакцию базы данных. Это может вызвать гонки, когда задача уведомления пытается прочитать сообщение до фиксации транзакции.
Код явно фильтрует записи по following: true при обработке упоминаний для публичных каналов, предотвращая уведомления для пользователей, не подписанных на канал.
Логика генерации тегов, которая дублирует уведомления по каналу (группируя их), определена здесь:
Мы уже много раз делали это в последние годы. Я убрал много «умного» кода, который всегда сложно отслеживать и который часто вызывает вопросы. Но да, различные пути выполнения кода всё ещё существуют.
Обязательная печально известная блок-схема потока уведомлений Slack:
Именно поэтому я просил выше больше подробностей — ситуаций так много…
Мне бы очень хотелось видеть «громкий режим» как предустановку для всей системы.
«Извините, я увидел это сообщение только сейчас — уведомления снова не сработали. Хочу вернуть свои Slack/WhatsApp/Signal/XYZ»
Это, безусловно, самая большая проблема, с которой мы сталкиваемся при внедрении Discourse в качестве корпоративной социальной интранет-сети.