私たちが解決しようとしている問題の説明を試みます:
サポートチームは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に存在しますか?あれば、プラグインを通じてデータベースでどのように削除を行うかを学ぶことができます。