45395 - シコウサクゴ -

SlackAPIの設定方法からアプリの実行結果をBotで通知する

2025-04-16
プログラミング
Python
Slack
API
Webhook
Last updated:2025-04-16
4 Minutes
623 Words

以前、LINE Messaging APIを利用してLINEにアプリの実行結果を通知していましたが、 無料プランだと月5,000件と制限があるのでSlack APIに乗り換えることにしました。

前提条件

  • Mac M1(AppleSilicon)
  • Python3.12
  • Slackアカウントは開設済

全体の流れ

  1. アプリ作成
  2. 権限設定
  3. 疎通確認
  4. pythonに公式SDKインストール
  5. pythonでのサンプルコード

1.SlackAPIアプリ作成

Slackのアカウント開設済みの前提です。 Slack APIのドキュメントを参考に進めていきます。

下記からアプリを作成します。 アプリ作成から「Create New App」をクリックして新規アプリ作成。 「From scratch」を選択し、「App Name」に任意アプリ名、「Pick a workspace to develop your app in:」に通知を送るワークスペースを選択します。

default

2.権限設定

作成したアプリの「アプリ名」をクリックしてアプリの設定画面に遷移します。 default

左ナビの「OAuth & Permissions」に遷移して権限を設定します。 default

画面下部の「Scopes」から「Add an OAuth Scope」をクリックし、 「chat:write」「channels:read」を追加します。 default

左ナビから「Incoming Webhooks」ページに遷移し、「Activate Incoming Webhooks」を「ON」にします。 「Add New Webhook to Workspace」を選択して、該当するアプリを選択し、「Allow」を選択します。 default

3.疎通確認

左ナビから「Incoming Webhooks」ページに遷移し、ページ下部に「Webhook URLs for Your Workspace」欄が表示され、 下記のようなWebhookURLが生成され、テキストをJSON形式でWebhookURLにPOSTするサンプルコードが表示されます。 コピペして、ターミナルで実行するとSlackワークスペースに通知できれば設定完了です。

1
POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
2
Content-type: application/json
3
{
4
"text": "Gotta get the bread and milk!"
5
}

4.pythonに公式SDKインストール

PtyhonでSlackワークスペースに通知したい場合は、Slack公式SDKをインストールします。

1
pip3 install slack-sdk

参考: Python で Slack API や Webhook を扱うなら公式 SDK(slack-sdk/slack-bolt)を使おう

4.pythonに公式SDKインストール

SLACK_WEBHOOK_URLに先ほど疎通確認したWebhookURLを代入し、引数にMessageを渡すとSlackワークスペースに通知してくれます。 「@whois」にメンションを追記するとネイティブアプリで自分宛てに通知をすることも出来ます。

1
from slack_sdk.webhook import WebhookClient
2
from slack_sdk.errors import SlackApiError
3
4
def main(msg):
5
webhook = WebhookClient(SLACK_WEBHOOK_URL)
6
try:
7
response = webhook.send(text=f"@whois {msg}")
8
if response.status_code != 200:
9
raise Exception(f"Slack webhook returned status {response.status_code}: {response.body}")
10
except SlackApiError as err:
11
error_msg = f"Slack APIエラーが発生しました「{str(err)}」:{msg}"
12
print(error_msg)
13
except Exception as err:
14
error_msg = f"Slack送信エラーが発生しました「{str(err)}」:{msg}"
15
print(error_msg)
4 collapsed lines
16
17
if __name__ == "__main__":
18
msg = sys.argv[1] if len(sys.argv) > 1 and sys.argv[1] else "Hello World!"
19
main(msg)
Article title:SlackAPIの設定方法からアプリの実行結果をBotで通知する
Article author:45395
Release time:2025-04-16