Editar publicaciones genera notificaciones

Hello,

I have been updated some featured/pinned topics and they seem to be sending out updates every time that I update them. Is there a way to disable this? “Watch first Post” shouldn’t trigger if the post is just slightly edited as far as I can tell?

Thanks!

What you’re describing is not really possible.

What do you mean by “I have been updated”? What exactly did you do, step by step? Describe it in detail? Your question is unanswerable until you provide this information.

Edits don’t alert anyone in Discourse… ever, that I can think of. You will be notified if someone else edits your post by default, using the typical Discourse notifications.

1 me gusta

Edits notify the original author. I get notifications when @codinghorror fixes my posts with alarming frequency. (I don’t think it’s what this person is describing, but it is edits giving notifications)

Edit: oops

As I said above, already…

1 me gusta

Sorry fort he lack of clarity.
For some reason, editing a post that I created would notify other users of the edit. It appears that it occurred in topics that used the tagging of a group and that group would be notified (even if the tag was not a new one).

  1. Create a post with multiple tags of groups of members
  2. Let it propagate and send notifications. Wait whatever number of minutes is needed for it to send out to any current watch lists/etc.
  3. Come back to the post and edit it.
  4. Add something useless, like the word unicorn and note that the right hand side of the edit window alerts that you will notify the groups in the post despite not having added or edited anything to do with those tags.
  5. Save
  6. Check the logs and note that all members in those groups are now notified of the edit (though the notifications appear as a New Topic notification.
3 Me gusta

Interesting so this is specific to group mentions? Perhaps you can try to repro this when you have time @jomaxro

It appears to be on my end at least.

I have not been able to repro this. I tested it on try, with 3 users. In one post I mentioned all of them individually, in the other I mentioned a group all 3 were in. They all received the initial mention notification, they did not receive further notifications on edit.




I’m unsure about the type of notification here. Are you referring to a notification that appears on your user profile, i.e., as an extra entry in the list that appears when you click on your avatar up right?

Or is it a small blue dot next to the topic title in the topic list?

1 me gusta

Estoy observando este comportamiento en uno de nuestros sitios.

Al editar una publicación que menciona un grupo, aparece la siguiente advertencia:

También puedo confirmar que las personas de ese grupo reciben una nueva notificación cuando se guarda la edición.

2 Me gusta

¿Podemos reproducir esto, @tshenry?

1 me gusta

Hmm @Grayden_Shand, ¿asumes que la publicación ya había mencionado al grupo antes de ser editada? Sé que si agregas una mención nueva a una publicación mediante una edición, ese usuario o grupo recibirá una notificación.

Probé dos escenarios:

  1. Si realizas una “edición ninja” en una publicación que ya mencionaba a un grupo, la advertencia se mostrará durante la edición, pero no se enviará ninguna notificación después de realizada la edición ninja.
  2. Si realizas una edición fuera del período de gracia de edición, la advertencia se mostrará durante la edición, pero no se enviará ninguna notificación nueva al grupo.

¿Podrías ayudarnos con pasos adicionales para reproducir el problema?


Por cierto, podría ser útil tener un interruptor que controle si una mención activa una notificación a nivel de publicación. Esto ofrecería mayor control en escenarios de edición, y también cuando simplemente deseas incluir un enlace mágico a una tarjeta de usuario o perfil en la publicación para que otros usuarios lo utilicen.

2 Me gusta

Sí, la mención del grupo ya estaba en el post antes de ser editado. Además, el usuario que realizó la edición era diferente al que era dueño del tema.

Intentaré reproducirlo en mi entorno de desarrollo hoy y informaré si tengo éxito.

1 me gusta

Lo he resuelto…

La notificación se está enviando a los usuarios que se unieron al grupo después de que se creó originalmente la publicación.

Por lo tanto, para los usuarios que reciben la notificación, es la primera vez que ELLOS reciben la notificación de mención, pero no la primera vez que ALGUIEN la recibe.

Sin embargo, las personas que ya estaban en el grupo desde el principio (y que recibieron la notificación de mención original) no reciben una notificación adicional por la edición.

Pasos para reproducir (requiere dos usuarios)

  1. Crear un nuevo grupo
  2. Crear una nueva publicación o tema que mencione a ese grupo
  3. Crear un nuevo usuario
  4. Agregar ese usuario al grupo
  5. Editar la publicación: en este punto, el nuevo usuario recibirá una notificación.
  6. Editar la publicación nuevamente: el nuevo usuario no recibirá notificaciones adicionales por ediciones posteriores.

No estoy seguro de cuál debería ser el comportamiento correcto aquí… Supongo que me inclinaría por no enviar las notificaciones de mención en las ediciones en absoluto, pero no sé qué tan complicado sea esto en la implementación.

Además, otra nota: el mensaje “Estás a punto de notificar a X personas en el grupo” aparece cuando haces una edición, independientemente de si alguien recibirá realmente la notificación.

¿Es posible vincular este mensaje de advertencia al número de personas que no han sido notificadas previamente sobre esta publicación (para calcular un recuento preciso del número de personas que serán notificadas)?

4 Me gusta

¡Ajá, gracias por eso! Definitivamente veo el mismo comportamiento.

Enviar notificaciones de mención a través de una edición de publicación es una función importante que sé que uso de vez en cuando, al igual que otros, por lo que queremos que se mantenga, pero la forma en que funciona con los grupos parece incorrecta.

Mi opinión en este momento sería notificar a un grupo solo una vez por publicación. Los usuarios agregados a un grupo después de que se realizó una mención inicial al grupo no deben recibir una notificación de mención al grupo como resultado de ediciones posteriores de la publicación. El banner de educación JIT sobre notificar al grupo no debe mostrarse durante la edición de una publicación si no hay nuevas menciones al grupo desde que se guardó por última vez.

Si se menciona en una edición un grupo que no se había mencionado previamente, deben ser notificados. Así es como funcionan las menciones de usuario. También deberíamos ver el banner educativo relevante si hay un grupo mencionado por primera vez.

Estoy pensando que podemos agregar simplemente alguna lógica condicional basada en la existencia de un registro en la tabla group_mentions. Creamos un registro en el momento de guardar una publicación.

¿Qué opinas @codinghorror?

2 Me gusta

Sigo el hilo, pero ¿realmente deberíamos considerar esto un error que queramos corregir?

Si suprimimos por completo todas las notificaciones de @group al editar, editar un nuevo @group no generará ninguna notificación de mención, lo cual representa un cambio drástico en el funcionamiento de las notificaciones en el pasado y resultará muy sorprendente.

Si nos ponemos creativos y solo notificamos los nuevos @group al editar, quedaremos atrapados con un código complejo que debe recorrer las diferencias y requiere mucha más gestión de datos.

Ciertamente, no se me ocurre ninguna solución sencilla para esto.

4 Me gusta

Imagina, por ejemplo, una publicación con tres menciones de grupo diferentes. Se edita y se añade una cuarta mención.

Al guardar la edición, podemos usar una consulta como esta para obtener la lista actual de menciones de grupo para esa publicación:

-- [params]
-- text :post_id

select gm.group_id, g.name
from group_mentions gm
join groups g on (gm.group_id = g.id)
where post_id = :post_id

Luego, al comparar los resultados de la consulta con la lista de grupos mencionados en la publicación, podemos identificar la(s) nueva(s) mención(es).

Eso no parece un cálculo demasiado grande, pero quizás me esté perdiendo algo obvio. Esto también parece el tipo de cosa que se podría hacer en una tarea en segundo plano.

En cuanto al banner JIT sobre la notificación al/los grupo(s), quizás esta lógica podría exponerse mediante un punto final de API (/post/<id>/mentions.json) para obtener estos datos de forma asíncrona.

¿No sería más sencillo crear una nueva publicación y notificar a la gente de esa manera? Me da un poco de miedo construir una torre gigante de complejidad aquí para apoyar lo que es un caso marginal bastante específico.

1 me gusta

No quiero hacer nada demasiado complejo.

Estaba revisando parte del código de esto (gracias @tshenry por el enlace), y no parece que necesite ser tan complicado.

Las menciones de grupo se están activando actualmente aquí (líneas 78-80). La función expand_group_mentions() es un generador encargado de devolver los usuarios que deberían recibir notificaciones de menciones de grupo (respetando políticas como SiteSetting.max_users_notified_per_group_mention).

Eso parece un lugar natural para colocar esta lógica.

En la función create_notification, suprimimos las notificaciones para cualquier persona que ya haya recibido una notificación del mismo tipo. Por eso editar una publicación con una mención de grupo desencadena una notificación para los nuevos miembros del grupo: en realidad se genera una notificación para todos los usuarios del grupo, pero luego se suprime para quienes ya recibieron la notificación.

Estoy sugiriendo algo similar, actualizando la función expand_group_mentions() para que también filtre los grupos que ya tienen un registro en la tabla group_mentions.

Algo así (perdonad mi falta de conocimiento sobre la sintaxis de Ruby):

  def expand_group_mentions(groups, post)
    return unless post.user && groups

    Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
      next if group.user_count >= SiteSetting.max_users_notified_per_group_mention

      # Añadir comprobación para grupos ya mencionados
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

Esto no hace nada por la advertencia JIT, sin embargo.

Tratando de ayudar a resolver esto, hacedme saber si solo estoy siendo molesto… :slight_smile:

2 Me gusta

Estaba a punto de publicar una nueva pregunta de soporte, pero encontré este tema.

Parece estar relacionado.

Si publico un mensaje y me doy cuenta de que debería haber notificado a algunas personas que no notifiqué, ¿cuál es mi mejor opción?

  1. Editar el mensaje y mencionar específicamente (@) a un grupo o a varias personas?

  2. Crear un nuevo mensaje para notificarlos (@)? En ese caso, tendría que repetir mucha información o añadir un enlace al mensaje original.

La opción 1 sería mi método preferido (más limpio) si es posible.

¿Alguien puede confirmar si mencionar específicamente (@) a individuos o grupos al editar notifica a las personas si aún no han sido notificadas? Si no es así, suena como una función útil si no es demasiado difícil de implementar.

PD: Si me olvido, a veces uso la ventana de tiempo configurable para editar el mensaje antes de que se envíen las notificaciones. Pero al momento de publicar, nunca estás completamente seguro de si podrás hacerlo a tiempo. Solo descubres si aparece como una edición cuando esta se publica.

Usaré esta edición para probar si recibo una notificación @Rhidian @codinghorror

Parece que no :confused:

2 Me gusta