ぷろぐら×でざいん

Slackへの通知機能をPythonで作ろう!

Slackへの通知機能をPythonで作ろう!

Slackへの通知機能をPythonで作ろう!

通知機能とは

システム上での動作をトリガーにして、システムからチームで利用しているSlackへメッセージ通知を行えるようにする。


準備するもの

  1. Bots
  2. ユーザーToken
  3. チャンネルID (Channel ID)
  4. コードを書こう

1. Botsを作ろう

Slackの Custom Integrationから Botsを検索し、一番上の結果をクリックする


Add Configurationをクリックする


Add bot configurationをクリックする


モザイクのところにTokenが表示されているので、コピーしておく


これでBotsを作成することができました。

<注意事項>: 作成したBotsをメッセージをPostしたいチャンネルに招待しておきましょう!

2. ユーザーTokenを取得しよう

取得する理由としてはBotsがメッセージのPostリクエストを行う際にチャネルIDが必要なのですが、そのチャンネルIDをSlack上で取得することができません。SlackのAPIを叩いて取得するチャネルIDを取得する際にユーザーTokenが必要になってきます。

下記のURLから該当のページにいくことができます。ここをクリックからユーザーTokenを作成できます。
https://api.slack.com/methods/channels.list/test


3.チャンネルIDを取得する

上記のURLからTest MethodをクリックするとチャンネルIDを一覧を取得することができます。ユーザーTokenの取得が終わっていないと一覧の取得を行うことができないので注意してください。


チャネルID一覧

チャンネルIDだよのところにIDがあるのでコピーします。

{
    "ok": true,
    "channels": [
        {
            "id": "チャンネルIDだよ",
            "name": "general",
            "is_channel": true,
            "created": 123456789,
            "creator": "example",
            "is_archived": false,
            "is_general": true,
            "name_normalized": "general",
            "is_shared": false,
            "is_org_shared": false,
            "is_member": true,
            "members": [
                "example"
            ],
            "topic": {
                "value": "Company-wide announcements and work-based matters",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 1
        }
    ]
}

4. コードを書こう

import requests

TOKEN = 'Your Token'
CHANNEL_ID = 'Your Channel ID'
POST_MESSAGE_URL = 'https://slack.com/api/chat.postMessage'

post_data = {'token': TOKEN, 'as_user': 'true', 'channel': CHANNEL_ID}
post_data['text'] = 'Hello Word'
try:
	requests.post(POST_MESSAGE_URL, data=post_data)
except Exception as e:
	print e.message
最後に

コードを書くまでの作業をしっかりと行っていれば、上記のコードだけでSlackにメッセージを通知することができるプログラミングの完成です。使い所のいろいろとあると思いますが、自動化を行っている処理の終了を通知したり、統計データの集計結果を通知するなど色々と使い道はあると思いますので、是非遊んでみてくださいー。


コメントを残す

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