Контекст
У нас есть система, которая программно добавляет пользователей в группы через API и автоматически создает личные сообщения для отдельных групп, также полностью через API.
Например, у нас может быть группа с названием: cooking-class-101
Для неё мы создаем личное сообщение с участниками cooking-class-101 и system.
Это отлично работает для нас как способ автоматического создания приватных чатов для групп людей.
Проблема
Проблема, которую мы наблюдаем, заключается в том, что для обычных пользователей, являющихся частью группы, шина сообщений не возвращает никаких обновлений при добавлении новых постов в тему.
Например, у нас есть личное сообщение группы с идентификатором темы 123. Мы видим, что шина сообщений подписана на канал topic/123, однако, если другой пользователь создает пост в теме, шина сообщений ничего не возвращает, и поэтому последний пост не отображается автоматически.
Мы подтвердили, что шина сообщений в целом работает как ожидается, так как она корректно возвращает данные на канале topic/presence/123.
В противовес этому, для пользователей-администраторов, которые являются частью группы, добавленной в личное сообщение, шина сообщений корректно возвращает данные на канале topic/123, и новый пост поэтому правильно отображается в теме в реальном времени.
Мы также подтвердили, что если обычного пользователя, являющегося членом группы, отдельно пригласить участвовать в теме (то есть теперь в теме участвуют cooking-class-101, system и обычный пользователь), то он начинает корректно получать ответы от шины сообщений на канале topic/123 и, следовательно, видеть новые посты в реальном времени.
Исследование
Изучение кода Discourse привело меня к следующему, что выглядит так, будто для тем личных сообщений группы не уведомляются о публикации новых постов: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub
Я не до конца уверен, что должно возвращать свойство topic.allowed_users по ссылке выше для темы личного сообщения, к которой добавлена группа, но я подозреваю, что оно не включает список пользователей, состоящих в этой группе.
Я пометил это как баг, но это может быть и ожидаемым поведением?