(※注意)走り書きなのでけっこー雑です。ニーズがありそうだったらまた詳細追記します。
プライベートチャンネルのログを取得する
ソースコード
import requests
import json
## Private channel URL
# url_converlist = "https://slack.com/api/conversations.list?types=private_channel"
# url_converhist = "https://slack.com/api/conversations.history?types=private_channel"
# トークン
token = "YOUR_TOKEN"
headers = {"Authorization": "Bearer " + token}
response_json = requests.get(
url_converlist,
headers=headers).json()
解説
conversations.list、conversations.historyのURL末尾に、それぞれ ?types=private_channel
と付けることで非公開チャンネル(プライベートCH)の情報の取得が可能になります。
公式のエクスポートサービスだとパブリックチャンネルのみ出力など、制限が激しいのでこちらのやり方は是非オススメです。
Slack APIを使うだけで、簡単にチャンネル内のログを.json形式で書き出すことが出来ます。
パブリックチャンネルにアプリから投稿させる
ソースコード
import requests
import json
# Webhook
url = "https://slack.com/api/chat.postMessage"
TOKEN = 'YOUR_TOKEN
CHANNEL = 'YOUR_CHANNEL'
headers = {"Authorization": "Bearer " + TOKEN,
"Content-Type": "application/json",
}
# encode UTF8指定
json_open = open('YOURHOGEHOGE.json', 'r', encoding='UTF-8')
json_loads = json.load(json_open)
r = requests.post(url, headers=headers, data=json.dumps(HOGEHOGE))
解説
Create an Appより、まずはワークスペースに追加するアプリを作成しましょう。
(初めての方は、こちらの記事などが参考になります)
権限を正しく設定したら、
トークンをコピーしてソースコードのYOURTOKEN部分に貼り付けます。
その他、書き出す先のチャンネル名(エクスポート先)と、読み込んだ何かのチャンネルのjsonファイルのパス(インポート先)を YOURHOGEHOGE
や HOGEHOGE
と適宜変更ください。
後は上記コードを参考に必要な処理を足したものを.py扱いで実行し完成です。
まとめ
SlackAPIは初めて触りましたが、ひとまずメッセージ内容のパブリックチャンネルへの再投稿は自作出来ました。思ったよりも簡単でホッとしてます。
元々はSlack値上げによる閲覧制限対策として書いたのですが、ドキュメントを読んでいると結構やれることが幅広いなと感じたので今後もSlackAPIは積極的に活用していきたいですね。