La modifica dei post genera una notifica

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 Mi Piace

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 Mi Piace

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 Mi Piace

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 Mi Piace

Sto osservando questo comportamento su uno dei nostri siti.

Quando modifico un post che menziona un gruppo, ricevo il seguente avviso:

Posso inoltre confermare che le persone in quel gruppo ricevono una nuova notifica quando la modifica viene salvata.

2 Mi Piace

Possiamo riprodurre questo problema @tshenry?

1 Mi Piace

Hmm @Grayden_Shand, presumo che il post avesse già menzionato il gruppo prima di essere modificato? So che se aggiungi una nuova menzione a un post tramite una modifica, quell’utente/gruppo riceverà una notifica.

Ho testato due scenari:

  1. Se esegui una “modifica ninja” su un post che già menzionava un gruppo, l’avviso viene visualizzato durante la modifica, ma non viene inviata alcuna notifica dopo l’esecuzione della modifica ninja.
  2. Se esegui una modifica al di fuori del periodo di grazia per le modifiche, l’avviso viene visualizzato durante la modifica, ma non viene inviata alcuna nuova notifica al gruppo.

Puoi aiutarmi con eventuali ulteriori passaggi per riprodurre il problema?


A margine, potrei vedere come utile avere un interruttore che controlla se una menzione attiva una notifica a livello di post. Fornirebbe maggiore controllo negli scenari di modifica e anche quando si desidera semplicemente includere un link magico alla scheda utente/profilo nel post per l’utilizzo da parte di altri utenti.

2 Mi Piace

Sì, la menzione del gruppo era già presente nel post prima della modifica. Inoltre, l’utente che ha apportato la modifica era diverso da quello che possedeva l’argomento.

Oggi proverò a riprodurlo sul mio ambiente di sviluppo e farò sapere se ci riesco.

1 Mi Piace

L’ho capito…

La notifica viene inviata agli utenti che si sono uniti al gruppo dopo la creazione originale del post.

Quindi, per gli utenti che ricevono la notifica, è la prima volta che LORO ricevono la notifica di menzione, ma non la prima volta che QUALCUNO la riceve.

Tuttavia, le persone che erano già nel gruppo fin dall’inizio (e che hanno già ricevuto la notifica di menzione originale) non ricevono una notifica aggiuntiva dall’editing.

Passaggi per riprodurre (richiede due utenti)

  1. Crea un nuovo gruppo
  2. Crea un nuovo post o argomento che menziona quel gruppo
  3. Crea un nuovo utente
  4. Aggiungi quell’utente al gruppo
  5. Modifica il post – A questo punto, il nuovo utente riceverà una notifica.
  6. Modifica di nuovo il post – Il nuovo utente non riceverà notifiche aggiuntive per ulteriori modifiche.

Non sono sicuro di quale sia il comportamento corretto in questo caso… Penso che propenderei per non inviare affatto le notifiche di menzione durante le modifiche, ma non so quanto sia complicato dal punto di vista dell’implementazione.

Inoltre, un’altra nota: il messaggio “Stai per notificare X persone nel gruppo” appare quando si effettua una modifica, indipendentemente dal fatto che qualcuno verrà effettivamente notificato.

È possibile collegare questo messaggio di avviso al numero di persone che non sono state precedentemente notificate su questo post (al fine di calcolare un conteggio accurato del numero di persone che verranno notificate)?

4 Mi Piace

Ah, grazie per questo! Vedo chiaramente lo stesso comportamento.

L’invio di notifiche per menzioni tramite la modifica di un post è una funzione importante che so di utilizzare io e altri di tanto in tanto, quindi vogliamo mantenerla, ma il modo in cui funziona con i gruppi sembra sbagliato.

La mia opinione in questo momento è di notificare un gruppo una sola volta per post. Gli utenti aggiunti a un gruppo dopo che è stata effettuata una menzione iniziale del gruppo non dovrebbero ricevere una notifica di menzione del gruppo a seguito di successive modifiche al post. Il banner educativo JIT sulla notifica del gruppo non dovrebbe essere visualizzato durante la modifica di un post se non ci sono nuove menzioni di gruppi dall’ultimo salvataggio del post.

Se un gruppo che non era stato precedentemente menzionato viene menzionato in una modifica, dovrebbe essere notificato. È così che funzionano le menzioni degli utenti. Dovremmo anche vedere il banner educativo pertinente se c’è un gruppo menzionato di recente.

Penso che possiamo semplicemente aggiungere una logica condizionale basata sull’esistenza di un record nella tabella group_mentions. Creiamo un record al momento del salvataggio di un post.

Cosa ne pensi @codinghorror?

2 Mi Piace

Seguo, ma dovremmo davvero considerare questo un bug da correggere?

Se sopprimiamo completamente tutte le notifiche @group in fase di modifica, modificare un nuovo @group non genererà alcuna notifica di menzione, il che rappresenta un cambiamento significativo rispetto al funzionamento passato delle notifiche e potrebbe risultare molto sorprendente.

Se decidessimo di essere più sofisticati e notificassimo solo i nuovi @group in fase di modifica, ci troveremmo bloccati con un codice complesso che deve analizzare le differenze e gestire molte più operazioni di registrazione.

Non riesco assolutamente a pensare a una soluzione semplice in questo caso.

4 Mi Piace

Quindi, immaginate un post con tre menzioni di gruppo diverse. Viene modificato e viene aggiunta una quarta menzione.

Durante il salvataggio della modifica, possiamo usare una query come questa per ottenere l’elenco attuale delle menzioni di gruppo per quel post.

-- [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

Confrontando poi i risultati della query con l’elenco dei gruppi menzionati nel post, possiamo individuare la/e nuova/e menzione/i.

Non sembra un calcolo eccessivamente pesante, ma forse mi sto perdendo qualcosa di ovvio. Sembra anche il tipo di cosa che potrebbe essere gestita da un’attività in background.

Per quanto riguarda il banner JIT relativo alla notifica del/dei gruppo/i, forse questa logica potrebbe essere esposta tramite un endpoint API (/post/<id>/mentions.json) per ottenere questi dati in modo asincrono.

Non sarebbe più semplice creare un nuovo post e avvisare le persone in questo modo? Ho un po’ di timore di costruire un’enorme torre di complessità per supportare un caso limite piuttosto ristretto.

1 Mi Piace

Non voglio rendere nulla troppo complesso.

Stavo esaminando parte del codice per questo (grazie @tshenry per il link), e non sembra che debba essere così complicato.

Le menzioni di gruppo vengono attualmente attivate qui (righe 78-80). La funzione expand_group_mentions() è un generatore responsabile di produrre gli utenti che dovrebbero ricevere le notifiche delle menzioni di gruppo (rispettando politiche come SiteSetting.max_users_notified_per_group_mention).

Sembra un luogo naturale per inserire questa logica.

Nella funzione create_notification, sopprimiamo le notifiche per chiunque abbia già ricevuto una notifica dello stesso tipo. Ecco perché la modifica di un post con una menzione di gruppo attiva una notifica per i nuovi membri del gruppo: viene effettivamente generata una notifica per tutti gli utenti del gruppo, ma viene poi soppressa per le persone che l’hanno già ricevuta.

Sto suggerendo qualcosa di simile, aggiornando la funzione expand_group_mentions() per filtrare anche i gruppi che hanno già un record nella tabella group_mentions.

Qualcosa del genere (perdonate la mia scarsa conoscenza della sintassi 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

      # Aggiungi controllo per i gruppi già menzionati
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

Questo non risolve comunque l’avviso JIT.

Sto cercando di aiutare a risolvere il problema, fatemi sapere se sto solo diventando fastidioso… :slight_smile:

2 Mi Piace

Stavo per pubblicare una nuova domanda di supporto, ma ho trovato questo argomento.

Sembra correlato.

Se pubblico un messaggio e mi rendo conto che avrei dovuto avvisare alcune persone che non ho avvisato, qual è la mia migliore opzione?

  1. Modificare il post e menzionare specificamente un gruppo o diverse persone con @?

  2. Creare un nuovo messaggio per avvisarli con @? In tal caso, dovrei ripetere molte informazioni o aggiungere un link al post originale.

L’opzione 1 sarebbe il mio metodo preferito (più pulito) se possibile?

Qualcuno può confermare: menzionare specificamente individui o gruppi con @ durante una modifica li avvisa se non sono già stati notificati? Se non è così, sembra che potrebbe essere utile, se non troppo difficile da implementare.

PS: Se dimentico, a volte uso la finestra di tempo configurabile per modificare il post prima che partano le notifiche. Ma fino a quel momento non sei mai sicuro di riuscirci in tempo. Scopri solo se appare come una modifica quando la modifica viene pubblicata.

Userò questa modifica per verificare se ricevo una notifica @Rhidian @codinghorror

Sembra di no :confused:

2 Mi Piace