FFFT

主にwebプロダクト開発に関連する話をつらつらと

【2020年度版】Slack通知はSlack AppのIncoming Webhooksを使おう!やり方を解説

f:id:keyama4:20200418144323j:plain

Slackの特定のチャネルにAPI経由でメッセージを送るカンタンな仕組みをSlackではIncoming Webhooksと呼びます。
このIncoming Webhooksは、2020年現在、2通りのやり方があります。

旧方式と新方式です。旧方式は、非推奨です。
下記の公式ページにも明確にdeprecatedの記載があり、将来的に削除する可能性があると名言されているので新方式を使いましょう。

These integrations lack newer features and they will be deprecated and possibly removed in the future.
We do not recommend their use.

api.slack.com

にも関わらず未だにgoogleで検索すると旧方式のやり方ばかりヒットする...
この記事が、新しくincoming Webhooksを使おうとしている人の役に立てれば幸いです。

そもそもIncoming Webhooksってどんなもの?どう使うの?

設定して振り出されたAPIのエンドポイントに対して下記のようなリクエストをPOSTすると設定されたチャネルでSlack Appがメッセージを投稿してくれる仕組みです。

{
  "text": "今週の金曜ロードショーは「ハリー・ポッターと死の秘宝 PART1」だぜ:+1:"
}

こんな感じ。わかりやすくてカンタンな仕組みですね。Slack Appの名称やプロフィール画像は自由に設定が可能です。
f:id:keyama4:20181116000304p:plain

なお、上記のポ●コさんは、金曜ロードショーの公式ページをクローリングして今週の映画を自動通知してくれます。詳細は下記の記事にまとめていますので良ければ見てください。
飛ばねぇ豚はただの豚ですね。リンク先に飛ばねぇやつはとかそういう意味じゃないですよ(ぼそっ)


keyama.hatenablog.com

新方式の手順

手順は知っていれば、5分もかかりません。
まずは下記にアクセスします。
https://api.slack.com/apps

アクセスするとあなたのslackアカウントで管理しているslack appの一覧が下記のように表示されます。
ログインしていない場合は、言うまでもないですがまずはログインしてください。

f:id:keyama4:20200418164627p:plain

右上の「Create App」をクリックして、アプリケーション名と、どのworkspaceに追加するか選びましょう。
アプリケーション名は後からでも変更可能ですので適当でも大丈夫です。
このとき追加したいworkspaceが選択肢に表示されない場合、対象のworkspaceの権限を持つアカウントの認証が切れています。その場合は対象のアカウントでログインし直しましょう。
「Create App」をクリックすると下記の画面が表示されます。

f:id:keyama4:20200418170114p:plain

「Add features and functionality」セクションにある「Incoming Webhooks」をクリックしましょう。

f:id:keyama4:20200418170133p:plain

トグルをクリックして、OffからOnへ。
そのままの画面を下にスクロールすると、「Webhook URLs for Your Workspace」のセクションがあります。
最下部の「Add New Webhook to Workspace」をクリック。

f:id:keyama4:20200421174528p:plain

するとこんな感じで怒られるかと思います。

f:id:keyama4:20200421174758p:plain

「ポ●コ doesn't have a bot user to install」
インストールのためのbot userをそもそも持ってないぞと。
次に何をしたら良いかわかりづらいエラーメッセージなので詰まる方がけっこういそうな印象です。

こちらのエラーは対象のSlack AppのDisplay Nameを設定することで解消されます。
Display Nameを設定すると内部的に有効なbot userが設定されるという感じなのかな。上のエラーメッセージじゃマジでわからないですね。

メニューの「App Home」から「Your App’s Presence in Slack」セクションの「Edit」をクリック。
お好きなDisplay Nameを設定しましょう。こちらの内容は後からでも変更可能です。(デフォルトで設定しておいてくれても良い気がするもんだが...)

f:id:keyama4:20200421175906p:plain

f:id:keyama4:20200421175920p:plain

設定したら作業を戻して、incoming webhookをworkspaceに追加しましょう。
メニューの「Incoming Webhooks」からページ最下部の「Add New Webhook to Workspace」をクリック。

f:id:keyama4:20200421180616p:plain

どのworkspaceに追加するかを選んで、「allow」をクリック。

f:id:keyama4:20200421180659p:plain

そうすると、「Webhook URLs for Your Workspace」に新しく追加したwebhookが表示されます。
これだけです。
「Copy」をクリックして、ターミナルでcurlを実行してみましょう。
こちらの設定画面のとおり、workspace単位でwebhookが追加されます。別のworkspaceにwebhookを導入したい場合は、「Add New Webhook to Workspace」から新たに作ればオッケー。
後はwebhook urlをコピーしてご自分で作っている通知自動化の仕組みに組み込んでいただくだけです。

見た目を変えたい!

メニューの「Basic Information」をクリック。
f:id:keyama4:20200423021152p:plain

ページ中断より少し下の「Display Information」から見た目の変更が可能です。
f:id:keyama4:20200423021641p:plain

アプリケーション名、デスクリプション、背景色、アイコンの4つが設定可能です。
アイコンのサイズは512px以上2000px以下の正方形を用意してください。

Icons must be squares between 512px by 512px and 2000px by 2000px, please!