【发布时间】:2015-05-03 08:05:34
【问题描述】:
我想检索在我的团队 slack 域中发送的所有消息。虽然,我更喜欢以 XML 或 JSON 格式接收数据,但我能够以几乎任何形式处理数据。
如何检索所有这些消息?可能吗?如果没有,我可以检索特定频道的所有消息吗?
【问题讨论】:
标签: slack-api
我想检索在我的团队 slack 域中发送的所有消息。虽然,我更喜欢以 XML 或 JSON 格式接收数据,但我能够以几乎任何形式处理数据。
如何检索所有这些消息?可能吗?如果没有,我可以检索特定频道的所有消息吗?
【问题讨论】:
标签: slack-api
如果您需要通过 API 动态执行此操作,您可以使用 channels.list method 列出您团队中的所有频道,并使用 channels.history method 检索每个频道的历史记录。请注意,这不包括 DM 或私人群组。
如果您需要一次性执行此操作,请转到 https://my.slack.com/services/export 将您团队的消息存档导出为一系列 JSON 文件
【讨论】:
这个 Python 脚本通过简单的运行将所有内容导出为 JSON: https://gist.github.com/Chandler/fb7a070f52883849de35
它会为您创建目录,并且您可以选择排除直接消息或频道。
您只需要安装 slacker 模块,它就是 pip install slacker。然后使用--token='secret-token' 运行它。您需要一个旧版令牌,目前可用 here。
【讨论】:
429 Client Error: Too Many Requests for url: <omitted>
对于寻找直接消息历史下载的任何人,this 基于节点的 cli 工具允许您以 JSON 和 CSV 格式从 DM 和 IM 下载消息。我用过,效果很好。
【讨论】:
slack-history-export,可以用npm install -g slack-history-export安装。使用slack-history-export -h 查看选项。
有了新的Conversations API,这项任务现在变得容易了一些。这是一个完整的概述:
从频道获取消息
新的 API 方法 conversations.history 将允许您从各种类型的对话/频道(公共、私人、DM、DM 组)下载消息,只要您的令牌可以访问它。
此方法还支持分页,可让您下载大量消息。
将 ID 解析为名称
请注意,此方法将返回仅带有 ID 的原始 JSON 格式的消息,因此您需要调用其他 API 方法将这些 ID 解析为纯文本:
users.list
conversations.list
bots.info(没有官方的bots.list 方法,但有一个unofficial one,在某些情况下可能会有所帮助)获取线程
此外,使用conversations.replies 下载对话中的线程。线程的功能有点像对话中的对话,需要单独下载。
查看官方文档的this page 了解更多关于线程的详细信息。
【讨论】:
如果有人在 2021 年仍在寻找解决方案,当然他们的工作区管理员没有帮助导出消息,那么显然他们可以执行以下操作。
第 1 步:从您的 UI cookie 中获取 api 令牌
d 的 cookie 的值
python3 SlackPirate.py --cookie '<value of d cookie>'
第 2 步:转储频道消息
slackchannel2pdf --token 'xoxb-1466...' --write-raw-data T0EKHQHK2/G015H62SR3M第 3 步:转储直接消息
slack-history-export -t 'xoxs-1466...' -u '<correct username>' -f 'my_colleagues_chats.json'【讨论】:
【讨论】: