IndieForm
ガイド一覧

問い合わせをSlack・Discordに通知する:Webhook URLの取得と注意点

·最終更新

問い合わせをメール通知だけで受けていると、他のメールに埋もれて見落とすことがあります。
SlackやDiscordを普段使っているなら、問い合わせが届いた瞬間にそのチャンネルへ通知するほうが気づきやすくなります。
通知を送るにはSlackまたはDiscord側でWebhook URLを発行し、通知したいツールへ登録するだけですが、発行元によってURLの形式が異なり、扱いを誤ると届かなかったりURLを他人に使われたりします。
まずSlackとDiscordそれぞれの発行手順を確認します。

SlackはIncoming Webhookを自分で発行する

SlackチャンネルへPOSTするための入り口がIncoming Webhookです。
公式ドキュメントの手順は次のとおりです。

  1. Slack APIのサイトでアプリを作成する
  2. アプリの設定で「Activate Incoming Webhooks」を有効にする
  3. 「Add New Webhook to Workspace」から投稿先チャンネルを選び、Authorizeする
  4. 発行されたhttps://hooks.slack.com/services/…形式のURLをコピーする

このURLはIncoming Webhook専用の形式で、SlackアプリのOAuthトークンや他の設定画面のURLとは異なります。
どの通知ツールへ登録する場合も、コピーする対象を間違えないようにしてください。

Discordはチャンネルの「連携サービス」から作る

Discordの場合は、チャンネル単位でWebhookを発行します。
実際の作成手順を紹介する記事によると、流れは次のとおりです。

  1. 通知したいテキストチャンネルを右クリックし、「チャンネルの編集」を開く
  2. 左メニューの「連携サービス」から「ウェブフックを作成」を選ぶ
  3. 名前、アバター、投稿先チャンネルを設定する
  4. 発行されたhttps://discord.com/api/webhooks/[ID]/[TOKEN]形式のURLをコピーする

サーバーの招待URLやチャンネルへの直接リンクとは形式が異なるため、混同すると通知ツール側で弾かれます。

発行したURLは登録先にだけ渡す

SlackもDiscordも、Webhook URLはそれ自体が認証情報を兼ねています。
SlackのIncoming Webhookに関する公式ドキュメントには次のように明記されています。

Your webhook URL contains a secret. Don't share it online, including via public version control repositories.

DiscordのURLも/api/webhooks/[ID]/[TOKEN]TOKEN部分がWebhookを実行するための認証情報で、Discordの開発者向けドキュメントではこの値を「secure token」と説明しています
どちらも、URLさえ知っていれば誰でもそのチャンネルへ投稿できるため、公開リポジトリやスクリーンショット、チャット上での共有先に含めないでください。

Slackは漏洩したWebhook URLなどのシークレットを能動的に検出し、無効化する仕組みを持っています。
心当たりのある共有をしてしまった場合は、無効化を待たずアプリの設定画面からWebhookを削除し、新しいURLを発行して登録し直してください。

IndieFormに登録して届くか確認する

発行したURLは、IndieFormのダッシュボードにある通知設定のSlack・Discordそれぞれの入力欄へ貼り付けて保存します。
IndieFormはhooks.slack.com/services/以下と、discord.comdiscordapp.comptb / canaryサブドメインを含む)の/api/webhooks/または/api/v数字/webhooks/以下という、発行元の正規の形式に一致するURLだけを受け付けます。
登録すると、そのチャネルの通知は自動でONになります。

登録にはIndieプラン以上が必要です。
Freeプランでは、Webhook URLの新規登録、通知の有効化、テスト送信、実際の通知配信のすべてが止まります。
すでに登録済みのURLとON/OFF設定は、Freeへダウングレードしても保持されますが、URLの解除だけは行えます。

保存すると、画面にはURL全文ではなくhooks.slack.com/services/…/xxxxxxxxのようにホストと先頭・末尾だけを残したマスク済み文字列が表示されます。
全文は保存後に画面へ戻ってこないため、URLを別途控えておく必要はなく、貼り間違いに気づいたら削除して発行し直してください。

登録が終わったら、テスト送信ボタンでサンプル通知を送り、実際に届くかその場で確認できます。
届かない場合は、次を順に確認してください。

  • URLがhttps://で始まっているか(http://は受け付けません)
  • コピーしたURLがSlack・Discordそれぞれの正規の形式になっているか
  • コピーしたURLが招待リンクやチャンネルリンクなど、Webhook発行時以外の画面のURLになっていないか
  • ワークスペースやサーバーの通知チャンネルがアーカイブ・削除されていないか
  • プランがFreeのままになっていないか

届く通知にはカテゴリの絵文字とリスクレベルの色、問い合わせのタイトルと本文の冒頭が含まれるため、SlackやDiscordを開いた時点で、詳細を開く前に対応の優先度が分かります。

関連記事

アプリ専用の問い合わせフォームを用意する

アプリのURLからフォームの下書きを作り、サポート窓口として公開できます。