slack apiの「Create New App」から、「Webhookでslackにメッセージを送る」Slack appを作るやり方の備忘録【非推奨じゃないやつ / Incoming Webhook】

ポイント
- 「Incoming Webhook」というアプリをワークスペースに追加する方法ではありません。
- この方法は現在非推奨で将来的に削除されることも示唆されている。
- 本記事での方法は
slack apiのページのYour AppsのCreate New AppでAppを作成し、そのAppの設定項目の`Incoming Webhooks`を使用する方法です。(現在はこちらが推奨されている)
本編
「Webhookでメッセージをチャンネルにポストするやつ」を作る場合、slack app directoryで「Incoming Webhook」というアプリ(「Incoming Webhook」で検索すれば出てくる)を使うのが、それまでスタンダードだったようですが、「Incoming Webhook」アプリのページを見ると、「これはレガシーな方法だからSlack appsを使ってね」と書かれております。



このSlack appsの表記はリンクになっているのでクリックしてみると「slack api」のページに遷移します。

Webhookでメッセージを送信できるAppを作る
というわけで、Your appsをクリックしてその先でCreate New AppボタンをクリックしてWebhookでメッセージを送信できるAppを作ってみます。

モーダルが表示されるのでForm scratchを選択して次へ

次にApp Nameを入力します。そして使用するワークスペースを選択します。

Appが作成され、Appの設定ページが表示されます。

左ナビメニューにあるIncoming Webhooksをクリックします。
そして、ラジオボタンをオンにします。

オンにするとWebhookのためのURLを管理する欄が表示されるので、Add New Webhook to Workspaceをクリックします。

Webhookでメッセージをポストしたいチャンネルを選択します。

Webhook URLが生成されます。これでWebhookでメッセージを送れるようになりました。

Webhookでメッセージをポストしてみる
サンプルのcurlコマンドのURL部分だけ生成したものに置き換えて実行してみます。
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX
invalid_payloadと言われた…
--dataの部分が良くなかったらしい。
--data '{\"text\":\"Hello, World!\"}'のように"をエスケープしたら送信できた。
以下が成功した書き方。
curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Hello, World!\"}' https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX

できた!
以上!
Share this post