💁

Slack:Webhook URL取得してSlackに通知する

2021/08/19に公開

こんにちは
システム通知をSlackに飛ばしたいことはありますでしょうか?私は結構あります。
その際、Incoming Webhookを使用することは珍しくないと思います。

このIncoming Webhookですが、今まではカスタムインテグレーションから設定していたと思います。
しかし、2020年よりカスタムインテグレーションは非推奨になり、Slack Appを作成して利用する方法が推奨されるようになりました。

移行期間中なので使えないわけではないですが、いつ使えなくなるかアナウンスされていないため、カスタムインテグレーションを使っている方もSlack Appも把握されたほうが良いと思われます。

今回、社内で問い合わせが増えたので、画像多めにしました。

新方式(Slack app)

Slack APIのページから[Create New App]をクリックします
https://api.slack.com/

アプリ管理者は別の方法があります
  • URLからダイレクトに[アプリの管理]に行く場合
    以下のURLよりSlackアプリを選択します
    https://slack.com/apps

  • GUIから行う場合
    [設定と管理]→[アプリを管理]の順にクリックします

  • ここから共通
    [管理]をクリックします

    [Create New App]をクリックします

[Form scratch]をクリックします

[Incoming Webhooks]→[Activate Incoming Webhooks]のトグルボタンを押して[On]にします

[Add New Webhook to Workspace]をクリックします

[App Name]にアプリの名前を入力します
[Pick a workspaces to develop your app in:]に利用したいWorkspacesを選択します
[Create App]をクリックします

[[App Name]Requires a channel to post to as an app]に通知したいチャンネルを選択し[Allow]をクリックします

Webhook URLをコピーしましょう

旧方式(カスタムインテグレーション)

以下のURLよりIncoming Webhookインテグレーションの追加を選択します
https://slack.com/services/new/incoming-webhook

GUIから行う場合

[設定と管理]→[アプリを管理]の順にクリックします

[カスタマーインテグレーション]→[Incoming Webhookインテグレーションの追加]の順にクリックします

[Slackに追加]をクリックします

追加するチャンネルを選択→[Incoming Webhook]をクリックします

WebhookURLをコピーしましょう

Slackへ通知

SlackAppでMacの場合、Sample curl request to post to channelに書いてあるコードをコピーし、ターミナルから実行すると、Slackに通知が飛びます。

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/xxxxxxxxxxx/yyyyyyyyyyy/zzzzzzzzzzzzzzzzzzzzzzzz

メンションが必要な場合、ユーザIDを取得して<@user_id>にする

個別にユーザIDを取得する方法

ユーザープロフィールの中にあるCopy number IDをクリック

curl -X POST -H 'Content-type: application/json' --data '{"text":"<@USER_ID> Hello, World!"}' https://hooks.slack.com/services/xxxxxxxxxxx/yyyyyyyyyyy/zzzzzzzzzzzzzzzzzzzzzzzz

特殊メンション(channnel,here,everyone)は以下の通りとなります。

  • 通知方法
Slack API 通知範囲
@channel <!channel> チャンネル参加者すべて
@here <!here> アクティブな参加者すべて
@everyone <!everyone> メンバーすべて(#generalで利用)
curl -X POST -H 'Content-type: application/json' --data '{"text":"<!here> Hello, World!"}' https://hooks.slack.com/services/xxxxxxxxxxx/yyyyyyyyyyy/zzzzzzzzzzzzzzzzzzzzzzzz

Discussion