以下是我们试图解决的问题的描述:
我们的支持团队有 4 名成员,他们都将支持类别的通知级别设置为“关注首帖”。我们希望推动支持团队成员更频繁、更快速地查看和响应通知,从而提升支持效率。由于团队成员的工作时间不同,许多话题在他们非工作时间被创建并解决。
示例:
我是支持团队成员,我的班次从
开始。在此之前,有很多话题被创建并在我离线期间得到解决。
我不希望收到这类话题的通知。
因此,我们正在寻找一种方法来自动忽略(即“取消通知”、撤销或标记为已读)那些因“关注首帖”而触发、但在使用户登录 Discourse 之前就已经被解决的通知。
目前,我们已通过如下查询在数据库中找到了此类通知:
select
notifications.user_id
,notifications.topic_id
,notifications.id
from notifications
where read=false
and notification_type=17
and topic_id in (
select
topic_id
from topic_custom_fields
where name='accepted_answer_post_id' and value is not null
)
我们曾尝试通过直接更新数据库中的 read 字段来忽略这些通知:
update notifications
set read=true
where id=XXXXXX
但我们知道直接在 Discourse 数据库中执行更新操作是非常危险且不可取的。
因此,我们正在寻找某种 API,允许我们调用接口来忽略特定通知。
如果我们能通过 Sidekiq 作业直接操作数据库来忽略通知,这是否适用于生产环境的可持续解决方案?
是否有“良好”的插件可以在后台通过数据库执行作业,以便我们可以尝试根据此类任务重新实现一个?
由于目前尚无类似 Notifications - "unread only" filter 的功能,我们更倾向于直接删除此类通知。
Discourse 是否有“官方”插件在数据库中执行删除操作,以便我们可以学习如何通过插件在数据库中删除某些内容?