5分でわかるSlack連携


概要

MiyamasuからSlackに対してアレコレする機運なので最小構成でslackの設定をする。


実装していく

投稿はhttpsとかでできるので、Miyamasuからデータを送り出せるようにする。


・webhookを有効にする

・tokenを取得する

という手順をこなす。

tokenはここから取れる。

https://api.slack.com/apps/ZZZZZZZ/install-on-team?(ZZZZZZZにはworkspace idとかが入る)

で、scr.pngっていうファイルを用意して、slackの特定のチャンネルへと送付しようとする。


curl -F file=@scr.png -F channels=#miyamasu -F token=xoxp-XXXX https://slack.com/api/files.upload


こんな感じのやつを実行すると、次のエラーが出る。

{"ok":false,"error":"missing_scope","needed":"files:write:user","provided":"identify,incoming-webhook"}


ふむふむ、scopeが見つからんと。

https://api.slack.com/apps/ZZZZZZZ/oauth?


このへんで調整。

スクリーンショット 2017-12-01 13.38.18.png


これかな。追加して保存。


あわせて、miyamasuというチャンネルを作っておいた。




この状態で同じコマンドを実行すると、動いた。いい感じ。



で、メッセージを送る方も、tokenを使ったものがあるのでは的な感じ。


curl -X POST -H 'Authorization: Bearer xoxp-XXXX' -H 'Content-type: application/json' --data '{"channel":"miyamasu","text":"I hope"}' https://slack.com/api/chat.postMessage


テキストを送ろうとすると、また別のエラーが出る。こんな感じ。

{"ok":false,"error":"missing_scope","needed":"chat:write:user","provided":"identify,incoming-webhook,files:write:user","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}


chat:write:user というパーミッションを足して再度実行すると動く。いい感じ。

これでwebhook消していいのではという感じ。


スクリーンショット 2017-12-01 13.54.13.png


と思ったら、この設定はベーシックなので消せないそうだ。そういう感じなのか。



文言を送る

curlだとこんな感じ。

curl -X POST -H 'Authorization: Bearer xoxp-XXXX' -H 'Content-type: application/json' --data '{"channel":"miyamasu","text":"I hope"}' https://slack.com/api/chat.postMessage



画像を送る

curlだとこんな感じ。

curl -F file=@scr.png -F channels=#miyamasu -F token=xoxp-XXXX https://slack.com/api/files.upload


画像を送る場合、Screenshotをとってそれをバイト列として取得して送り出す、みたいなのを、マルチパートポストで頑張る必要がある。

人生で一度だけ頑張ればなんとかなる。