그룹 개인 메시지 - 메시지 버스 문제

Context
우리는 API를 통해 사용자를 그룹에 프로그래밍 방식으로 추가하고, 각 그룹에 대해 개인 메시지를 자동으로 생성하는 시스템을 갖추고 있습니다. 이 모든 작업은 API를 통해 이루어집니다.

예를 들어, cooking-class-101이라는 이름의 그룹이 있다고 가정해 보겠습니다.

이 그룹을 위해 cooking-class-101과 system을 두 참여자로 하여 개인 메시지를 생성합니다.

이 방식은 사람들을 그룹으로 묶어 개인 그룹 채팅을 자동으로 생성하는 데 매우 효과적으로 작동해 왔습니다.

The Problem
우리가 겪고 있는 문제는 일반 사용자가 그룹의 일원인 경우, 주제(topic)에 새 게시물이 추가될 때 메시지 버스(message bus)가 업데이트를 반환하지 않는다는 것입니다.

예를 들어, 주제 ID가 123인 그룹 개인 메시지가 있다고 합시다. 메시지 버스가 topic/123 채널에 구독되어 있는 것을 확인할 수 있지만, 다른 사용자가 해당 주제에 게시물을 생성해도 메시지 버스가 아무것도 반환하지 않아 최신 게시물이 자동으로 표시되지 않습니다.

메시지 버스가 일반적으로 의도대로 작동하는지 확인해 보았는데, topic/presence/123 채널에서는 데이터를 올바르게 반환하고 있습니다.

위와 반대로, 개인 메시지에 추가된 그룹의 일원인 관리자 사용자의 경우, 메시지 버스는 topic/123 채널에서 데이터를 올바르게 반환하며, 따라서 새 게시물이 주제에 실시간으로 올바르게 표시됩니다.

또한, 그룹의 일원인 일반 사용자가 주제 참여를 별도로 초대받으면(즉, 이제 cooking-class-101, system, regular-user이 참여하는 상태가 되면), 메시지 버스가 topic/123 채널에서 응답을 올바르게 받기 시작하여 새 게시물을 실시간으로 확인할 수 있게 됩니다.

Research
Discourse 코드를 살펴본 결과, 아래 링크로 이어졌는데, 개인 메시지 주제에서는 새 게시물이 게시될 때 그룹에 알림을 보내지 않는 것으로 보입니다: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub

위 링크의 topic.allowed_users가 그룹이 추가된 개인 메시지 주제에서 무엇을 반환해야 하는지 정확히 확신은 없지만, 제 추측으로는 그룹의 일부로 존재하는 사용자 목록이 포함되지 않는 것 같습니다.

이것을 버그로 태그했지만, 의도된 동작일 수도 있습니다?

2개의 좋아요

저한테는 버그라기보다는 지원 문제처럼 느껴집니다.

역순으로 진행해서 모든 작업을 UI에서 수행해 보세요.

동작하나요?

예를 들어:

  • user1이 그룹 A의 멤버입니다
  • 그룹 A로 메시지가 전송됩니다
  • user1이 메시지를 확인합니다
  • user2가 해당 메시지에 답글을 올립니다
  • 답글이 실시간으로 표시되나요?

실시간으로 표시된다면, API를 사용하는 방식에 문제가 있는 것입니다.

3개의 좋아요

답변해 주셔서 감사합니다, Sam.

Discourse UI에서 직접 테스트해 보았으나 동일한 오류가 발생했습니다. 즉, 실시간으로 답글이 표시되지 않고 알림만 수신됩니다.

최신 게시글을 확인하려면 페이지를 새로고침해야 합니다.

위 예시에서 user1이 관리자라면 모든 기능이 정상적으로 작동합니다.

2개의 좋아요

음, 분명히 버그인 것 같네요. 테스트를 진행해 보겠습니다. 며칠 정도 걸릴 수 있습니다.

4개의 좋아요

훌륭해요, 감사합니다! 추가 정보가 필요하면 알려 주세요.

1개의 좋아요

샘, 안녕하세요 - 이 버그의 진행 상황을 추적할 수 있는 곳이 있는지 확인하려고 댓글을 남깁니다. Discourse의 버그 보고/수정 과정에 대해 잘 모르는 편이라요. 감사합니다!

2개의 좋아요

크리스가 고쳤을 가능성이 높으니 재테스트를 권장합니다.

3개의 좋아요

Hey @danjw,

죄송합니다, 말씀드린 걸 깜빡했어요. Sam이 맞아요, 아래 PR로 수정되었습니다:

3개의 좋아요