【Python】slack APIで少し詰まったので備忘録

やりたいこと

  • Pythonプログラムから特定のslackチャンネルにテキストメッセージを送信する
  • Pythonプログラムによって生成した画像を特定のslackチャンネルに送信する

詰まった箇所

  • 画像のアップロード
    • よく出てくる日本語記事はPythonのrequestsモジュールを使っているができなかった。
    • tokenの取得方法が間違っている?と考えて調べ直したが正確な情報を発見できず。

解決策

  • 公式のSDKであるslack-sdkを使う

作業手順は以下の通り

Slack側

  1. slackの設定画面(settings & administration)から、ワークスペースの設定(Workspace settings)を開く
  2. 左側にある目次からAPI(外部リンク)を選択し、リンクを開く
  3. Create an Appをクリックし、アプリを作成(自分はFrom scratchを選択しました)
  4. SettingsのBasic informationの画面に表示される、Add features and functionalityからPermissionsを選択
  5. ScopesのBot Token Scopesにchat:writefiles:writeを追加
  6. Bot用のtokenが発行される
  7. メッセージを送信したチャンネルのIDを確認
    • slackのアプリでチャンネル名を右クリック→view channel detailsの下の方に表示される

Pythonコード

  1. 公式SDKのインストール: pip install slack-sdk
  2. 実現したい処理を実装 (以下に詳細を記述)

テキストメッセージを送信したい場合

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
    ) # 画像をアップロード

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA