| Zusammenfassung | Das Solved Reminders Plugin erweitert die Funktionalität des Solved Plugins um zusätzliche Erinnerungsfunktionen für gelöste Themen. | |
| Link zum Repository | https://github.com/discourse/discourse-solved-reminders-plugin | |
| Installationsanleitung | Plugins in Discourse installieren |
Beachten Sie, dass sich dieses Plugin in der aktiven Entwicklung befindet und noch nicht vollständig abgeschlossen ist.
Das Solved Reminders Plugin erweitert die Funktionalität des Discourse Solved Plugins um Erinnerungsfunktionen und Benachrichtigungen für Themen, die einer Lösung bedürfen. Dieses Plugin hilft nicht nur dabei, ein effizientes Themenmanagement aufrechtzuerhalten, indem es Benutzer dazu ermutigt, Themen als gelöst zu markieren, sondern bindet Benutzer auch durch gratulierende Nachrichten ein.
Funktionen
- Automatische Erinnerungen: Sendet Benachrichtigungen an Benutzer und fordert sie auf, ihre Themen erneut zu besuchen und als gelöst zu markieren.
- Engagement-Nachrichten: Gratuliert Benutzern, die Themen erfolgreich gelöst haben, und schlägt zusätzliche Themen vor, bei denen sie helfen könnten.
- Nahtlose Integration: Funktioniert in Verbindung mit dem Discourse Solved Plugin, um ein reibungsloses Benutzererlebnis zu gewährleisten.
Installation
Um das Solved Reminders Plugin zu installieren, befolgen Sie bitte den allgemeinen Installationsprozess für Plugins, der im Discourse Meta-Leitfaden beschrieben ist:
- Bearbeiten Sie Ihre Container-Konfiguration: Fügen Sie den Link zum Repository des Plugins in Ihrer
app.yml-Datei unter dem Abschnitthookshinzu.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- Discourse-Container neu erstellen: Wenden Sie das Plugin an, indem Sie Ihre Anwendung neu erstellen.
./launcher rebuild app
Konfiguration
Nach der Installation können Sie die Plugin-Einstellungen über das Discourse-Admin-Panel feinjustieren. Erwägen Sie die Anpassung von:
Verwendung
Einmal konfiguriert, arbeitet das Plugin automatisch basierend auf den vom Administrator festgelegten Einstellungen. Es beteiligt sich aktiv daran, sicherzustellen, dass Themen zur Lösung gelangen, indem es relevante Benutzer mit Erinnerungen und Nachrichten auffordert.
PM an Benutzer gesendet, um sie daran zu erinnern, einen Beitrag als Lösung zu markieren:
PM an Benutzer gesendet, der den Beitrag als Lösung markiert hat:
Benutzer können die PM deaktivieren, um ähnliche Themen zur Markierung als Lösung in ihren Einstellungen vorzuschlagen:
Administratoren können die Konfigurationen bei Bedarf anpassen, um den Bedürfnissen der Community gerecht zu werden.
Anpassung des Nachrichtentexts
Die an Benutzer gesendete Erinnerungsnachricht finden Sie auf der Seite „Aussehen → Seitentext“ Ihrer Website unter mark_as_solution.message.
Berichterstattung und Datenanalyse
Dieses Plugin fügt Discourse keine spezifischen Datenbanktabellen hinzu. Sie können es jedoch in Kombination mit dem Data Explorer-Plugin verwenden, um die Wirksamkeit Ihrer Erinnerungsnachrichten zu verfolgen und zu analysieren.
Nachfolgend finden Sie zwei Beispiel-SQL-Abfragen für den Data Explorer, die Sie mit diesem Plugin verwenden können.
Anzahl der Solved-Erinnerungsnachrichten
Diese Abfrage liefert monatliche aggregierte Statistiken über die Solved-Erinnerungsnachrichten. Sie:
- Identifiziert private Nachrichten, die den Text „There has been a reply on topic you posted“ enthalten
- Gruppiert Daten nach Monat und berechnet:
- Anzahl der gesendeten Erinnerungsnachrichten
- Gesamtzahl der Benutzer, die diese Erinnerungen erhalten haben
- Anzahl der Benutzer, die diese Erinnerungen gelesen haben
- Prozentsatz der Leserate (Leser/Empfänger)
- Die Ergebnisse zeigen monatliche Trends in der Aktivität und Wirksamkeit von Erinnerungsnachrichten
SQL-Details
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %There has been a reply on topic you posted%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.created_at,
p.id AS post_id,
p.user_id AS sender_id,
DATE_TRUNC('month', t.created_at) AS month
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
),
recipient_stats AS (
SELECT
r.topic_id,
r.month,
COUNT(DISTINCT tu.user_id) AS total_recipients,
COUNT(DISTINCT CASE WHEN tu.last_read_post_number > 0 THEN tu.user_id END) AS read_recipients
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id AND tu.user_id != r.sender_id
GROUP BY r.topic_id, r.month
)
SELECT
TO_CHAR(month, 'YYYY-MM') AS month,
COUNT(DISTINCT topic_id) AS reminder_pms_sent,
SUM(total_recipients) AS total_users_received,
SUM(read_recipients) AS users_who_read,
ROUND(100.0 * SUM(read_recipients) / NULLIF(SUM(total_recipients), 0), 2) AS read_rate_percentage
FROM recipient_stats
GROUP BY month
ORDER BY month
Einzelne Solved-Erinnerungsnachrichten
Diese Abfrage liefert detaillierte Daten auf individueller Ebene für jeden Benutzer, der eine Erinnerungsnachricht erhalten hat. Sie:
- Identifiziert private Nachrichten, die den Text „There has been a reply on topic you posted“ enthalten
- Listet jeden einzelnen Empfänger mit folgenden Informationen auf:
- Benutzerinformationen (ID, Benutzername, Name, E-Mail)
- Nachrichtendetails (Titel, Link)
- Ob sie die Nachricht gelesen haben (WAHR/FALSCH)
- Wann sie sie gelesen haben (falls zutreffend)
- Wie viele Sekunden sie sich die Nachricht angesehen haben
- Die Ergebnisse sind nach Sendedatum und Benutzername sortiert und zeigen genau, wer welche Nachricht erhalten und gelesen hat
SQL-Details
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %There has been a reply on topic you posted%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.title AS message_title,
t.slug AS message_slug,
t.created_at AS sent_at,
p.id AS post_id,
p.user_id AS sender_id,
p.raw AS message_content
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
)
SELECT
u.id AS user_id, -- Wird als Link zum Benutzer gerendert
u.username,
u.name,
ue.email,
r.topic_id, -- Wird als Link zum Thema gerendert
r.message_title,
-- Link zur Nachricht (manuell für Referenz erstellt)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- Prüfen, ob der Benutzer die Nachricht gelesen hat
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- Wann sie sie gelesen haben (falls sie es getan haben)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- Wie viel Zeit für die Ansicht aufgewendet wurde (in Sekunden)
ROUND(tu.total_msecs_viewed / 1000.0, 1) AS time_viewed_seconds
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id
JOIN users u ON u.id = tu.user_id
LEFT JOIN user_emails ue ON ue.user_id = u.id AND ue.primary = TRUE
WHERE
-- Den Absender (System/Bot) von der Empfängerliste ausschließen
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username





