Discourse-chat-integration プラグインで Discord 通知を設定する

ページを再読み込みしてみてください。プラグインを有効にした後、再読み込みが必要です。

「いいね!」 3

わかりました、ありがとうございます!

やあ、皆さん。Discord でこのプラグインの設定中にエラーが発生しています。チャンネルは作成済みで、プラグインを使ってウェブフックも設定済みです。

次にこのエラーが表示されます。

テスト送信をすると、このエラーになります。

ログには以下が表示されています。

何かご助力いただければ幸いです。

この「info」タブの内容を共有してもらえますか?コピー&ペーストしていただければ助かります。スクリーンショットだとログが読み取りにくいためです。

「いいね!」 1

メッセージ(2 件のコピーが報告されました)

テストプロバイダーが失敗しました {:error_key=>nil, :message=>{:content=>"", :embeds=>[{:title=>"FAYN 規則書 [同盟/発表] ", :color=>12525102, :description=>"[画像] \nFAYN は、このガイドラインと規則の枠組みの中で、個人と集団の双方を成長させるために、集団として連携して活動する企業のグループです。\n管理ツール\nFAYN の一員として、SeAT 上で、重要性の如何を問わず、すべてのキャラクターをメインキャラクターとリンクさせることが義務付けられています。これは採用要件の一部であり、当法人の継続的な管理を支援するものです...", :url=>"https://forum.darksideoftheeclipse.co.uk/t/fayn-rule-book/45/1", :author=>{:name=>"@PJHustle", :url=>"https://forum.darksideoftheeclipse.co.uk/u/PJHustle", :icon_url=>"https://forum.darksideoftheeclipse.co.uk/user_avatar/forum.darksideoftheeclipse.co.uk/pjhustle/45/4_2.png"}}]}, :response_body=>"<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body>\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>cloudflare</center>\r\n</body>\r\n</html>\r\n"}

バックトレース

/var/www/discourse/plugins/discourse-chat-integration/app/controllers/chat_controller.rb:43:in rescue in test' /var/www/discourse/plugins/discourse-chat-integration/app/controllers/chat_controller.rb:22:in test’
actionpack-6.0.3.3/lib/action_controller/metal/basic_implicit_render.rb:6:in send_action' actionpack-6.0.3.3/lib/abstract_controller/base.rb:195:in process_action’
actionpack-6.0.3.3/lib/action_controller/metal/rendering.rb:30:in process_action' actionpack-6.0.3.3/lib/abstract_controller/callbacks.rb:42:in block in process_action’
activesupport-6.0.3.3/lib/active_support/callbacks.rb:112:in block in run_callbacks' /var/www/discourse/app/controllers/application_controller.rb:354:in block in with_resolved_locale’
i18n-1.8.5/lib/i18n.rb:313:in with_locale' /var/www/discourse/app/controllers/application_controller.rb:354:in with_resolved_locale’

環境

HTTP ホスト: forum.darksideoftheeclipse.co.uk

まずは、この情報をDiscordサポートに連絡し、なぜこのようなことが起きているのかを問い合わせるのが第一歩です。

「いいね!」 1

まあ、そうかもしれないけど、今回は見送るね。僕は開発者じゃないし、何をすべきか、何を聞けばいいかもわからない。この件についてはほとんど理解していないんだ。ただ、以前は動いていたのに今は動かないから、これを投稿しているだけだよ。

もしかしたら Discord が何か変更を加えたからかもしれないね。でも、よくわからない。
僕が直面しているこの問題は、もうすぐ他の人にも起こりそうだという気がするんだ。

共有していただきありがとうございます。データに基づくと、問題はDiscord側に起因しているように見えます。これは私たちが制御できないことです。

「いいね!」 1

問題を見つけました。

Discordのウェブフックが discordapp.com から discord.com に変更されていました。
ウェブフックを discord.com から discordapp.com に変更したところ、動作するようになりました。

とりあえず今は動作しています。この件について Discord サポートにチケットを送信しました。
ただし、現時点で問題が Discord 側にあるのか、アプリ側にあるのかはわかりません。

追記:Discourse 上のウェブフック URL を変更しました。

「いいね!」 5

解決策を投稿していただきありがとうございます。これのデバッグに四苦八苦していました。

こんにちは。

私も同様の問題に直面しています。「プラグイン」→「チャット連携」の「テスト」をクリックすると DiscourseChat::ProviderError のメッセージが表示され、Discord の Webhook URL から 403 forbidden のエラーが返ってきます。

解決のヒントがあれば教えていただけますか?

ウェブフックの URL を discord.com ドメインではなく、discordapp.com ドメインを使用するように変更する必要があります。

「いいね!」 4

こんにちは。これで私の問題が解決しました。ありがとうございます。

プラグイン自体も、新しいアップデートで新しい API ドメイン形式に対応すべきだと思います。

「いいね!」 2

素晴らしい、これで私にも問題が解決しました。


コンソールにこれらのエラーが表示され、プラグインチャンネルが読み込まれていません。これはテーマが原因で、無効化する必要があるのでしょうか?

サーバー設定を確認する必要があります。Apache か Nginx かで変更点があります。このメッセージは検索可能です :love_you_gesture:

本題に戻りますが、Discord で引用されたメッセージにサムネイルを追加し、短縮することは可能でしょうか?非常に長く、チャットを分断してしまいます :neutral_face:

余談ですが、いつもありがとうございます(コミュニティ全体に)。

ログに次のようなエラーが表示されました:

/var/www/discourse/plugins/discourse-chat-integration/app/controllers/chat_controller.rb:43:in `rescue in test'
/var/www/discourse/plugins/discourse-chat-integration/app/controllers/chat_controller.rb:22:in `test'
actionpack-6.1.4.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.1.4.1/lib/abstract_controller/base.rb:228:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
i18n-1.8.10/lib/i18n.rb:314:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:397:in `with_resolved_locale'

ウェブフックの URL を discord.com から discordapp.com に変更したら、すべて正常に動作するようになりました :+1:

「いいね!」 3

Discourse と Discord の統合を探した最初の動機は、フラグが付けられた投稿を Discord に注入し、チーム内でより迅速な通知とレビューを実現することでした。標準プラグインはこの機能をサポートしていませんでした。そのため、フラグ付けされた投稿を Discord に注入する機能が こちら でサポートされるようになりました。

より Ruby らしい実装方法がある可能性や、on(:reviewable) が reviewable 専用のキューを使用すべきであること、フラグ付きのブール値を渡す方法が少しハック的であること、あるいは reviewable に対してより汎用的な処理があるかもしれないことには留意してください。しかし、私の目的にはこれで機能しています。

注意して進めてください:私は Discord 以外のプラットフォームをサポートする予定はなく、上記で特定された他の改善課題にさらに時間を費やす予定もありませんので、この変更をアップストリーム化することはありません。

最終的な見た目は以下のようになります。

「いいね!」 1

皆さん、こんにちは。
DiscordとのWebhookは正常に機能していますが、メッセージの内容が空です。Discordサーバーにディスコースのトピック/返信が表示されません。

「チャット統合Discordメッセージコンテンツ」を含めると、この部分は正しく含まれます。

よろしくお願いします。

なんとか試行錯誤の末、動作させることができました。後続の皆さんのために…

これらの指示には次のように書かれています。

:warning: 注意 : Webhook を使用中にエラーが発生した場合は、ドメイン名が discord.com ではなく discordapp.com であることを確認してください。

Discord から Webhook をコピーしたとき、それは次の形式でした。 https://discordapp.com/api/webhooks/xxx/yyy-zzz-aaa

したがって、上記の指示は Discord が提供する URL と一致しています

問題は、指示に従う際に発生します。プラグイン設定は、文書化されている URL スキームを拒否し、禁止されている URL スキームを受け入れます。コードのどこかで「!」が欠けていたかのようです。

幸いなことに、以下のスクリーンショットに示すように、2 番目のアドレスを使用すると Webhook URL が機能します。

そこで、次に試行錯誤する人が少ないかもしれない問題点を明確にするための提案をいくつか紹介します。

  1. バリデーターを更新して、「discordapp.com」を通過させ、「discord.com」を失敗させる。
  2. バリデーターを更新して、「discordapp.com」と「discord.com」の両方を通過させる。
  3. 指示の文言を、その矛盾した注意書きがないように更新する。

ボーナス提案、
Discourse のセットアップ」設定の下:
ステップ 0: プラグインをインストールした後、プラグインを有効にする
ステップ 1: スクリーンショットを提供する
ステップ 3: スクリーンショットを提供する

現在使用している「間違った」スキームを Discord がサポートしなくなるのではないかと少し心配しています。そのため、Discord が代替 URL を壊す前に、この問題を修正してほしいです。