DiscordにWebhookを使って通知する

NO IMAGE

ゲームでも、個人用のチャットツールでも、Discordを利用する機会が増えてきました.
そうなると、fail2banやMackerelの通知先にDiscordを選ぶことになります。
今回は、その時のメモです.

Webhookで通知する

まず、「Webhookで何が出来るのか」ということなんですが、Discordから発行されるURLにリクエストすることで、プログラムや外部サービスからメッセージを投稿することができます.
また、URLの末尾に文字列を追加することで、サポートしている外部サービスと同じスタイルでメッセージを投稿することが出来ます.

通常形式のWebhook

通常形式の場合は、Discordから発行されたURLそのままです.
ドキュメントについては、こちらです.

例)

$ curl -X POST -d '{"content": "テスト"}' 'Discordから発行されたWebhookのURL'

Slack形式のWebhook

Slack形式の場合は、Discordから発行されたURLの末尾に/slackをつけたURLに対して、リクエストします.
ドキュメントについては、こちらです.

Slackと同じ形式で使えるため、Slackに通知するサービスなどの通知先に、このURLを登録すると、特に何もせずとも連携可能です.
仕事では、Slackをメインで使っているため、個人的にグッドポイントです.

例)

$ curl -X POST -d '{"content": "テスト"}' 'Discordから発行されたWebhookのURL/slack'

Github形式のWebhook

Github形式の場合は、Discordから発行されたURLの末尾に/githubをつけたURLに対して、リクエストします.
ドキュメントについては、こちらです.

Githubからの通知に対応した形式ですね.
リポジトリに設定しておくことで、プルリクエストやマージ、課題操作などのイベントを、Discordで拾うことができます.

例)

$ curl -X POST -d '{"content": "テスト"}' 'Discordから発行されたWebhookのURL/github'

どういう時に使うのか

私が使っているケースを、ざっと列挙していきます.

  • GithubのNotifiion通知
  • Mackerelの通知
  • fail2banの通知

はい、3つぐらいしか、まだ設定していません.

最後に

Slackに来る通知も、徐々にDiscordへ移行していきたいですね.
Slackと違ってログ残るの凄く嬉しいから。.