Mensaje privado grupal - Problema del bus de mensajes

Contexto
Tenemos un sistema mediante el cual añadimos usuarios a grupos de forma programática, a través de la API, y creamos automáticamente mensajes privados para grupos individuales, todo ello mediante la API.

Por ejemplo, podríamos tener un grupo llamado: cooking-class-101

Para el cual crearemos un mensaje privado con cooking-class-101 y system como los 2 participantes en el mensaje privado.

Esto ha funcionado muy bien para nosotros como una forma de crear automáticamente chats privados grupales para grupos de personas.

El Problema
El problema que estamos observando es que, para usuarios normales que forman parte del grupo, el message bus no devuelve ninguna actualización cuando se añaden nuevos mensajes al tema.

Por ejemplo, tenemos un mensaje privado de grupo con el ID de tema 123. Podemos ver que el message bus está suscrito al canal topic/123, sin embargo, si otro usuario crea un mensaje en el tema, el message bus no devuelve nada y, por lo tanto, el último mensaje no se muestra automáticamente.

Hemos confirmado que el message bus funciona generalmente como se espera, ya que sí devuelve datos correctamente en el canal topic/presence/123.

La contrapartida a lo anterior es que, para usuarios administradores que forman parte del grupo que se ha añadido al mensaje privado, el message bus devuelve datos correctamente en el canal topic/123 y, por lo tanto, el nuevo mensaje se muestra correctamente en el tema en tiempo real.

También hemos confirmado que, si un usuario normal que es miembro del grupo es invitado por separado a participar en el tema (de modo que ahora tenemos cooking-class-101, system y regular-user participando), entonces comienzan a recibir correctamente respuestas del message bus en el canal topic/123 y, por lo tanto, ven los nuevos mensajes en tiempo real.

Investigación
Al indagar en el código de Discourse, llego a lo siguiente, que parece indicar que, para los temas de mensajes privados, es posible que no se estén notificando a los grupos sobre la publicación de nuevos mensajes: discourse/app/models/post.rb at b7b81afe553a79f58f79f49a6c2ceff831aa4ec7 · discourse/discourse · GitHub

No estoy completamente seguro de qué debería devolver topic.allowed_users en el enlace anterior en un tema de mensaje privado con un grupo añadido, pero sospecho que no incluye la lista de usuarios que existen como parte del grupo.

He etiquetado esto como un error, pero ¿podría ser este comportamiento intencionado?

2 Me gusta

Definitivamente parece soporte para mí, no un error.

Empieza desde el final y haz todo en la interfaz de usuario.

¿Funciona?

Por ejemplo:

  • user1 es miembro del grupo A
  • se envía un mensaje al grupo A
  • user1 ve el mensaje
  • user2 publica una respuesta en el mensaje
  • ¿Ves llegar la respuesta en tiempo real?

Si es así, entonces algo en la forma en que estás consumiendo la API no es correcto.

3 Me gusta

Gracias por la respuesta, Sam.

Lo hemos probado desde la interfaz de Discourse y presenta el mismo comportamiento erróneo: es decir, la respuesta no aparece en tiempo real, solo llega una notificación o alerta de notificación.

Luego es necesario actualizar la página para ver el último mensaje.

Sin embargo, en tu ejemplo anterior, si user1 es administrador, todo funciona como se espera.

2 Me gusta

Bueno, esto suena definitivamente como un error. Lo probaremos; puede tardar unos días.

4 Me gusta

¡Excelente, gracias! Avísame si necesitas más información.

1 me gusta

Hola Sam: solo dejo un comentario para ver si hay algún lugar donde pueda seguir el progreso de este error. No estoy muy familiarizado con el proceso de reporte y corrección de errores en Discourse. ¡Gracias!

2 Me gusta

Estoy bastante seguro de que Kris lo arregló; te recomiendo que lo vuelvas a probar.

3 Me gusta

Hola @danjw,

lo siento, se me olvidó avisarte. Sam tiene razón, se solucionó con el PR de abajo:

3 Me gusta