背景
- SlackにAPI経由でファイルをアップロードし、ユーザーにダウンロードさせたいケースです
- 既存のincoming webhook 経由ではファイルのアップロードできないようです
Please note: it's not possible to send files via webhook. The files.upload API method is the method of choice for this task.
- Slackアプリを使ったfile uploadをpythonで実装していきます
まずはSlack Appを作成
- こちらの手順通りに作成していきます
- ファイルのuploadをする場合は
files:write
の権限を付与することを忘れないようにしてください - 作成の設定が面倒な場合は、以下のリンクページに用意されている
create app
ボタンから作成すると、デフォルトで色々な権限がついた状態でアプリを作成できるので楽です(※強めの権限なので注意してください)
File Uploadの実装
実装
import requests
# Slack APIトークン
token = 'xoxb-xxxxxxxxxx'
# アップロードするファイルのパス
file_path = './hoge.csv'
# アップロード先のチャンネルID
channel_id = 'XXXXX'
# ファイルを開いてアップロード
with open(file_path, 'rb') as file:
response = requests.post(
url='https://slack.com/api/files.upload',
headers={'Authorization': f'Bearer {token}' },
data={'channels': channel_id},
files={'file': file}
)
# レスポンスの確認
print(response.text)
API Reference
参考