ホームに戻る
出典 :
目次 :
※この記事は書きかけです。
Slackアプリでできること
外部のアプリケーションからSlackへのメッセージ送信や、サーバを介したインタラクティブな通信が可能となる。
アプリの作成手順
「アプリの作成(Create an app)」と表記されてはいるが、ここで紹介する手順は「外部アプリケーションへの窓口(インタフェース)を用意する」のに近い。
アプリの設定
-
Slack API のページに移動し、"Create an app"を押す。
-
"Your Apps"のページに移動するので、"Create an app"を押す。
-
ダイアログが開くので、"From scratch"を押す。
-
アプリ名を入力、登録先ワークスペースを選択し、"Create App"を押す。
-
"Basic Information" > "Add features and functionality" > "Permissions"を押す。
-
"OAuth & Permissions"のページに移動するので、下方向にスクロールし、
"Scopes"下の"Bot Token Scopes" > "Add an OAuth Scope"(外部からの投稿をBotとして行う場合)
または"User Token Scopes" > "Add an OAuth Scope"(外部からの投稿をユーザ(例 : Takahata Shinji)として行う場合)を押し、
"chat:write"を選択する。
(通常の投稿であれば上記で対応可能。その他のスコープについては割愛。)


-
上方向にスクロールし、"OAuth Tokens for Your Workspace" > "Request to Install"を押す。

-
ダイアログが開くので、"Submit Request"を押す。
リクエストが届けば、Slackbotからメッセージが届く。

アプリのインストール
-
"Your App"ページ左側メニューの"Basic Information"を押す。

-
"Basic Information" > "Add features and functionality"にチェックがついていることを確認し、
"Install your app" > "Install to Workspace"を押す。

-
"許可する"を押す。
インストールに成功すれば"Basic Information" > "Install your App"にチェックがつく。


トークンの取得
トークンとは、外部アプリケーションからSlack Appを介して投稿を行う際に、用いるAppを特定する鍵のことを指す。
ユーザとして投稿する場合と、Botとして投稿を行う場合とで異なるトークンを用いる点に注意。
-
"Your App"ページ左側メニューの"OAuth & Permissions"を押す。
ユーザ、Bot投稿用のトークンが表示される。"Copy"を押すとクリップボードにコピーされる。

チャンネルへのAppの追加(チャンネルへの投稿の許可)
投稿先となるチャンネルにAppを追加することで、Appを介したチャンネルへの投稿が可能となる。
-
Slackを開き、登録先のチャンネルを右クリック、「チャンネル詳細を開く」を選択する。

-
「インテグレーション」タブを選択し、「App」>「アプリを追加する」を押す。

-
検索欄に追加したいApp名を入力し、表示されたAppが正しければ「追加」を押す。

cURLを用いたSlackへの投稿
cURLとは、様々なプロトコルを用いたデータ転送を可能とするライブラリと、コマンドラインインタフェースの組である。
cURLを用いることで、HTTPリクエストの形式でSlackへのメッセージ送信が可能となる。
UNIX / Linuxだけでなく、Windowsでも利用可能。
以下、Windows + PowerShellでの例。

( "--data" は "-d" と同義)
メッセージの形式
解説のために改行を挿入。実際には空白で連結する。
curl -X POST -H 'Authorization: Bearer xoxb-$$$$$' //< 青字はトークン
-H 'Content-type: application/json;charset=UTF-8'
-d '{"channel":"@username","text":"Test"}' //< {}内に送信先チャンネル、メッセージを記述
https://slack.com/api/chat.postMessage //< SlackのURL
項目 |
記述例 |
備考 |
トークン |
「トークンの取得」で 取得したトークン |
|
|
送信データ |
送信先チャンネル / ユーザ名 |
チャンネルに送信する場合 : チャンネル名 |
\"channel\":\"report-takahata\" (チャンネル"report-takahata"に送信) |
|
ユーザに送信する場合 : "@" + ユーザ名 |
\"channel\":\"@Takahata.Shinji\" (ユーザ"Takahata Shinji"に送信) |
ユーザ名の空白" "はドット"."で置換する |
送信メッセージ |
送信するメッセージ |
\"text\":\"Test\" (メッセージとして"Test"を送信) |
|
注意が必要な点
Windows版cURLに限り、送信データ中の二重引用符(")は、バックスラッシュ(\)を付与する必要がある。
- 誤 : バックスラッシュなし
--data '{"channel":"@username","text":"Test"}'
- 正 :
--data '{\"channel\":\"@username\",\"text\":\"Test\"}'
Webhookを用いたSlackへの投稿
投稿先のチャンネル(またはユーザ)に紐づいたURL(Webhook)を用いることで、より簡便にメッセージを送信できる。
準備(Webhook URLの作成)
-
"Your App"ページ左側メニューの"Incoming Webhooks"を押す。

-
"Activate Incoming Webhooks"トグルボタンをオンにし、
"Add New Webhook to Workspace" を押す。

-
コンボボックスに投稿先のチャンネルを入力し、「許可する」を押す。

-
許可されると、Webhook URLが作成される。
"Incoming Webhooks"で確認可能。

cURLを用いた投稿

解説のために改行を挿入。実際には空白で連結する。
( "--data" は "-d" と同義)
curl -X POST -H 'Content-type: application/json;charset=UTF-8'
-d '{"text":"Test"}' //< {}内にメッセージを記述
https://hooks.slack.com/services/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 //< Webhook URL
項目 |
記述例 |
備考 |
送信データ |
送信メッセージ |
送信するメッセージ |
\"text\":\"Test\" (メッセージとして"Test"を送信) |
|
課題
- 外部からコマンドは実行できない?
- 日本語が文字化けする?
⇒ JSONを一旦UTF-8で保存しておいて、ファイルを送信すると良い?