Hier ist ein Versuch, die Problematik zu beschreiben, die wir lösen möchten:
Wir haben ein Support-Team mit 4 Mitgliedern. Alle haben für die Support-Kategorie die Benachrichtigungseinstellung „Ersten Beitrag beobachten“ gewählt. Wir möchten das Support-Team beschleunigen, indem wir sie dazu anregen, Benachrichtigungen häufiger und schneller zu verfolgen und darauf zu reagieren. Da die Teammitglieder unterschiedliche Arbeitszeiten haben, werden viele Themen geöffnet und gelöst, während ein Teammitglied nicht im Dienst ist.
Beispiel:
Ich bin ein Support-Mitglied, und meine Schicht beginnt um
. Bis dahin wurden bereits viele Themen geöffnet und gelöst, während ich nicht im Dienst war. Ich möchte keine Benachrichtigungen für solche Themen erhalten.
Wir suchen daher nach einer Möglichkeit, Benachrichtigungen zu ignorieren („de-nachrichten“, widerrufen, automatisch als gelesen markieren), die durch das Beobachten des ersten Beitrags ausgelöst wurden, aber bereits gelöst waren, bevor der Benutzer in Discourse eingeloggt war.
Bisher haben wir solche Benachrichtigungen in der Datenbank mit einer Abfrage wie dieser gefunden:
select
notifications.user_id
,notifications.topic_id
,notifications.id
from notifications
where read=false
and notification_type=17
and topic_id in (
select
topic_id
from topic_custom_fields
where name='accepted_answer_post_id' and value is not null
)
Wir haben es geschafft, Benachrichtigungen zu widerrufen, indem wir das Feld read direkt in der Datenbank aktualisiert haben:
update notifications
set read=true
where id=XXXXXX
Wir wissen, dass direkte Datenbank-Updates auf Discourse eine schlechte Idee und höchst problematisch sind.
Daher suchen wir nach einer Art API, die uns erlaubt, das Widerrufen einer bestimmten Benachrichtigung aufzurufen.
Wenn wir eine Sidekiq-Job erstellen könnten, der Benachrichtigungen direkt über die Datenbank widerruft, wäre das dann eine nachhaltige Lösung für einen Produktionsbetrieb?
Gibt es gute Plugins, die Hintergrundjobs über die Datenbank ausführen, sodass wir versuchen könnten, eines für diese Aufgabe nachzubauen?
Wir würden solche Benachrichtigungen eher löschen, da es keine Notifications - "unread only" filter gibt.
Gibt es ein offizielles Discourse-Plugin, das Löschvorgänge direkt in der Datenbank durchführt, damit wir lernen können, wie man über ein Plugin etwas in der Datenbank löscht?