やりたいこと
- Pythonプログラムから特定のslackチャンネルにテキストメッセージを送信する
- Pythonプログラムによって生成した画像を特定のslackチャンネルに送信する
詰まった箇所
- 画像のアップロード
- よく出てくる日本語記事はPythonのrequestsモジュールを使っているができなかった。
- tokenの取得方法が間違っている?と考えて調べ直したが正確な情報を発見できず。
解決策
- 公式のSDKである
slack-sdk
を使う
作業手順は以下の通り
Slack側
- slackの設定画面(settings & administration)から、ワークスペースの設定(Workspace settings)を開く
- 左側にある目次からAPI(外部リンク)を選択し、リンクを開く
- Create an Appをクリックし、アプリを作成(自分はFrom scratchを選択しました)
- SettingsのBasic informationの画面に表示される、Add features and functionalityからPermissionsを選択
- ScopesのBot Token Scopesに
chat:write
とfiles:write
を追加 - Bot用のtokenが発行される
- メッセージを送信したチャンネルのIDを確認
- slackのアプリでチャンネル名を右クリック→view channel detailsの下の方に表示される
Pythonコード
- 公式SDKのインストール:
pip install slack-sdk
- 実現したい処理を実装 (以下に詳細を記述)
テキストメッセージを送信したい場合
def send_message(message, token, channel_id):
client = WebClient(token=token) # 初期化
response = client.chat_postMessage(
channel=CHANNEL,
text=message,
) # textメッセージ送信
画像をアップロードしたい場合
def send_message(path_to_the_img, title_of_the_img, token, channel_id):
client = WebClient(token=token) # 初期化
response = client.files_upload(
channels=CHANNEL,
file=path_to_the_img,
title=title_of_the_img # optional
) # 画像をアップロード
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント