slackcat を使って time チャンネルにコメント投稿を行っていたが、あまりメンテナンスされていないようなので、slack apps を作成して、投稿できるようにしてみた
案外簡単だった
slack apps 設定
app 作成
https://api.slack.com/apps
より Create New App から適当に app を作成
user oauth token 発行
OAuth & Permissions ページにて
User Token Scopes からスコープの設定。設定値は下の方にはっている manifest.json を参考のこと
設定後に Reinstall to Workspace を実行。今回はアプリとして実行しないのでチャンネルは適当でいいと思う
User OAuth Token にあるトークンを控えておく
apps 画面から export し た manifest.json。基本的にスコープの設定のみおこなっている。as_user として投稿するには
chat:write
{
"display_information": {
"name": "post_times"
},
"features": {
"bot_user": {
"display_name": "post_times",
"always_online": false
}
},
"oauth_config": {
"scopes": {
"user": [
"channels:read",
"channels:write",
"chat:write"
]
}
},
"settings": {
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}
シェルスクリプト作成
以下のようなスクリプトを作成した
取得した slack app のトークンと、slack 画面から取得した該当チャンネル ID(チャンネル名の詳細からコピーできる) を使っている
#!/bin/bash
# 引数
TEXT="$1"
TOKEN="xoxp-xxxx" # user oauth token
CHANNEL="Cxxxx" # times-channel id
# call Slack API
# -s -o で標準出力に表示しないようにしている
curl -s -o /dev/null \
-X POST "https://slack.com/api/chat.postMessage" \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{
\"channel\": \"$CHANNEL\",
\"text\": \"$TEXT\",
\"as_user\": true
}"
コマンドライン設定
alias を使う。
~/.zshrc
alias times='~/commands/post-times.sh'
以下のようにして投稿できるようになる
times "(`・ω・´)ゞ"
参考
- api
https://api.slack.com/methods/chat.postMessage
- curl コマンド参考
https://api.slack.com/web