|||
-|-|-
| 概要 | Solved Reminders Plugin は、Solved plugin の機能を拡張し、解決済みのトピックに追加のリマインダー機能を提供します。
| リポジトリリンク | https://github.com/discourse/discourse-solved-reminders-plugin
| インストールガイド | Discourseでプラグインをインストールする方法
このプラグインは活発に開発されており、まだ完全ではありません。
Solved Reminders Pluginは、解決が必要なトピックのクロージャーを促すためのリマインダーおよび通知機能を追加することにより、Discourse Solved Pluginの機能を拡張します。このプラグインは、ユーザーがトピックを解決済みとしてマークすることを奨励することで効率的なトピック管理を維持するのに役立つだけでなく、称賛メッセージを通じてユーザーをエンゲージします。
機能
- 自動リマインダー: ユーザーに通知を送信し、トピックを再確認して解決済みとしてマークするように促します。
- エンゲージメントメッセージ: トピックを正常に解決したユーザーを祝福し、解決に役立つ可能性のある追加のトピックを提案します。
- シームレスな統合: Discourse Solved pluginと連携して、スムーズなユーザーエクスペリエンスを保証します。
インストール
Solved Reminders Pluginをインストールするには、Discourse Metaガイドに記載されている一般的なプラグインインストールプロセスに従ってください。
- コンテナ設定の編集:
app.ymlファイルのhooksセクションにプラグインのリポジトリリンクを追加します。hooks: after_code: - exec: cd: $home/plugins cmd: - git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- Discourseコンテナの再構築: アプリケーションを再構築してプラグインを適用します。
./launcher rebuild app設定
インストール後、Discourse管理者パネルを通じてプラグイン設定を微調整できます。調整を検討してください。
使用方法
設定が完了すると、プラグインは管理者が設定した設定に基づいて自動的に機能します。リマインダーやメッセージで関連ユーザーにプロンプトを表示することで、トピックが解決に至ることを積極的に保証します。
投稿を解決済みとしてマークするようにユーザーにリマインドするためのPM送信:
投稿を解決済みとしてマークしたユーザーに送信されるPM:
ユーザーは、設定から、解決済みとしてマークする同様のトピックを推奨するPMを無効にできます。
管理者は、コミュニティのニーズに合わせて必要に応じて設定を調整できます。
メッセージテキストのカスタマイズ
ユーザーに送信されるリマインダーメッセージは、サイトの「外観」→「サイトテキスト」ページで
mark_as_solution.messageの下にあります。レポートとデータ分析
このプラグインはDiscourseに特定のデータベーステーブルを追加しませんが、Data Explorerプラグインと組み合わせてリマインダーメッセージの効果を追跡および分析することができます。
以下は、このプラグインで使用できる2つのサンプルData Explorer SQLクエリです。
Solved Reminderメッセージカウント
このクエリは、Solved Reminderメッセージに関する月次集計統計を提供します。
- 「トピックに返信がありました」というテキストを含むプライベートメッセージを識別します。
- データを月ごとにグループ化し、以下を計算します。
- 送信されたリマインダーメッセージの数
- これらのリマインダーを受信したユーザーの総数
- これらのリマインダーを読んだユーザーの数
- 既読率(読者/受信者)
- 結果は、リマインダーメッセージのアクティビティと効果の月次トレンドを示します。
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 monthSolved Reminder個別メッセージ
このクエリは、リマインダーメッセージを受信した各ユーザーの詳細な個別データを提供します。
- 「トピックに返信がありました」というテキストを含むプライベートメッセージを識別します。
- 各個々の受信者をリストします。
- ユーザー情報(ID、ユーザー名、名前、メールアドレス)
- メッセージの詳細(タイトル、リンク)
- メッセージを読んだかどうか(TRUE/FALSE)
- いつ読んだか(該当する場合)
- 表示に費やした時間(秒単位)
- 結果は送信日とユーザー名で並べ替えられ、各メッセージを受信して読んだユーザーが正確に表示されます。
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, -- ユーザーへのリンクとしてレンダリング u.username, u.name, ue.email, r.topic_id, -- トピックへのリンクとしてレンダリング r.message_title, -- メッセージへのリンク(参照用に手動で構築) '/t/' || r.message_slug || '/' || r.topic_id AS message_link, r.sent_at, -- ユーザーがメッセージを読んだかどうかを確認 CASE WHEN tu.last_read_post_number > 0 THEN TRUE ELSE FALSE END AS message_read, -- いつ読んだか(読んだ場合) CASE WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at ELSE NULL END AS read_at, -- 表示に費やした時間(秒単位) 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 -- 送信者(システム/ボット)を受信者リストから除外 tu.user_id != r.sender_id ORDER BY r.sent_at DESC, u.username





