実現したいこと
Pythonのrequestsライブラリを利用してSlackAPIを操作し、ファイル(csvなど)をSlackのワークスペースのチャンネルにアップロードしたいです。
前提
下記URLページ内の「requestsライブラリでSlackAPIを操作する方法」を実現させたいです
https://miyabikno-jobs.com/slackbot-upload-file/#Slackbot%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95
発生している問題・エラーメッセージ
下記の「発生している問題・エラーメッセージ」のメッセージが返ってきました。
ですが、Slack上には何も反映されていません。ほかに原因が思いつく方いらっしゃいますか?
{'ok': True, 'file': {'id': 'F05T11Q4LER', 'created': 1695197899, 'timestamp': 1695197899, 'name': 'test.csv', 'title': 'test', 'mimetype': 'text/plain', 'filetype': 'text', 'pretty_type': 'プレーンテキスト', 'user': 'U05T0TVCXJ9', 'user_team': 'T05TDE5G308', 'editable': True, 'size': 527, 'mode': 'snippet', 'is_external': False, 'external_type': '', 'is_public': False, 'public_url_shared': False, 'display_as_bot': False, 'username': '', 'url_private': 'https://files.slack.com/files-pri/T05TDE5G308-F05T11Q4LER/'test.csv, 'url_private_download': 'https://files.slack.com/files-pri/T05TDE5G308-F05T11Q4LER/download/test.csv', 'permalink': 'https://testtakeru.slack.com/files/U05T0TVCXJ9/F05T11Q4LER/test.csv', 'permalink_public': 'https://slack-files.com/T05TDE5G308-F05T11Q4LER-cf8679c50c', 'edit_link': 'https://testtakeru.slack.com/files/U05T0TVCXJ9/F05T11Q4LER/test.csv/edit', 'preview': 'import requests\r\n#@SLACKTOKEN\r\nTOKEN = @SLACKTOKEN\r\nCHANNEL = "test"\r\ncntAir = 1\r', 'preview_highlight': '<div class="CodeMirror cm-s-default CodeMirrorServer" oncopy="if(event.clipboardData){event.clipboardData.setData(\'text/plain\',window.getSelection().toString().replace(/\\u200b/g,\'\'));event.preventDefault();event.stopPropagation();}">\n<div class="CodeMirror-code">\n<div><pre>import requests</pre></div>\n<div><pre>#xoxb-5931481547008-5908393168099-7ZD7ZZFsrCqNXN3xkP9g2lxQ</pre></div>\n<div><pre>TOKEN = "@SLACKTOKEN"</pre></div>\n<div><pre>CHANNEL = "test"</pre></div>\n<div><pre>cntAir = 1</pre></div>\n<div><pre></pre></div>\n</div>\n</div>\n', 'lines': 21, 'lines_more': 16, 'preview_is_truncated': False, 'comments_count': 0, 'is_starred': False, 'shares': {}, 'channels': [], 'groups': [], 'ims': [], 'has_more_shares': False, 'has_rich_preview': False, 'file_access': 'visible'}}
該当のソースコード
import requests TOKEN = "@SLACK-BOT-TOKEN" CHANNEL = "test" url = "https://slack.com/api/files.upload" files = {'file': open( r'@DirPath\test.csv','br')} filename = 'test.csv' headers = {"Authorization": "Bearer " + TOKEN} data = { 'channel': CHANNEL, } r = requests.post(url=url, headers=headers, data=data, files=files) print(r.json())
試したこと
また、Slackのpermissionは添付画像のように設定しています。
ファイルのパスは間違っていないことは確認できました。
補足情報(FW/ツールのバージョンなど)
ちなみに以下に記載のメッセージを送るAPIはうまくいっています。
windows
anaconda
import requests TOKEN = "xoxb-5931481547008-5918947439621-8tPxmy674mPnkHQ4LPS12Beq" CHANNEL = "test" cntAir = 0 if cntAir >= 1: message = 'There are '+ str(cntAir) + ' airplane transports.' else: message = '0' url = "https://slack.com/api/chat.postMessage" headers = {"Authorization": "Bearer "+TOKEN} data = { 'channel': CHANNEL, 'text': message } r = requests.post(url, headers=headers, data=data) print(r.json())
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。