Python Slack連携

PythonからSlack連携をする方法を説明します。


Slack WebHookのURLを取得

Pythonのプログラムから特定のチャンネルにメッセージを投稿を行う方法を説明します。WebHookが用意されているのでそれを使います。まず、SlackのWeHooksのページにアクセスします。
👉 Incoming WebHooks

投稿先のチャンネルを選びます。今回はpython-studyというチャンネルを選びました。


Add Incoming WebHooks integration ボタンを押すと、WebHook用のURLが表示されます。これをひかえておきます。


下の方に、メッセージを投稿する時の名前とアイコンを設定できます。ここでは「Pythonサプリwebhook」という名前で、アイコンも設定しました。Save Setting ボタンを押します。


Python からメッセージを投稿する

上記のSlack WebHook用の画面に記載されているように、JSON形式で投稿したいメッセージを設定し、WebHook URLにPOSTしたらSlackの指定したチャンネルにメッセージを投稿することができます。

リクエストにはPythonのサードパーティのrequests (Requests: HTTP for Human) を使います。インストールしていない場合は、pipでインストールしてください。また、Pythonはversion3.9.0を使用しています。

// requestsのインストール 
pip install requests

以下の様に、JSON形式で投稿したいメッセージを設定し、requests.postメソッドでPOSTします。

import requests
import json

WEBHOOK_URL = 'https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'


def main():
    response = requests.post(WEBHOOK_URL, data=json.dumps({
        "text": "これはPythonサプリのSlack連携テストデータです。"
    }))
    print(response.status_code)
    if response.status_code != 200:
        raise Exception(response.status_code, response.text)


if __name__ == "__main__":
    main()


Slackを見ると投稿されていることが確認できます。


投稿するメッセージ内に外部リンクやをつけることもできます。

  • 外部リンクの記載の仕方: <URL | テキスト>
requests.post(WEBHOOK_URL, data=json.dumps({
        "text": "Pythonサプリのホームページは<https://python.pythonpython.tokyo/ | こちら> です"
    }))


関連記事

このエントリーをはてなブックマークに追加