| |
|-|-|
| Résumé | Le plugin Solved Reminders étend les fonctionnalités du plugin Solved en offrant des capacités de rappel supplémentaires pour les sujets résolus.
| Lien vers le dépôt | https://github.com/discourse/discourse-solved-reminders-plugin
| Guide d’installation | Comment installer des plugins dans Discourse
Notez que ce plugin est en développement actif et n’est pas encore totalement abouti.
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 grâce à des messages de félicitations.
Fonctionnalités
- Rappels automatisés : Envoie des notifications aux utilisateurs pour les inciter à revenir sur leurs sujets et à les marquer comme résolus.
- Messages d’engagement : Félicite les utilisateurs qui ont résolu avec succès des sujets et suggère d’autres sujets qu’ils pourraient aider à résoudre.
- Intégration transparente : Fonctionne en conjonction avec le plugin Discourse Solved pour assurer une expérience utilisateur fluide.
Installation
Pour installer le plugin Solved Reminders, veuillez suivre le processus général d’installation des plugins décrit dans le guide de Discourse Meta :
- Modifiez votre configuration de conteneur : Ajoutez le lien du dépôt du plugin à votre fichier
app.ymldans 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 selon les paramètres définis par l’administrateur. Il participe activement à garantir que les sujets parviennent à une résolution en incitant les utilisateurs concernés par des rappels et des messages.
MP envoyé à l’utilisateur pour le rappeler de marquer un message comme solution :
MP envoyé à l’utilisateur qui a marqué le message comme solution :
Les utilisateurs peuvent désactiver le MP recommandant des sujets similaires à marquer comme solution depuis leurs préférences :
Les administrateurs peuvent ajuster les configurations selon les 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 des données
Ce plugin n’ajoute aucune table de base de données spécifique à Discourse. Cependant, vous pouvez l’utiliser 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 pouvez utiliser avec ce plugin.
Comptage des messages de rappel de résolution
Cette requête fournit des statistiques mensuelles agrégées sur les messages de rappel de résolution. Elle :
- Identifie les messages privés contenant le texte « Il y a eu une réponse sur un sujet que vous avez publié »
- Regroupe les données par mois et calcule :
- Le nombre de messages de rappel envoyés
- Le nombre total d’utilisateurs ayant reçu ces rappels
- Le nombre d’utilisateurs ayant lu ces rappels
- Le pourcentage de taux de lecture (lecteurs/bénéficiaires)
- 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 = %Il y a eu une réponse sur un sujet que vous avez publié%
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 ré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 publié »
- Liste chaque bénéficiaire individuel avec :
- Les informations de l’utilisateur (ID, nom d’utilisateur, nom, email)
- Les détails du message (titre, lien)
- S’ils ont lu le message (VRAI/FAUX)
- Quand ils l’ont lu (le cas échéant)
- Combien de secondes ils ont passées à le consulter
- Les résultats sont ordonné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 = %Il y a eu une réponse sur un sujet que vous avez publié%
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, -- Affiché sous forme de lien vers l'utilisateur
u.username,
u.name,
ue.email,
r.topic_id, -- Affiché sous forme de 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 (si c'est le cas)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- Temps passé à consulter (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





