slackにメッセージを送信するのはこちらの記事が参考になる。Slackにpythonからメッセージを送信する – Qiita
前提
今回はAPIのトークンが取得できていることを前提とする。前提ができていない人はこちらの記事が参考になる。Slackにpythonからメッセージを送信する – Qiita
- slackのワークスペースの作成
- slack-appの作成・tokenの取得
- slack appをチャネルに追加
pythonでapiを叩く
ファイルをアップロードするときはfile.upload apiを使用する。apiの詳細については公式サイトの説明がわかりやすい。files.upload method | Slack
pythonでのサンプルコードがなかったので、エラーでつまずかないための注意点も記録する。
pythonコード
実際のコードは以下になる。token、ファイルパス、チャネル名を正しく設定する必要がある。
import requests
class SlackDriver:
def __init__(self, _token):
self._token = _token # api_token
def send_image(self, file_path, message, channel):
files = {'file': open(file_path, 'rb')}
params = {"token": self._token, 'channels': channel, 'initial_comment': message}
r = requests.post('https://slack.com/api/files.upload',
params=params,
files=files)
print("return ", r.json())
if __name__ == '__main__':
token = '' # TODO your token.
slack = SlackDriver(token)
slack.send_image("image.png", "This is the comment of the image", "#random")
注意するエラー
okが返ってきているがslackに送信されていない
チャネル名があっているか確かめる。パラメータとしてchannelsを設定することにも注意する「s」が必要である。
invalid_form_data エラー
headersを指定するとinvalid_form_data エラーとなる。content typesの指定(multipart/form-dataなど)は不要!
Comments
パラメータとしてchannelsを設定することにも注意する「s」が必要である。
↑これにまさにひっかかっていました、情報ありがとうございます。
yokoさま
コメントありがとうございます。