3分でPythonでslackに通知を送る方法を徹底解説

今回は、pythonでslackに通知をする方法を説明します。

環境

pythonのバージョン:3.9.2

概要

  1. 関係モジュールのインストール
  2. slackでIncoming Webhookの設定をする
  3. pythonからslackへ任意のメッセージを送付する

事前準備

まず初めに、slackwebというモジュールをインストールします

% pip3 install slackweb
Collecting slackweb
  Downloading slackweb-1.0.5.tar.gz (1.3 kB)
Building wheels for collected packages: slackweb
  Building wheel for slackweb (setup.py) ... done
  Created wheel for slackweb: filename=slackweb-1.0.5-py3-none-any.whl size=1850 sha256=5f475e54f7ce6bac620f2547c71ec9f326781c433823599d318494ce03c26c4c
  Stored in directory: /Users/rshimada3/Library/Caches/pip/wheels/5f/1d/03/dfed789e6ef0f9b60df9898fd27aa110d1e4c02e95dab5e712
Successfully built slackweb
Installing collected packages: slackweb
Successfully installed slackweb-1.0.5

上記のように表示されれば、インストール成功です。

slackでIncoming Webhookの設定

  1. Incoming Webhookの設定ページへアクセスします。
  2. 通知を飛ばす対象のチャンネルを選択し、「Incoming Webhookインテグレーションの追加」を押下します。
  3. 2の後に表示される画面で、Webhook URLをコピペします。

  4. 一番下までスクロールし、「設定を保存」を押下します。

 

サンプルコード

以下が最もシンプルな、slack通知のサンプルコードです。

import slackweb

slack = slackweb.Slack(url="コピーした、webhook URL")
slack.notify(text="slack通知テスト エラー発生!")

サンプルコードでの通知の確認

以下のようにslackにちゃんと通知が届いています。

もう少しリッチなテキストの送信

公式APIDocを読むともう少しリッチなテキストを送ることも可能になっています。

改行を入れたい場合も、「\n」で入れることができます。

サンプルコード

import slackweb
 
_slack_url = 'https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxxxx'
 
slack = slackweb.Slack(url=_slack_url)
attachments = [
        {
        "mrkdwn_in": ["text"],
            "color": "#36a64f",
            "pretext": "Optional pre-text that appears above the attachment block",
            "author_name": "author_name",
            "author_link": "http://flickr.com/bobby/",
            "author_icon": "https://placeimg.com/16/16/people",
            "title": "title",
            "title_link": "https://api.slack.com/",
            "text": "Optional `text` that appears within the attachment",
            "fields": [
                {
                    "title": "A field's title",
                    "value": "This field's value",
                    "short": "false"
                },
                {
                    "title": "A short field's title",
                    "value": "A short field's value",
                    "short": "true"
                },
                {
                    "title": "A second short field's title",
                    "value": "A second short field's value",
                    "short": "true"
                }
            ],
            "thumb_url": "http://placekitten.com/g/200/200",
            "footer": "footer",
            "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
            "ts": 123456789
        }
    ]
slack.notify(text="test message \n with attachment", attachments=attachments)

以下のようなリッチなメッセージが送られてきました。

参考

Slack API attachmentsチートシート

Python3でslackに投稿する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA