Discordに組み込まれたウェブフックは、自動メッセージやデータの更新情報をサーバー内のテキストチャンネルに簡単に送信する機能です。
ウェブフックは、銀行などで昔よく使われていたエアシューターのようなものです。現金や書類が入ったカプセルが勢いよく空気圧チューブの中で飛ばされていく様子は、見ていて楽しいものでした。エアシューターの場合、カプセルは戻ってこないため送った現金を再び目にすることはありませんが、ウェブフックは別のプラットフォームからDiscordにメッセージを送信する仕組みです。
サーバーにウェブフックのエンドポイントを作成すると、ウェブフックURLが生成されます。このURLをさまざまな他のサービスに貼り付けることで、2つのサービスをリンクさせることができます。
エアシューターの仕組みは本当に素晴らしいものでしたが、ウェブフックを利用するには、通知先となる別のウェブサイトが必要ですのでご注意ください(プログラミングが得意なユーザーは、独自の「チューブ」を作ることも可能です)。
ウェブフックを簡単に組み込んでメッセージを送信できるように構築されたサービスやウェブサイトもありますが、そうでないものもあります。 以下のリストを参照してください。
| ウェブフック使用可能: | ウェブフック使用不可: |
| GitHub | Twitch / YouTube |
| CircleCI | ハムスターのNelly |
| DataDog |
Webhookの作成
上記を踏まえて、GitHubのコミットやプルリクエストでDiscordサーバーを更新したり、DataDogなどの分析を追跡したりする方法を、以下でご説明します。
- 「サーバー設定」を開き、「連携サービス」タブを開きます。
- 「ウェブフックを作成」ボタンをクリックして、ウェブフックを新規作成します。
ここではいくつかの設定が用意されています。 次のようなことができます。
- アバターを編集: 左上にある名前横のアバターをクリックします。
- ウェブフックが通知するチャンネルを選択:ドロップダウンメニューで通知先のテキストチャンネルを選択します。
- ウェブフックへの名前付け:複数のサービスに向けた異なるウェブフックを区別するのに便利です。
これで、便利なURLの送信チューブを多数のウェブサイトとリンクさせたので、メッセージを受け取れるようになります。
簡単な例:GitHubとWebhookの統合
ウェブフックは単独では機能せず、想定通りに機能させるには別のウェブサイトにリンクさせる必要があります。ここでは、熱狂的なGitHubファンやコード開発者向けの情報として、統合の一例をご紹介いたします。
Discordのウェブフックを使用して、コードのマージを送信したり、リポジトリ内のアップデートをサーバー内のテキストチャンネルにプッシュしたりできます。
1. メッセージを受信したいサーバー/チャンネルのウェブフックURLを取得する:
このサーバーには、#general-chatとラベルづけされたテキストチャンネルが作成されています。ここにリポジトリの更新情報がメッセージとして投稿されるようにします。
そこで、「ウェブフックURLをコピー」ボタンを選択して、このチャンネルのURLをコピーします。
2. GitHubリポジトリ設定にウェブフックURLを追加する
Discordサーバーで、更新情報を受け取りたいリポジトリを選択します。 リポジトリを選択したら、「設定」>「ウェブフック」メニューに移動します。
「ウェブフックを追加」ボタンをクリックし、「Payload URL」欄にDiscordが生成したURLを入力します。
ウェブフックにメッセージを正しく表示させるには、メッセージの末尾に「/github」を付加することが非常に重要です。 繰り返しますが、これは絶対的に必要不可欠です。
URLに加え、GitHubに固有の設定をいくつか選択できます。 コンテンツの種類については、application/jsonを指定してください。 Discordのウェブフック形式は、JSONが標準です。 次のセクションでは、どのイベントでウェブフックのメッセージを連動させるかを設定できます。
イベント通知の設定オプションの下にある「ウェブフックを追加」ボタンをクリックして、完了です! リポジトリにアップデートがプッシュされると(readmeファイルの編集も)、テキストチャンネルに通知が表示されます。
これで統合は完了です! GitHubは、Webhook経由でメッセージを投稿する統合の1例にすぎません。 JSONアプリケーションの構築またはHTT投稿リクエストについての専門知識が豊富で、ウェブフックをカスタマイズしたい方は、ディベロッパー向けドキュメントで詳細情報を掘り下げることができます。