背景
我们有一个系统,通过 API 以编程方式将用户添加到群组,并自动为各个群组创建私信,全部通过 API 完成。
例如,我们可能有一个名为 cooking-class-101 的群组。
我们会为该群组创建一条私信,参与者为 cooking-class-101 和 system。
这种方式为我们自动为人群创建私密群聊提供了非常有效的解决方案。
问题
我们遇到的问题是:对于属于该群组的普通用户,当话题中新增帖子时,消息总线(message bus)不会返回任何更新。
例如,我们有一条群组私信,其话题 ID 为 123。我们可以确认消息总线已订阅通道 topic/123,但如果其他用户在该话题中发布新帖子,消息总线不会返回任何数据,因此最新帖子不会自动显示。
我们已确认消息总线整体运行正常,因为它确实能正确返回 topic/presence/123 通道上的数据。
与之相对的是:对于属于该群组且已被加入私信的管理员用户,消息总线确实能正确返回 topic/123 通道上的数据,因此新帖子能够实时正确显示在话题中。
我们还确认,如果一位属于该群组的普通用户被单独邀请参与该话题(此时参与者包括 cooking-class-101、system 和该普通用户),那么他们就能开始正确接收来自 topic/123 通道的消息总线响应,从而实时看到新帖子。
研究
深入查阅 Discourse 代码后,我发现了以下内容,看起来对于私信话题,系统可能并未通知群组有关新帖子发布的信息:
我不太确定在将群组加入私信话题的情况下,上述链接中的 topic.allowed_users 应该返回什么内容,但我怀疑它并未包含作为该组成员的用户列表。
我已将此问题标记为 bug,但这也有可能属于预期行为?