Plugin Rappels Résolu

|||
-|-|-|
:discourse2: | 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.
:hammer_and_wrench: | Lien du dépôt | \u003chttps://github.com/discourse/discourse-solved-reminders-plugin\u003e
:open_book: | Guide d’installation | Comment installer des plugins dans Discourse

\u003e :warning: 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 :

  1. Modifiez la configuration de votre conteneur : Ajoutez le lien du dépôt du plugin à votre fichier app.yml sous la section hooks.
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
  1. 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
15 « J'aime »

Le PM congratulatoire pourrait-il indiquer le titre du sujet dans son titre ? Si l’utilisateur obtient plusieurs solutions en même temps, cela pourrait être déroutant pour l’utilisateur s’il ne sait pas à quelle solution le PM fait référence.
Pourrait-il y avoir un paramètre pour contrôler après combien de publications le rappel sera envoyé ?

3 « J'aime »

Juste pour vérifier deux choses :

  1. Envoie-t-il uniquement des messages aux auteurs des sujets qui ont reçu au moins une réponse ?
  2. Fonctionne-t-il avec le paramètre du plugin de solution par catégorie, c’est-à-dire que si vous souhaitez le désactiver pour certaines catégories, vous devez désactiver le bouton du plugin de solutions sur l’ensemble du site et l’activer pour les catégories où vous souhaitez l’utiliser ?
3 « J'aime »

Les sujets suggérés sont-ils des sujets aléatoires non résolus, ou des conversations liées au sujet original résolu ? S’ils sont liés, comment sont-ils identifiés ?

1 « J'aime »

2 messages ont été divisés dans un nouveau sujet : Comment transformer du code source en plugin

Je vois que cela pourrait être extrêmement utile, en particulier sur notre forum où les gens ont tendance à oublier de marquer une réponse comme solution après en avoir reçu une, et notre équipe devrait alors intervenir pour leur rappeler manuellement :weary:

D’autres questions que j’ai sont :

  • Pouvons-nous configurer qui envoie le message privé de rappel, ou est-ce toujours Discobot par défaut ?
  • Pouvons-nous également modifier le texte des messages privés si nous le souhaitions ?

Merci

1 « J'aime »

Merci pour ce plugin, très utile !

Si je comprends bien, le notificateur ne s’exécute que tous les 14 jours. Cela signifie que tous les sujets que j’ai créés en 14 jours (et que je n’ai pas marqués comme solution) généreront un message privé + un e-mail.

Je viens de l’exécuter manuellement, 5 jours après l’installation du plugin et j’ai reçu 7 messages privés (et e-mails) :

Cela semble un peu excessif. Je sais que je suis un cas un peu particulier en tant qu’administrateur qui crée activement beaucoup de sujets en ce moment, mais pas mal de nos utilisateurs créent beaucoup de sujets (hourra).

Serait-il possible de créer une option où cette notification est combinée en une seule ? Donc “Marquer 7 de vos messages comme solution” en 1 message au lieu d’un message par fil de discussion ?

4 « J'aime »