この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、森田です。
Slack APIを用いて、チャンネルの履歴を取得しようと試みたところ、以前と方法が変更になっておりました。
2021 2月以降 channels.historyの廃止
私が作成したコードでは、当初このchannels.historyを使用していました。
import requests
url = "https://slack.com/api/channels.history"
token = "XXX"
header={
"Authorization": "Bearer {}".format(token)
}
payload = {
"channel" : "C022M6U7G4F"
}
res = requests.get(url, headers=header, params=payload)
print(res.json())
しかし、実行結果は、
[ERROR] This method is retired and can no longer be used.
Please use conversations.history instead.
Learn more: https://api.slack.com/changelog/2020-01-deprecating-antecedents-to-the-conversations-api.
見てみると、conversations.history
に変わったよ、となっていますので、下記のように変更したところ上手く動作しました。
import requests
url = "https://slack.com/api/conversations.history"
token = "XXX"
header={
"Authorization": "Bearer {}".format(token)
}
payload = {
"channel" : "C022M6U7G4F"
}
res = requests.get(url, headers=header, params=payload)
print(res.json())
API変更の詳細
スレッドメッセージ取得
channels.historyでは、スレッドのメッセージも一緒に返していましたが、conversations.historyではスレッドのメッセージは取得しません。
代わりに、conversations.replies
としてAPIが提供されていますので、こちらを用いれば可能です。
import requests
url = "https://slack.com/api/conversations.replies"
token = "XXX"
header={
"Authorization": "Bearer {}".format(token)
}
payload = {
"channel" : "C022M6U7G4F",
"ts" : "1622007981.001400"
}
res = requests.get(url, headers=header, params=payload)
print(res.json())
実行結果
{
"ok": true,
"messages": [
{
"client_msg_id": "93e971cf-d7a3-498c-8280-2ac09f3a10a8",
"type": "message",
"text": "テスト!",
"user": "U021JKQFJUC",
"ts": "1622007981.001400",
"team": "T021R3N359P",
"blocks": [
{
"type": "rich_text",
"block_id": "en=++",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "テスト!"
}
]
}
]
}
],
"thread_ts": "1622007981.001400",
"reply_count": 1,
"reply_users_count": 1,
"latest_reply": "1622007986.001500",
"reply_users": [
"U021JKQFJUC"
],
"is_locked": false,
"subscribed": false
},
{
"client_msg_id": "4d50d26c-554f-4788-afda-f93941b646f4",
"type": "message",
"text": "いいね",
"user": "U021JKQFJUC",
"ts": "1622007986.001500",
"team": "T021R3N359P",
"blocks": [
{
"type": "rich_text",
"block_id": "SZJ",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "いいね"
}
]
}
]
}
],
"thread_ts": "1622007981.001400",
"parent_user_id": "U021JKQFJUC"
}
],
"has_more": false
}
conversations.historyとconversations.repliesを組み合わせることで、以前のようなデータを作ることはできそうです!
最後に
Pythonでは、SDKもあるようです。