【问题标题】:Slack: Retrieve all messagesSlack:检索所有消息
【发布时间】:2015-05-03 08:05:34
【问题描述】:

我想检索在我的团队 slack 域中发送的所有消息。虽然,我更喜欢以 XML 或 JSON 格式接收数据,但我能够以几乎任何形式处理数据。

如何检索所有这些消息?可能吗?如果没有,我可以检索特定频道的所有消息吗?

【问题讨论】:

    标签: slack-api


    【解决方案1】:

    如果您需要通过 API 动态执行此操作,您可以使用 channels.list method 列出您团队中的所有频道,并使用 channels.history method 检索每个频道的历史记录。请注意,这不包括 DM 或私人群组。

    如果您需要一次性执行此操作,请转到 https://my.slack.com/services/export 将您团队的消息存档导出为一系列 JSON 文件

    【讨论】:

    • 好像只有管理员可以通过link导出,我作为会员也可以导出频道吗?
    • @seanrose,有没有办法点击该页面?
    【解决方案2】:

    这个 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>
    • 如果您还没有旧令牌,则不再可用。
    【解决方案3】:

    对于寻找直接消息历史下载的任何人,this 基于节点的 cli 工具允许您以 JSON 和 CSV 格式从 DM 和 IM 下载消息。我用过,效果很好。

    【讨论】:

    • 链接往往会发生变化或丢失,您能否解释一些内容或在此处引用它?
    • @abarisone 这个工具叫slack-history-export,可以用npm install -g slack-history-export安装。使用slack-history-export -h 查看选项。
    • 这需要一个 Legacy Token,如果您还没有,则不再可用。
    【解决方案4】:

    有了新的Conversations API,这项任务现在变得容易了一些。这是一个完整的概述:

    从频道获取消息

    新的 API 方法 conversations.history 将允许您从各种类型的对话/频道(公共、私人、DM、DM 组)下载消息,只要您的令牌可以访问它。

    此方法还支持分页,可让您下载大量消息。

    将 ID 解析为名称

    请注意,此方法将返回仅带有 ID 的原始 JSON 格式的消息,因此您需要调用其他 API 方法将这些 ID 解析为纯文本:

    获取线程

    此外,使用conversations.replies 下载对话中的线程。线程的功能有点像对话中的对话,需要单独下载。

    查看官方文档的this page 了解更多关于线程的详细信息。

    【讨论】:

    • 有兴趣了解 - 我将如何通过我的令牌授予对所有私人/群组 DM 频道的访问权限?
    • 你不能。 Slack 的安全架构不允许这样做。
    • 这很痛苦。我已经 +1 了,但很高兴将其添加到您的答案中。
    • 据我了解,这个问题仅与公共频道有关。正如您从接受的答案中看到的那样,它不包括私人频道。查看有关如何访问所有私人频道的答案:stackoverflow.com/a/53142640/4379151
    【解决方案5】:

    如果有人在 2021 年仍在寻找解决方案,当然他们的工作区管理员没有帮助导出消息,那么显然他们可以执行以下操作。

    第 1 步:从您的 UI cookie 中获取 api 令牌

    • 克隆和安装需求并运行SlackPirate
    • 在浏览器上打开 slack 并复制名为 d 的 cookie 的值
    • 运行python3 SlackPirate.py --cookie '<value of d cookie>'

    第 2 步:转储频道消息

    • 安装slackchannel2pdf(需要python)
    • slackchannel2pdf --token 'xoxb-1466...' --write-raw-data T0EKHQHK2/G015H62SR3M

    第 3 步:转储直接消息

    • 安装slack-history-export(需要节点)
    • slack-history-export -t 'xoxs-1466...' -u '<correct username>' -f 'my_colleagues_chats.json'

    【讨论】:

      【解决方案6】:

      这是从频道中导出所有消息的另一个工具。

      该工具名为slackchannel2pdf,会将所有消息从公共或私人渠道导出到 PDF 文档。

      您只需要一个具有所需范围和访问权限的令牌。

      【讨论】:

        猜你喜欢
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 2017-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多