misskey icon indicating copy to clipboard operation
misskey copied to clipboard

通報を受けた時の通知機能を拡充する

Open samunohito opened this issue 1 year ago • 12 comments

Summary

サーバのユーザから通報を受けた際、モデレータがそれを知る手段が乏しく以下に限定されています。

  • meta.email に登録されているメールアドレス
  • Streamのadminチャンネルを購読しているクライアント(Misskey本体には使ってる場所が無い?)
  • モデレータ自身がコンパネを目視で監視する

迅速なモデレーションを行うために、通知機能(とその付帯機能)の拡充をした方が良いと考えました。 具体的な案としては以下のようなイメージです。

  • meta.emailだけではなくモデレータにもメールを送信
  • モデレータがログインした瞬間に気づけるような仕組み 左部メニューにあるコントロールパネルのインジケータ点灯など
  • 通報をすぐに開けるURLの発行とフロント側のルーティング
  • webhookでの通知 連携先は無限に考えられるので、必要な情報を変数として提供し、それを使ってペイロードのテンプレートを記述してもらうようなイメージで考えている

~↓も考えたけど微妙かも?~

  • モデレータへのDM(rootアカウント→アカウントのDMと任意ののAP連合先アカウント)
  • PWA/ブラウザでの通知

通報がひっきりなしに来るようなシチュエーションも考えられるので、メール・webhook・DM・ブラウザ/PWAでの通知をそれぞれOFFに出来るようなオプションもあると尚良いと思います。

Purpose

  • モデレータが通報に気付きやすくなり、サーバの治安悪化を最小限に抑えられる

Do you want to implement this feature yourself?

  • [x] Yes, I will implement this by myself and send a pull request

samunohito avatar Apr 13 '24 13:04 samunohito

通報の対処が必要になる規模のサーバーの運営者はSlackやDiscordを使っている場合がほとんどだからwebhookがあれば良さそう

syuilo avatar Apr 16 '24 04:04 syuilo

やるか…

samunohito avatar Apr 19 '24 04:04 samunohito

今回やる予定のやつ

  • meta.emailだけではなくモデレータにもメールを送信
  • webhookでの通知
  • 通報をすぐに開けるURLの発行とフロント側のルーティング

インジケータ表示も要望あったけど別途やる。 通報の有無を含めて通知表示が4種類あり、これらも含めたほうが良いかどうか検討したいので https://github.com/misskey-dev/misskey/blob/860e8bb5d84c02276dba7631b30fcf06b434e98a/packages/frontend/src/pages/admin/index.vue#L15-L18

samunohito avatar Apr 19 '24 15:04 samunohito

メールで受け取るかどうかはオプションにする必要があるわね 規模が大きいとものすごい量の(対処不要な)通報がくるため

syuilo avatar Apr 20 '24 04:04 syuilo

webhookにも同様のことが言えると思うので(というかそういう話を聞いたので)、ここで追加するものはon/off切り替え可能なように実装します。

samunohito avatar Apr 20 '24 06:04 samunohito

連携先は無限に考えられるので、必要な情報を変数として提供し、それを使ってペイロードのテンプレートを記述してもらうようなイメージで考えている

これは下記の理由からやめる。ペイロードの形式は固定で。

  • 脆弱性を作りこみそうで怖い
  • 既存のWebhook送信の仕組みを流用したい
  • アプリとしての責任範囲を最小にしたい(参考:GitHubやBacklogなど、大手が提供するサービスの実装の大半は固定)

samunohito avatar Apr 21 '24 05:04 samunohito

(off-topic): MisskeyのWebhookをイイカンジにプロキシする外部アプリとかあれば便利かしら

こういうのとか https://github.com/niri-la/misskey-discord-webhook-proxy

samunohito avatar Apr 21 '24 05:04 samunohito

管理系のwebhookを持つテーブルを新設して、その上に通報のwebhook機能を載せるような感じで考えている (送信は既存のwebhook送信の仕組みを間借りするようなイメージ)

samunohito avatar Apr 21 '24 05:04 samunohito

管理系のwebhookを持つテーブル というと?

syuilo avatar Apr 21 '24 09:04 syuilo

管理系のwebhookを持つテーブル

もともとあるwebhookテーブルではなく、システム契機で作動するwebhookを登録しておくためのsystem_webhook(仮)を作ろうとしていました。システム契機の場合はユーザIDを持たず、またイベントの種類も既存のwebhookとは異なるため、既存のものと混ぜたくないなという思いから。

samunohito avatar Apr 21 '24 09:04 samunohito

ほむん

syuilo avatar Apr 21 '24 09:04 syuilo

通報をすぐに開けるURLの発行とフロント側のルーティング

通報一覧画面に対象のIDを引き込めても、バックエンド側との噛み合わせがイマイチで難しいのでいったんオミットする (対象IDをピンポイントで取得する機能が無い)

samunohito avatar Apr 28 '24 02:04 samunohito