web-dev-qa-db-ja.com

Slack APIを使用してすべてのプライベートチャネルのリストを取得する

Slackチームのすべての「グループ」のリストを取得しようとしています。ただし、管理者権限がある場合でも、groups.listは、トークンの所有者のアカウントが属するグループのみを提供します。

私の研究で見た最も近い解決策は、ボットをチャンネルに座らせることです。ボットのメンバーシップにより、ボットはチャネルでレポートを作成できますが、プログラムでリストすることはできないという事実にもかかわらず、ボットをすべてのプライベートチャネルに取り込むというロジスティック上の問題があります。

私がプライベートチャンネルのリストを掘り下げるために使用したコード:

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)
11
shaun m

スラック プライバシーポリシー はこれをサポートしていません。

私たちが従う最も基本的なプライバシーの原則は、デフォルトでは、Slackに投稿するものはすべてチームに限定されるということです。つまり、特定のチーム内で共有されているメッセージとファイルを表示するには、そのチームのメンバーとしての認証が必要です。

同社の今後の有料Plusプランには、コンプライアンスエクスポートと呼ばれるオプション機能が含まれます。これにより、管理者は、パブリックメッセージとプライベートメッセージを含め、チームのコミュニケーションにアクセスできます。

これは、あなたが所属していないプライベートチャンネルにアクセスするのに最も近い方法ですが、書面での手紙が必要です... 詳細はこちら

6
glls

Slackワークスペースのすべてのプライベートチャネル(およびDM)をリアルタイムで監視する必要がある場合は、別のアプローチがあります。

  • Slackのすべてのユーザーがアプリにトークンを提供するようにします。これは、各ユーザーがアプリのOAuathインストールプロセスを1回実行することで実行できます。これにより、アプリごとに収集できるユーザーごとに新しいトークンが作成されます。
  • すべてのアクティブなユーザートークンを反復処理して、すべての会話(パブリックチャネル、プライベートチャネル、ダイレクトメッセージなど)のリストを conversations.list でコンパイルします。
  • conversations.history を使用してすべての既存の会話を反復処理し、その会話に有効なトークンを使用してすべてのメッセージを収集します。
4
Erik Kalkoken