|||
-|-|-
| 摘要 | 已解决提醒插件 通过提供已解决主题的附加提醒功能,扩展了 已解决插件 的功能。
| 存储库链接 | https://github.com/discourse/discourse-solved-reminders-plugin
| 安装指南 | 如何在 Discourse 中安装插件
请注意,此插件正在积极开发中,尚未完全完成。
已解决提醒插件通过添加主题的提醒和通知功能来扩展 Discourse 已解决插件 的功能,以促使其得到解决。此插件不仅通过鼓励用户将主题标记为已解决来帮助维护高效的主题管理,还通过祝贺消息来吸引用户。
功能
- 自动提醒: 向用户发送通知,提示他们重新访问并将其主题标记为已解决。
- 互动消息: 祝贺成功解决主题的用户,并建议他们可能可以帮助解决的其他主题。
- 无缝集成: 与 Discourse 已解决插件 协同工作,以确保流畅的用户体验。
安装
要安装已解决提醒插件,请遵循 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 插件结合使用来跟踪和分析提醒消息的有效性。
以下是您可以使用此插件的两个示例 Data Explorer SQL 查询。
已解决提醒消息计数
此查询提供有关已解决提醒消息的每月汇总统计信息。它:
- 识别包含文本“您发帖的主题有新回复”的私人消息
- 按月分组数据并计算:
- 发送的提醒消息数量
- 收到这些提醒的总用户数
- 阅读这些提醒的用户数
- 阅读率百分比(阅读者/接收者)
- 结果显示提醒消息活动和有效性的月度趋势
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
已解决提醒个人消息
此查询提供有关每个收到提醒消息的用户的详细个人级别数据。它:
- 识别包含文本“您发帖的主题有新回复”的私人消息
- 列出每个个人接收者,包括:
- 用户信息(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





