misskey-dev / misskey

🌎 A completely free and open interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.95k stars 1.35k forks source link

サーバー側のWebHookの 通報された/それを解決した イベントが飛んでこない #14686

Open Zel9278 opened 1 week ago

Zel9278 commented 1 week ago

💡 Summary

サーバー側のWebHookの 通報された/それを解決した イベントが飛んでこない サンプルボタンのテスト時にはイベントは飛んでくる

🥰 Expected Behavior

指定されたWebHookのサーバーに 通報された/それを解決した イベントが飛んで来る

🤬 Actual Behavior

WebHookのサーバーにはなにも飛んでこない

📝 Steps to Reproduce

  1. WebHookのサーバーを建てる
  2. Misskeyクライアントのコントロールパネル > WebHookからWebHookを作り、WebHookサーバーのURLなどを設定する
  3. 実際にノートから通報をする
  4. サーバー側にはなにも来ない

💻 Frontend Environment

* Model and OS of the device(s):
* Browser: Google Chrome 129.0.6668.89(Official Build) (64 ビット)
* Server URL: https://mk.c30.life
* Misskey: 2024.9.0
* OS: Window 11 Pro 24H2 26120.1843

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service:
* Misskey: 2024.9.0
* Node: v20.17.0
* PostgreSQL: psql (PostgreSQL) 16.3
* Redis: Redis 7.2.5
* OS and Architecture: ArchLinux x86_64 Linux 6.10.6-arch1-1

Do you want to address this bug yourself?

Zel9278 commented 1 week ago

補足: ユーザーが作成されたときのイベントは飛んでくる

samunohito commented 1 week ago

手元で試す限り、通報も通報解決もwebhookのイベントが来ていましたので、あからさまな実装ミスではなさそうです…?   実際の送信処理とテスト送信処理の違いは細かいチェック処理の有無なのですが、そこで弾かれている可能性があります。そのチェック処理ではSystemWebhook is not active or not foundSystemWebhook [webhookのid] is not listening toのようなログをinfoレベルで出力していますので、切り分けのためにどちらかのログが出ていないか確認いただくことは可能でしょうか

Zel9278 commented 1 week ago

手元で試す限り、通報も通報解決もwebhookのイベントが来ていましたので、あからさまな実装ミスではなさそうです…?   実際の送信処理とテスト送信処理の違いは細かいチェック処理の有無なのですが、そこで弾かれている可能性があります。そのチェック処理ではSystemWebhook is not active or not foundSystemWebhook [webhookのid] is not listening toのようなログをinfoレベルで出力していますので、切り分けのためにどちらかのログが出ていないか確認いただくことは可能でしょうか

WebHookのサーバー側でも、Misskeyのサーバー側(メールはちゃんと送信されます)でも、何もログが出てきませんでした。 WebHookのサーバー側で行っている処理は以下になります

app.post("/webhook", (req, res) => {
    const misskeyHookSecret = req.headers["x-misskey-hook-secret"]
    console.log(`[LOG] Checking secret: ${misskeyHookSecret}...`)

    if (misskeyHookSecret !== config.WEBHOOK_SECRET) {
        res.status(401).send("Invalid secret")
        console.log("[LOG] Invalid secret")
        return
    }

    console.log("[LOG] Valid secret")

    res.send("Hello World!")
})