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?
このへんで調整。
これかな。追加して保存。
あわせて、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消していいのではという感じ。
と思ったら、この設定はベーシックなので消せないそうだ。そういう感じなのか。
文言を送る
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をとってそれをバイト列として取得して送り出す、みたいなのを、マルチパートポストで頑張る必要がある。
人生で一度だけ頑張ればなんとかなる。