Mensagem Privada de Grupo - Problema no Message Bus

Contexto
Temos um sistema no qual adicionamos usuários a grupos programaticamente, via API, e criamos automaticamente mensagens privadas para grupos individuais, tudo via API.

Por exemplo, podemos ter um grupo chamado: cooking-class-101

Para o qual criaremos uma mensagem privada com cooking-class-101 e system como dois participantes da mensagem privada.

Isso tem funcionado muito bem para nós como uma maneira de criar automaticamente chats privados de grupo para grupos de pessoas.

O Problema
O problema que estamos observando é que, para usuários comuns que fazem parte do grupo, o message bus não retorna nenhuma atualização quando novas postagens são adicionadas ao tópico.

Por exemplo, temos uma mensagem privada de grupo com o ID do tópico 123. Podemos ver que o message bus está inscrito no canal topic/123, no entanto, se outro usuário criar uma postagem no tópico, nada é retornado pelo message bus e, portanto, a postagem mais recente não aparece automaticamente.

Confirmamos que o message bus está funcionando geralmente conforme o esperado, pois ele retorna corretamente dados no canal topic/presence/123.

O contraponto ao acima é que, para usuários administradores que fazem parte do grupo que foi adicionado à mensagem privada, o message bus retorna corretamente dados no canal topic/123 e, portanto, a nova postagem é exibida corretamente no tópico em tempo real.

Também confirmamos que, se um usuário comum que é membro do grupo for convidado separadamente para participar do tópico (agora temos cooking-class-101, system e regular-user participando), eles começam a receber corretamente respostas do message bus no canal topic/123 e, portanto, veem novas postagens em tempo real.

Pesquisa
Explorando o código do Discourse, cheguei ao seguinte, que parece indicar que, para tópicos de mensagem privada, pode não haver notificação aos grupos sobre novas postagens publicadas: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub

Não tenho certeza absoluta do que topic.allowed_users no link acima deve retornar em um tópico de mensagem privada com um grupo adicionado a ele, mas minha suspeita é de que ele não inclui a lista de usuários que existem como parte do grupo.

Marquei isso como um bug, mas isso pode muito bem ser um comportamento intencional?

2 curtidas

Definitivamente parece suporte para mim, não um bug.

Comece pelo final, faça tudo na interface.

Funciona?

Por exemplo:

  • user1 é membro do grupo A
  • mensagem enviada para o grupo A
  • user1 visualiza a mensagem
  • user2 posta na mensagem
  • Você vê a resposta chegar em tempo real?

Se sim, então algo sobre como você está consumindo a API não está correto.

3 curtidas

Obrigado pela resposta, Sam.

Testamos isso diretamente na interface do Discourse e ele apresenta o mesmo comportamento errôneo: ou seja, a resposta não chega em tempo real, apenas uma notificação/alerta de notificação aparece.

É necessário atualizar a página para ver a última postagem.

No seu exemplo acima, se o user1 for um administrador, tudo funciona conforme o esperado.

2 curtidas

Bem, isso certamente parece ser um bug. Vamos testar, pode levar alguns dias.

4 curtidas

Excelente, obrigado! Me avise se precisar de mais alguma informação.

1 curtida

Oi, Sam, apenas deixando um comentário para ver se há algum lugar onde eu possa acompanhar o progresso desse bug. Não estou totalmente familiarizado com o processo de relatar e corrigir bugs no Discourse. Obrigado!

2 curtidas

Tenho quase certeza de que o Kris corrigiu. Recomendo que você teste novamente.

3 curtidas

Ei @danjw,

desculpe, esqueci de avisar você. Sam está certo, foi corrigido com o PR abaixo:

3 curtidas