web-dev-qa-db-ja.com

Slack:すべてのメッセージを取得する

チームのスラックドメインで送信されたすべてのメッセージを取得したい。ただし、データをXMLまたはJSONで受信することを希望しますが、ほぼすべての形式でデータを処理できます。

これらのメッセージをすべて取得するにはどうすればよいですか?出来ますか?そうでない場合、特定のチャネルのすべてのメッセージを取得できますか?

27
marcusshep

APIを使用してこれを動的に行う必要がある場合は、 channels.listメソッド を使用してチーム内のすべてのチャネルをリストし、 channels.historyメソッド を使用して、各チャンネル。これには、DMまたはプライベートグループは含まれないことに注意してください。

これを一度だけ行う必要がある場合は、 https://my.slack.com/services/export にアクセスして、チームのメッセージアーカイブを一連のJSONファイルとしてエクスポートします

message archive export screen

20
seanrose

このPythonスクリプトは単純な実行ですべてをJSONにエクスポートします: https://Gist.github.com/Chandler/fb7a070f52883849de35

ディレクトリが作成され、ダイレクトメッセージまたはチャネルを除外するオプションがあります。

インストールする必要があるのは、単にpip install slackerであるslackerモジュールだけです。次に、--token='secret-token'で実行します。現時点で利用可能なレガシートークンが必要です here .

11
vk1011

ダイレクトメッセージ履歴のダウンロードを探している方は、 this ノードベースのcliツールを使用すると、DMとIMからJSONとCSVの両方でメッセージをダウンロードできます。私はそれを使用しましたが、非常にうまく機能します。

10
wjagodfrey

新しい Conversations API を使用すると、このタスクが少し簡単になりました。完全な概要は次のとおりです。

チャンネルからのメッセージの取得

新しいAPIメソッド conversations.history は、トークンがアクセスできる限り、あらゆるタイプの会話/チャンネル(パブリック、プライベート、DM、グループDM)からメッセージをダウンロードできるようにします。

このメソッドはページングもサポートしているため、大量のメッセージをダウンロードできます。

IDを名前に解決する

このメソッドはIDのみの生のJSON形式でメッセージを返すため、追加のAPIメソッドを呼び出してこれらのIDをプレーンテキストに解決する必要があることに注意してください。

スレッドの取得

さらに、 conversations.replies を使用して、スレッドをスレッドにダウンロードします。スレッドは会話内の会話のように機能するため、個別にダウンロードする必要があります。

スレッド処理の詳細については、公式ドキュメントの このページ をご覧ください。

1
Erik Kalkoken