【问题标题】:Get a list of all private channels with Slack API使用 Slack API 获取所有私人频道的列表
【发布时间】:2016-06-07 22:59:45
【问题描述】:

我一直在尝试获取我的 Slack 团队中所有“组”的列表。但是,即使有管理员权限,groups.list 也只提供令牌所有者帐户所属的组。

我在研究中看到的最接近的解决方案是让机器人进入频道。 bot 的成员资格允许它在频道上进行报告,但是尽管我们无法以编程方式列出它们,但让 bot 进入每个私人频道存在后勤问题。

我用来挖掘私人频道列表的代码:

import requests
import json

token = '...'

r = requests.post('https://slack.com/api/groups.list', data={'token': token, 'exclude_archived': 1})
if r.ok:
  privatechannels = { c['id']: c['name'] for c in json.loads(r.text)['groups'] }
  print(privatechannels)

【问题讨论】:

  • 欢迎来到 Stack Overflow。你的问题对于 Stack Overflow 来说还为时过早。我们希望您已经独立研究过这个,然后尝试编码,然后当代码中断时询问它。请阅读“How to Ask”。如果您搜索了又搜索了一些,但仍然没有找到任何东西,那么您需要向我们展示您搜索的位置,解释为什么没有帮助,然后我们才能介入。
  • 也许不清楚,但我试过了。对第三方服务的单个 API 调用只能完成这么多事情。我翻阅了文档,编写了一个程序来挖掘信息(见下文),并搜索了 SO 和整个互联网。
  • 编辑:无法在此处获取多行代码格式,将其放入问题中
  • 感谢您的尝试,但您需要向我们展示您查看的位置并解释为什么它没有帮助。否则,请向我们展示“minimal reproducible example”中定义的最小代码。重要的是要了解您正在帮助我们为世界创建参考书,以帮助他人回答编程问题;您提出的问题不仅是为了回答您的需求,也是为了将来遇到同样问题的其他人。因此,如果您搜索和搜索并没有找到解决方案,那么我们将帮助记录问题并进行修复。如果你没有这样做,那么......meta.stackoverflow.com/q/261592/128421
  • 这也将避免让人们重复你已经做过的事情,并有助于更好地了解你是如何尝试实现这一目标的。想象一下 50 个人看到你的帖子,然后到 api.slack.com/methods/channels.list 并用你已经尝试过的代码发布答案?

标签: python slack-api


【解决方案1】:

如果您确实需要实时监控 Slack 工作区中的所有私人频道(和 DM),还有另一种方法:

  • 确保 Slack 上的每个用户都向您的应用程序提供令牌。这可以由为您的应用程序运行一次 OAuath 安装过程的每个用户完成。这将为每个用户创建新的令牌,您的应用可以收集这些令牌。
  • 遍历所有活动用户令牌以编译所有 与conversations.list 的对话(公共频道、私人频道、直接消息……)
  • 遍历所有现有对话 - 使用对该对话有效的令牌 - 收集所有带有 conversations.history 的消息

【讨论】:

  • 感谢您的回答,但该应用程序为整个工作区安装一次,因此您拥有一个 OAuth 访问令牌(从管理应用程序页面检索)。那么如何为每个用户获取访问令牌?
  • 您必须要求每个用户重新安装应用程序。每次安装都会为该用户创建一个额外的令牌。
  • 我已经用不同的方式解决了这个问题,我想事情已经改变了一点,你的解决方案不起作用。我遵循以下解决方案 1. slack 工作区管理员安装应用程序并批准为所有用户安装它。 2. 每个用户都需要通过访问 OAuth 步骤来授权该应用程序(它已经为整个工作区安装)。 3.一旦用户授权了应用程序,他将被重定向到您的服务器并带有一些代码,您可以稍后交换用户令牌。
  • 我最后的评论可能措辞不佳,但这正是我的意思。
  • 谢谢兄弟,我真的很感激。你真是个懒散的大师(你的答案无处不在)
【解决方案2】:

slacks privacy policy 不支持这个。

我们遵循的最基本的隐私原则是,默认情况下, 您发布到 Slack 的任何内容对您的团队都是私有的。也就是说,查看 特定团队内共享的消息和文件需要 作为该团队成员的身份验证。

公司即将推出的付费 Plus 计划将包括一项可选功能 称为合规出口,它将让 管理员访问其团队的通信,包括公共 和私信。

这是访问您不属于其中的私人频道的最接近的方法,但需要一封书面信...here for more details

【讨论】:

  • 感谢您确认我的怀疑。我们实际上已经签署了合规出口并经历了所有这些。然而,Legal 希望 IT 能够滚动记录谁在什么时候在哪个渠道,这不是合规性出口所提供的。我试图用一些 API 脚本来修补这个漏洞。看起来如果要发生这种情况,我们将不得不在每个频道中放置一个机器人。
  • 所以...如果您不能首先列出所有频道,那么您是如何在每个频道中获得机器人的,以知道您需要说机器人的频道是什么?我也有这个问题:-(
  • 仅供参考,我什至无法列出我自己的私人频道……
猜你喜欢
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2021-09-14
  • 2019-07-11
  • 1970-01-01
  • 2019-11-30
相关资源
最近更新 更多