我们正在运行一个实例,其中所有类别都被静音,并且所有用户默认处于邮件列表模式。
用户经常会收到来自他们已静音类别的单个主题的邮件。很难找到这种行为的任何模式。
这似乎看起来像这个错误 https://meta.discourse.org/t/still-getting-notifications-from-muted-user-in-mailing-list-mode/52764/5,但针对的是已静音的类别。
有什么(快速)修复方法吗?我们有超过 1k 用户和数百个类别 → 即使是很小的错误率也相当烦人。
抄送 @trobiyo
恐怕我们需要更多信息。这个问题真的随机吗?这些通知之间完全没有相关性/相似性吗?
也许他们参与了那些帖子,这会覆盖静音设置?这是我的猜测。
如果你无法重现问题,那它就不是一个 bug,或者至少不是一个 bug 报告。
但我认为邮件列表模式本应一直向所有人发送邮件,我很惊讶静音类别或用户竟然有效。我建议你不要使用邮件列表模式,而是让那些真正喜欢邮件的人关注他们想要的类别,而不是静音他们不想要的类别。但这听起来将是一项艰巨的任务,所以我认为现在提出这个建议可能已经太晚了。![]()
由于我无法在“已发送邮件”管理面板中搜索该主题,因此很难追踪,很遗憾。
自动跟踪默认设置为“从不”,受影响的用户都没有更改过。
嗯…… ¯\(ツ)/¯
使用邮件列表模式的唯一真正原因是,在这种情况下,人们可以通过邮件收到自己的消息——这是一个非常非常频繁的要求。
静音的另一个优点是:当有数百个类别时,它不会弄乱类别概览页面(是的,我们曾试图鼓励在从之前的论坛/邮件列表迁移时减少数量)。
好的。您是否安装了数据浏览器插件?如果您懂 SQL,这可能是快速深入了解这些已发送邮件的一种方法。
好的,我用数据浏览器玩了一下,但首先让我解释一下我们如何设置用户/通知:
- 首先,我们镜像了旧的邮件列表一段时间,以便在 discourse 中积累一些内容。
[注意:我们是在一个单独的开发实例中完成的,然后将帖子复制到生产实例] - 然后我们根据旧的邮件列表“订阅”了用户 → 因此,他们可能会根据他们以前的邮件列表订阅自动订阅(关注)某些类别。
所以我找了一个从未访问过网站的用户:例如,从未见过,没有阅读过帖子等。
然后我使用插件“用户正在关注/跟踪/静音的主题列表”。
我看到在通知级别 3 中,只有他被自动订阅的类别中的主题 - 很好。
当我检查级别 1 时,我看到很多主题 - 这可能也没关系,因为只有类别被静音,而不是主题,也就是说,它们应该是常规的 = 1。但出于某种原因,topic_last_visited_at 始终存在,并且对应于主题创建日期。
然后,有一些用户是通过电子邮件在生产实例中作为暂存用户创建的,然后激活 - 但从未访问过网站。对于这样的用户,我在通知级别 1 中看不到任何主题!
所以似乎最初的暂存用户可能被弄乱了。
问题:是否有任何方法可以重置用户的通知级别?
也许在此之前:有没有办法查看用户的帖子通知级别?
我在管理员网页面板中没有找到。这是否只能在数据库级别访问?
您应该能够使用 data-explorer 查询通知级别。我认为您可以在 List of emails of users watching a specific category 中修改一个有用的查询。
抱歉,数据浏览器不允许查看每个用户的帖子通知级别。我已确认收到这些虚假电子邮件的用户并未订阅这些类别。
除非我误解了你的意思,否则类似这样的东西应该可以:
-- [params]
-- int :topic_id
SELECT tu.user_id,
tu.notification_level
FROM topic_users tu
WHERE tu.topic_id = :topic_id
ORDER BY tu.notification_level DESC
感谢您提供的信息,@JammyDodger!
我检查了一个我从未访问过的主题 ID,但没有在列表中找到我自己。但是,当我访问该主题并重新运行查询时,我出现在列表中,通知级别 = 1。这是预期的吗?(请注意,自动跟踪已关闭!)
然后,对于那些导致许多用户收到虚假邮件的主题,我发现了一个包含大量用户(通知级别 = 1)的列表。其中一些是预设用户,他们实际上从未在网上登录,也没有参与过该主题的讨论。
最后,我发现那些被大规模订阅的主题大多是在网站上线、用户可以登录之前创建的。此外,订阅者数量相当稳定,似乎对应于当时网站的用户数量。
我应该指出,在某个时候,我启用了 allow changing staged user tracking(允许更改预设用户跟踪)设置,但后来又禁用了它。我还曾在某个时候启用/禁用了 mute all categories by default(默认静音所有类别)。
也许这一切都导致了这种混乱?
最后,我可能应该建议用户取消订阅不需要的主题。
通知级别1是“正常”,所以这是预期的。并且只有当您访问过该主题时,您才会在topic_users表中留下记录,所以这也是预期的。![]()
听起来您在调整某些设置时可能打开了一些主题通知级别。您能否专门查看一下那些在已静音类别中“关注”某个主题的人,看看他们是否是您最初问题中受影响的人?
实际上,如果他们在主题中被标记为“正常”,我认为这也会覆盖类别静音。您可能已经找到了答案。
我认为您之前的设置更改可能已将所有人的主题通知级别批量设置,而再次更改只会影响新主题的后续设置。
主题特定的通知级别在与类别或标签默认通知级别冲突时始终优先。
