ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

slack api curlまとめ

 

まとめ

github.com

チャンネルのメッセージを取得

https://api.slack.com/methods/conversations.history

curl -X GET -H "Authorization: Bearer ${TOKEN}" \
https://slack.com/api/conversations.history?channel=${CHANNEL}

チャンネルIDの取得

ただしスレッド内のメッセージは取得できない。スレッド内のメッセージを取得したい場合は次のconversations.repliesを利用する。

スレッド内のメッセージを取得

https://api.slack.com/methods/conversations.replies

curl -X GET -H "Authorization: Bearer ${TOKEN}" \
"https://slack.com/api/conversations.replies?ts=${ts}&channel=${CHANNEL}"

tsは該当スレッドの「リンクをコピー」し、末尾から6桁目にコンマを打った数字。

例: https://yourcompany.slack.com/archives/C02QYEXA8SW/p1655885927900929
の場合、1655885927.900929tsとなる。

メッセージ送信

https://api.slack.com/methods/chat.postMessage

curl -X POST  -H "Authorization: Bearer ${TOKEN}" \
-F channel=${CHANNEL} -F text="Hello World" \
https://slack.com/api/chat.postMessage

メッセージ送信(スレッドにつなげる場合)

curl -X POST  -H "Authorization: Bearer ${TOKEN}" \
-F channel=${CHANNEL} -F text="Hello World" -F thread_ts="$ts" \
https://slack.com/api/chat.postMessage

メッセージ送信(メンションやコードブロックなど凝った文章の場合)

blocks=$(cat <<EOS
Hello :smile:
\`\`\`
this is code blocks
\`\`\`
EOS
)

curl -X POST  -H "Authorization: Bearer ${TOKEN}" \
-F channel=${CHANNEL} -F thread_ts="$ts" -F blocks="[{\"type\": \"section\", \"text\": {\"type\": \"mrkdwn\", \"text\": \"$blocks\"}}]" \
https://slack.com/api/chat.postMessage

api.slack.com

メッセージ削除

https://api.slack.com/methods/chat.delete

curl -X POST -H "Authorization: Bearer ${TOKEN}" \
-F channel=${CHANNEL} -F ts=${ts} \
https://slack.com/api/chat.delete

ファイル送信

https://api.slack.com/methods/files.upload

curl -X POST -H "Authorization: Bearer ${TOKEN}" \
-F channels=${CHANNEL} -F file=@hoge.png -F thread_ts="${ts}" \
https://slack.com/api/files.upload