simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Slack:WebAPIを用いてチャンネルに投稿する

f:id:simplestar_tech:20181208215717j:plain
Advanced REST clientからSlackへ投稿するテスト

■前置き
一人 Slack は自分が管理者ですから、Slack App や Bot も入れ放題!
いろいろなツールから Slack に対して通知を飛ばしたいので、今回は外部から Slack に投稿する方法を確認します。

■tokenの取得

次のようなリンクを踏むと Slack App Directory にアクセスできます。
https://yourworkspace.slack.com/apps

Bot の Web API の token 文字列が欲しいので、Bots を探して選択してインストールします。
するとすぐに API キーとして token 文字列が表示されます。
これをコピーしておきます。

■Advanced REST clientを有効化

HTTP 通信を試すための便利ツールとして Google Chrome拡張機能として ARC こと Advanced REST client をインストールして起動します。

■Web API を使って投稿
冒頭の画像のように POST メソッドを選んで、特定の Slack Web API を叩くと Slack 上で bot が特定のチャンネルに投稿を行いました!

参照した Web API のサンプルはこちら
chat.postMessage method | Slack

■どうやって認証をクリアしたの?
Slack は OAuth 2.0 で認証することを推奨しているため、OAuth 2.0 で定められた RFC に従ってヘッダに token を次の書式で埋め込みます。
それだけです。
具体的には HTTP ヘッダーにて

Authorization: Bearer xoxb-1234-56789abcdefghijklmnop

を指定するだけです。
また安全面から API を叩いていい IP アドレスを Slack 側で設定しておく必要があるでしょう。

■まとめ
Web API を利用する時にでたらめに難しいのが OAuth の理解です。
これを理解しないと、何もできないのですが

理解してしまえば、あとは OAuth の仕組みから得られる token を HTTP のヘッダにて指定するだけ
これで Web API への request は成功しますので、疎通確認が済んだその先は難しい部分は一つもありません。
API ドキュメントを読んで、正しい使い方で利用するだけです。

大事なことなので、もう一度
認証の仕組みを理解するのが難しいだけで、これさえクリアできれば、簡単に外部から Slack を操作することができるようになります。

■OAuthの理解で利用した情報ソース
OAuth - Wikipedia