Slack API でチャンネルのスレッドのやり取りを取得したい
基本的なセットアップはこちらに書いたので、やりたいことに合わせて設定をする
権限付与
appに権限を持たせる
必要な権限はAPIのドキュメントに記載されている
これみてslack app に権限を付与する

Tokenを使ってAPIでやり取りを取得する
エンドポイントは以下
https://slack.com/api/conversations.replies
認証として、HTTP Authorization header に Bearerプレフィックスをつけて Slack app の Token を設定する
最後にクエリパラメータに以下を設定する
- channerl
- ts
channerlとtsとは、スレッドのURLに含まれるcidとthread_tsのこと
https://xxxxxxxxx.slack.com/archives/Cxxxxxxxx/p123456789012345?thread_ts=123456790.123456790&cid=Cxxxxxxxx
それぞれ、
- channerl:
cidの値 - ts:
thread_tsの値
をセットする
これでAPIリクエスト送信すると、以下のような結果が返ってくる
{ "ok": true, "messages": [ { "type": "message", "user": "U061F7AUR", "text": "island", "thread_ts": "1482960137.003543", "reply_count": 3, "subscribed": true, "last_read": "1484678597.521003", "unread_count": 0, "ts": "1482960137.003543" }, { "type": "message", "user": "U061F7AUR", "text": "one island", "thread_ts": "1482960137.003543", "parent_user_id": "U061F7AUR", "ts": "1483037603.017503" }, { "type": "message", "user": "U061F7AUR", "text": "two island", "thread_ts": "1482960137.003543", "parent_user_id": "U061F7AUR", "ts": "1483051909.018632" }, { "type": "message", "user": "U061F7AUR", "text": "three for the land", "thread_ts": "1482960137.003543", "parent_user_id": "U061F7AUR", "ts": "1483125339.020269" } ], "has_more": true, "ok": true, "response_metadata": { "next_cursor": "bmV4dF90czoxNDg0Njc4MjkwNTE3MDkx" } }
発言したユーザーに関してはユーザーIDしかないので、ユーザー名を取得したい場合は、別のAPIを使ってマッピングする必要がある
使うAPIは以下