Slack通知アプリの作り方

eyecatch Slack

自作のプログラムや自動実行ツールなど、何かしらの結果をSlackに通知できるようにする方法についてまとめます。

とりあえず通知を飛ばすだけであれば「Incoming Webhook」というアプリを追加すれば可能だったのが、2020年頃から非推奨になり「Slack App」でアプリを自作する手順が推奨されるようになっています。

Incoming Webhookでは不要な権限が付与され、セキュリティ的によろしくないということで、Slack Appを作成し、適切な権限を設定する方法について解説していきます。

スポンサーリンク

通知用アプリを作成する

まずは通知専用のアプリを一つ作成します。以下のURLにアクセスし、「Create New App」から作成します。

Slack API: Applications | Slack

From Scratchを選択し、次の画面で「アプリ名」と「ワークスペース」を設定します。

Create Slack App

「アプリ名」は後から変更できるので適当に入力します。「ワークスペース」は変更できないので、通知を行いたいワークスペースを選択してください。

incoming-webhookの権限を付与する

作成したアプリに対してIncoming Webhookを実行する許可を与えます。

左の項目からOAuth & Permissionsをクリックし、Bot Token Scopesにある「Add OAuth Scope」ボタンをクリックし、”Incoming”など文字を入力すれば候補が出るので、「incoming-webhook」を選択します

Set Permission

ワークスペースにインストールする

左の項目からBasic Informationを選択し「Install to Workspace」ボタンをクリックします

install to Workspace

すると、ワークスペースへのアクセス権限の許可と通知先のチャンネルを選択する画面になります。

チャンネルを指定して「許可する」をクリックします。(通知先のチャンネルは後から追加・削除可能)

Set Channel

これで、左側のIncoming Webhooksをクリックすると、下の方の「Webhook URL」に指定したチャンネル用のURLが用意された状態になります

Check Webhook URL

curlでpostするためのコマンド、またはWebhook URLを「Copy」ボタンからコピーすれば使用できます。

新しく別のチャンネル用のURLを作成したい場合は、「Add New Webhook to Workspace」からチャンネルを指定すれば追加可能です。

不要になったURLはゴミ箱アイコンから削除しましょう。

curlコマンドで通知テスト

curlでテストする場合はIncoming Webhooksページに表示されているコマンドをコピーして使用します。

Windowsの場合、そのまま使うと”Could not resolve host: application”というエラーになってしまいます。これを回避するにはコマンドの’(シングルコーテーション)部分を以下のように書き換えます。(元々”の部分は\”にする)

curl -X POST -H "Content-type: application/json" --data "{\"text\":\"Hello, World!\"}" https://hooks.slack.com/services/xxxxxx/xxxxxxxx/xxxxxxxxxxxxxxxxxxxx

成功すると指定したチャンネルに”Hello World!”というメッセージが表示されます。

curl result

コメント

タイトルとURLをコピーしました