|||
-|-|-|
| Résumé | Le plugin Solved Reminders Plugin étend les fonctionnalités du plugin Solved en offrant des capacités de rappel supplémentaires pour les sujets résolus.
| Lien du dépôt | \u003chttps://github.com/discourse/discourse-solved-reminders-plugin\u003e
| Guide d’installation | Comment installer des plugins dans Discourse
\u003e
Notez que ce plugin est en cours de développement actif et n’est pas encore entièrement terminé.
Le plugin Solved Reminders étend les fonctionnalités du plugin Discourse Solved en ajoutant des capacités de rappel et de notification pour les sujets nécessitant une clôture. Ce plugin aide non seulement à maintenir une gestion efficace des sujets en encourageant les utilisateurs à marquer les sujets comme résolus, mais engage également les utilisateurs par des messages de félicitations.
Fonctionnalités
- Rappels Automatisés : Envoie des notifications aux utilisateurs, les invitant à revisiter et à marquer leurs sujets comme résolus.
- Messages d’Engagement : Félicite les utilisateurs qui ont résolu avec succès des sujets et suggère des sujets supplémentaires qu’ils pourraient aider à résoudre.
- Intégration Transparente : Fonctionne en conjonction avec le plugin Discourse Solved pour garantir une expérience utilisateur fluide.
Installation
Pour installer le plugin Solved Reminders, veuillez suivre le processus général d’installation de plugin décrit dans le guide Discourse Meta :
- Modifiez la configuration de votre conteneur : Ajoutez le lien du dépôt du plugin à votre fichier
app.ymlsous la sectionhooks.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- Reconstruisez le conteneur Discourse : Appliquez le plugin en reconstruisant votre application.
./launcher rebuild app
Configuration
Après l’installation, vous pouvez affiner les paramètres du plugin via le panneau d’administration de Discourse. Pensez à ajuster :
Utilisation
Une fois configuré, le plugin fonctionnera automatiquement en fonction des paramètres définis par l’administrateur. Il participe activement à garantir que les sujets parviennent à résolution en invitant les utilisateurs pertinents avec des rappels et des messages.
Message privé envoyé à l’utilisateur pour lui rappeler de marquer un message comme solution :
Message privé envoyé à l’utilisateur qui a marqué le message comme solution :
Les utilisateurs peuvent désactiver les messages privés recommandant des sujets similaires à marquer comme solution dans leurs préférences :
Les administrateurs peuvent ajuster les configurations si nécessaire pour répondre aux besoins de la communauté.
Personnalisation du texte des messages
Le message de rappel envoyé aux utilisateurs se trouve sur la page Apparence → Texte du site de votre site, sous mark_as_solution.message.
Rapports et Analyse de Données
Ce plugin n’ajoute aucune table de base de données spécifique à Discourse. Cependant, vous pouvez utiliser ce plugin en combinaison avec le plugin Data Explorer pour suivre et analyser l’efficacité de vos messages de rappel.
Voici deux exemples de requêtes SQL Data Explorer que vous pourriez utiliser avec ce plugin.
Nombre de messages de rappel de solution
Cette requête fournit des statistiques agrégées mensuelles sur les messages de rappel de solution. Elle :
- Identifie les messages privés contenant le texte « Il y a eu une réponse sur un sujet que vous avez posté »
- Regroupe les données par mois et calcule :
- Nombre de messages de rappel envoyés
- Nombre total d’utilisateurs ayant reçu ces rappels
- Nombre d’utilisateurs ayant lu ces rappels
- Pourcentage de taux de lecture (lecteurs/destinataires)
- Les résultats montrent les tendances mensuelles de l’activité et de l’efficacité des messages de rappel.
Détails SQL
-- [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
Messages individuels de rappel de solution
Cette requête fournit des données détaillées au niveau individuel pour chaque utilisateur ayant reçu un message de rappel. Elle :
- Identifie les messages privés contenant le texte « Il y a eu une réponse sur un sujet que vous avez posté »
- Liste chaque destinataire individuel avec :
- Informations sur l’utilisateur (ID, nom d’utilisateur, nom, e-mail)
- Détails du message (titre, lien)
- S’ils ont lu le message (VRAI/FAUX)
- Quand ils l’ont lu (si applicable)
- Combien de secondes ils y ont passé
- Les résultats sont triés par date d’envoi et nom d’utilisateur, montrant exactement qui a reçu et lu chaque message.
Détails SQL
-- [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, -- S'affiche comme un lien vers l'utilisateur
u.username,
u.name,
ue.email,
r.topic_id, -- S'affiche comme un lien vers le sujet
r.message_title,
-- Lien vers le message (construit manuellement pour référence)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- Vérifier si l'utilisateur a lu le message
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- Quand ils l'ont lu (s'ils l'ont fait)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- Temps passé à regarder (en secondes)
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
-- Exclure l'expéditeur (système/bot) de la liste des destinataires
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username





