はじめに
いつからかはわからないのですがslackがIncoming Webhooksの仕様を変えたらしくかなり戸惑いました。
自分なりにわかりにくかった点をまとめてます。
旧仕様の方はあまり自信がないですので知見ある方は教えてください。
他にも認識間違っているところあれば教えていただけると幸いです!
アプリとwebhook URLとチャンネルについて
アプリ
旧仕様
たしかそもそもwebhooksを利用するのに必須ではなかった。
そのためIncoming webhooksと言う名の名前だけでは判断できない謎アプリが大量にslackのワークスペースにあった気がする…
新仕様
webhooksの利用に必須。名前も必須
webhookURL
旧仕様
ワークスペース?アプリ?に一つだったっけ?
新仕様
発行する際にアプリが必須に。
チャンネルごとに発行される。
アプリとwebhook URLとチャンネルの関係
・webhook URLはチャンネルと一対一
・アプリはwebhook URLと一対多
の関係になっている。
アプリが対応するチャンネルのwebhook URLを発行されていない場合はメッセージを送っても「チャンネルがないよ」と返してくる。
webhook URLが発行されているチャンネルでないとアプリがそもそも追加できないようになっている。
メッセージの送信のカスタマイズ(めっちゃ大切)
旧仕様
一つwebhookURLがあれば、そのURLに値をPOSTすればなんでもできた。
username(なんて名前で送るか)
channel(どのチャンネルに送るか)
icon(どんなアイコンをつけるか)
新仕様
上記の設定がPOSTする値から設定できなくなった。(webhookURL経由では変更できなくなった)
代わりにそれらの設定がアプリごとに固定になった。(まぁこっちの方が自然だよな…)
blocksという新しい引数が追加された
旧仕様を用いて作成された既存アプリについて
現状は動くが、いずれ動かなくなるかも。
参考文献
https://api.slack.com/messaging/webhooks
https://github.com/laravel/slack-notification-channel/issues/34#issuecomment-608376575
終わりに
webhookURLがチャンネルごとなのはちょっと不便になったかな…と思いますが、それ以外は逆に自然になった気がする。
破壊的変更ではないので、実はこれに伴う変更が意外とライブラリで整備されてなかったりする(blocksとか)のでissueを立ててみるのも良いかも。