-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discordの通知チャンネルのURLプレビューを表示させないように変更 #7933
Discordの通知チャンネルのURLプレビューを表示させないように変更 #7933
Conversation
Discordへの通知本文にURLが含まれている場合にプレビューが表示されないように変更した
Discord通知の本文にURLが含まれている場合でもプレビューが表示されないように変更。
メンター向けのDiscord通知の一部はAPIで文面を提供するだけのものだったため、それに該当するファイルを変更した。
@motohiro-mm |
承知いたしました! |
@motohiro-mm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させていただきました!
丁寧に変更確認方法を書いてくださりとても助かりました🙏
ありがとうございます!
コードは問題ないように思いました!
1つ伺いたいことがあります。
ham-capさんの環境では修正前の状態(mainブランチ)で指定のテストを実行するとURLのプレビュー表示が全てされている、ということで合ってますでしょうか?
私の環境でmainブランチで変更確認方法記載のテストを実行すると、URLプレビューが表示されない項目がいくつかありました。
URLプレビュー表示がなかったものは以下です。
- 定期イベント
- 新たなメンバーとしてJOIN
- プラクティス関連
- Docs関連
- 質問関連
- はじめての日報
mainブランチでテストを実行しURLプレビュー表示があったものは以下で、修正後のブランチでテストを実行しプレビューが表示されなくなることを確認しました。
- お知らせ投稿
- 通常の日報公開
環境構築として、Discordサーバーの準備と、環境変数の設定を行なっています。
私の環境になにか誤りがあって確認がうまくできていない可能性があったので伺いました。
@motohiro-mm @komagata |
もう少しなぜなのか調べてみてください〜 |
@komagata @motohiro-mm まず、大前提としてローカルでアプリケーションを立ち上げている場合は外部からのアクセスができませんので、Discordがmetaデータを取得できず、プレビューは表示されません。 今回、mainブランチでテストを実行してもプレビューが表示されていなかったものの中で考えますと、Docs関連を除く全てがこのパターンに該当します。
残るDocs関連についてですが、正常に表示される「お知らせ」や「通常の日報」と比較したところ、未ログイン状態で、存在しないページへアクセスした場合にトップページへリダイレクトされるパターンと404エラーのページへとばされるパターンの2通りあることがわかりました。 したがって、mainブランチでテストを実行したとしてもプレビューが表示されないものについては、URLやDiscordのプレビュー機能に問題があるわけではなく、あくまで正しく動作した結果と考えられます。 調査結果は以上です。私の認識不足により大変失礼いたしました🙇♂️ |
@ham-cap 調査ありがとうございます。結論から言うと、 「メタデータが取得できない場合にプレビューが表示されない」 ってことですかね。 質問が一つあります。 |
はい。そのとおりです。
いいえ。
この調査で「なぜ 経緯としては、レビュアーの@motohiro-mm さんが動作確認で「 この調査結果を踏まえて考えると、
と言えます。 また、今回システムテストの際にDiscordがメタデータを取得できず、 なお、以下は上記調査の補足になります。 テストの際にドメインがローカルのURLになってしまうものと、そうでないものが存在する理由URLの生成方法によるものです。 |
なるほどです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させて頂きました。OKです〜🙆♂️
Issue
概要
現状、BootcampからDiscord宛に自動送信される通知の中には、通知本文にURLが含まれているものが複数存在します。
Discordは通常、投稿の本文にURLがある場合に自動で以下のようなプレビューが表示されますが、文字入力の際にURLを
<>
で囲うとこのプレビューを表示させないようにすることができます。<>
なし<>
ありこのPRでは上記のBootcampから自動送信される通知の中で本文中にURLが含まれているものについて、Discord上でプレビューを表示させないように変更しました。
変更確認方法
Discordサーバーの準備
に記載の手順にしたがってサーバー追加、チャンネル作成、当該チャンネルのWebhook URLの取得を行ってください。
環境変数の設定
direnvの導入の仕方については公式のほか、以下のページもわかりやすかったので適宜ご参照ください。
参考:direnvを使おう
今回は上記WikiのDiscord通知に記載されている5つの環境変数を全て設定してください。
.envrc
の中は以下のようにすると全てのDiscord通知の送信先が上記で取得したDiscordサーバーになります。動作確認
feature/remove-url-previews-for-discord-notification-channels
をローカルに取り込む()
内のテストを実行し、プレビューが表示されないことを確認するなお、以下の2つについてはBootcampから通知しているわけではなく、外部に通知文のテキストをAPIとして提供しているだけのものです。
こちらについて駒形さんへ確認したところ、ステージングで確認する術がないことから、確認不要とのことです。
test/system/regular_events_test.rb
やtest/system/sign_up_test.rb
の実行時にテストが失敗したりエラーが出る場合がありますが、これは上記で設定したとおり確認用のDiscordサーバーに通知を送信するためにDevelopment環境で独自の環境変数(DISCORD_ALL_WEBHOOK_URL
等)を設定していることによるものです。これらの環境変数に何も設定しない状態(= 本番と同じ状態)で実行すると通ります。Screenshot
変更前
全て以下のようにプレビューが表示されます。
変更後
各通知についてURLが記載されているだけで、プレビューがない状態です。
イベントのお知らせ
お知らせ投稿
XXXさんが新たなメンバーとしてJOINしました🎉
プラクティス関連
Docs関連
質問関連
🎉 XXXXさんがはじめての日報を書きました!
XXXXさんがXXXX年XX月XX日の日報を公開しました。