SlackのIncoming Webhooksについて

  • 自分の知っていたSlackのIncoming-WebhookはLegacyとしてかなり前に非推奨になっていた話。

サポートに関する情報

Discontinuing support for legacy custom bots and classic appsによれば

  • 2024年6月: 新しいlegacy appsとclassic appsの作成をブロック開始
  • 2025年3月31日: legacy custom botsのサポート終了
  • 2026年5月25日: classic appsのサポート終了

公開されているスケジュールは上記のもので、Legacy Custom Integrationsにあたる、Legacy Incoming Webhookは明確に期日を決められているわけではなさそうです。
色々と仕様の変更については書かれていますが、基本的にはpayloadとして互換性もあるので、ひとまず移行してしまった方が無難という結論です。

Legacy Incoming Webhook と Incoming Webhook

Legacy Incoming Webhook

  • Incoming Webhookでアプリを検索すると表示されます
    • We do not recommend their use. という注意書きが上部にあります
    • 設定画面が1画面で完結し、非常にシンプルでわかりやすく設定できます

Incoming Webhook

  • Slack AppをにてCreate New Appを選択
    • From scratchを選択、App Nameとworkspaceを入力してCreate
    • Basic InformationのDisplay Informationを入力
    • Features > Incoming Webhooks
    • Activate Incoming Webhooks を On にします
    • Add New Webhookで、URLをchannelごとに作成します

それぞれの違い

  • Legacy Incoming Webhook

    • ペイロード内でusername、icon、channelを上書きできる
      • URL知ってたらどのchannelでも書き込めるわけで、あまりよくない仕様ですね
    • 作成者が組織を離れるとWebhookが無効化される管理上の問題があります
    • レイアウトはattachmentsで表現します
  • Incoming Webhook

    • レイアウトはBlock Kitを使用してより高度なメッセージ作成が可能です
    • ただし、attachmentsも非推奨ですが、使えるので互換性は担保されそうです
      • 特に色指定はattachmentsしか表現できず、メッセージの緊急度で色分けしたいケース(監視アラート等)では使うしかありません
        • 色指定にgood/warning/dangerは使えないという情報を見かけましたが、問題なく使えました。カラーコードもOK(例:#ff0000
    • attachmentsでのテストペイロード
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    curl -X POST -H 'Content-type: application/json' \
    --data '{
    "text": "Hello, World!",
    "attachments": [
    {
    "color": "good",
    "text": "This is a test message"
    }
    ]
    }' \
    https://{YOUR_WEBHOOK_URL}

    slack上の表示