Warning: count(): Parameter must be an array or an object that implements Countable in /home/c9962019/public_html/mochinoki-labo.com/wp-content/plugins/rich-table-of-content/functions.php on line 490
こんにちは、MSKです。
今回はPythonからSlackにメッセージを投げてみます。
準備
まずSlackに登録し、ワークスペースを作成します。
作成が終わったら、ブラウザでSlack APIのページを開きます。
Create an appと書いてあるボタンを押します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_top.png)
Your Appsという画面が出てきますので、Create an Appボタンをクリックします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_create_an_app.png)
Create an appという画面が出てくるので、From scratchを選択します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_create_an_app2.png)
App Nameと通知を送るslackを指定し、Create Appボタンをクリックします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_create_an_app3.png)
登録したアプリの画面が開くので、左のFeaturesからOAuth&Permissionsを選択します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_app_top.png)
下の方に進み、Scopesに必要な権限を与えます。(ここで僕は設定をミスしたので、この後に少し戸惑いました・・・)
今はメッセージの送信をしたいので、chat:writeとchat:write_customizeの権限を与えています。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_app_scope_improve.png)
その後に画面左側のSetingsのInstall Appをクリックします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_app_top_install.png)
Install to Workspaceをクリックして連携します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_permission-1.png)
許可するをクリックすると、トークンが生成されます。
通知を送るなどslackに対してアクションをするときにはこのトークンを使います。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_api_token.png)
※もし、Permissionの追加などを行った場合は、Reinstall to WorkSpaceを行う必要があります。
自分のslackのワークスペースにもどり、適当にテスト用のチャンネルを作成します。
そのチャンネルの上で右クリックし、チャンネルの詳細を開くをクリックします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_add_app.png)
インテグレーションタブに移動して、アプリを追加するを押します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_add_app2.png)
先ほど作成したAppがありますので、追加を押します。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_add_app3.png)
ここからテストができますので、いったんテストを行ってみます。
トークンとチャンネル名が必須なので、入力してtextに適当に文字列を入れます。
Test methodをクリックすると、通知が飛ぶと思います。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_app_test.png)
これでslack側の準備は終了です。
次からPythonのソースを組んでいきます。
Pythonのコードを書く
pythonのインストールなどがまだでしたら、次の記事などを参考にしてください。
(インストールするバージョンは変わっていますが、進め方は同じです。)
![](https://www.mochinoki-labo.com/wp-content/uploads/2020/11/06fc0235d5f7ef7ef2550f0fddc34e2a-320x180.png)
使いやすいエディタやIDEはVisual Studio CodeまたはPyCharmです。(Windows版のPyCharmもありますよ)
このどちらかを使えば良いと思っています。
※僕はpythonに限って言えば、PyCharm推しです。
本業のC/C++、趣味で使っているRustやJavaScriptは断然Visual Studio Code推しですが、Pythonだけは違います・・・
以降PyCharmの画面での操作になります。
メニューのFileからSettings…を開きます。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/py_setting1.png)
少し画面が違うかもしれませんが、Project: (project名)をクリックして、Python Interpreterをクリックします。
クリックすると、インストールされているパッケージが表示されます。
上側の+ボタンをクリックします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/py_setting2.png)
slackと検索するとslack-clientというものがあるのでインストールします。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/py_setting3.png)
最初に簡単なメッセージを投げてみます。
先ほどインストールしたslack-clientのWebClientを使います。
準備で作成されたトークンをセットしてWebClientのインスタンスを作成します。
そのインスタンスのchat_postMessageでメッセージを投げます。
channelにチャンネル名を、textに送信するメッセージを入れればOKです。
from slack import WebClient SLACK_API_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' client = WebClient(token=SLACK_API_TOKEN) response = client.chat_postMessage(channel='#test', text="python test") print(response)
testというChannelにpython testというメッセージが投げられたと思います。
レスポンスを見てみると、
{'ok': True, 'channel': 'xxxxxxxx', 'ts': 'aaaaaa.bbbbb', 'message': {...(長いので省略)...} }
という形で来ています。
tsというのがスレッドのidになるので、このIDを指定してあげるとスレッドにメッセージを投げることができます。
次のサンプルは1秒ごとに20回スレッドにメッセージを投げます。
先ほどとの違いはレスポンスのtsという要素を取得して、次からのcchat_postMessageのthread_tsにセットしています。
これで最初のメッセージにスレッドの形でメッセージを送信できます。
from slack import WebClient import time SLACK_API_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' client = WebClient(token=SLACK_API_TOKEN) response = client.chat_postMessage(channel='#test', text="スレッドテスト") if response['ok'] == True : ts_id = response['ts'] for i in range(0, 20): time.sleep(1) response = client.chat_postMessage(channel='#test', thread_ts=ts_id, text="テスト : "+str(i))
メンションをつけることもできます。
textの項目に<@(メンバーID)>という形を入力するとメンションすることができます。
メンバーID の取得方法はまず、Slack画面右上のユーザーをクリックします。
すると次の画面が開くと思います。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_user_id1.png)
その他をクリックします。
開かれた画面の一番下にメンバーIDをコピーとありますので、このIDが使うメンバーIDになります。
![](https://www.mochinoki-labo.com/wp-content/uploads/2021/10/slack_user_id2.png)
実際にメンションをつけるサンプルを組んでみます。
from slack import WebClient SLACK_API_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' client = WebClient(token=SLACK_API_TOKEN) response = client.chat_postMessage(channel='#test', text="<@UZZZZZZZ> メンション") print(response)
メンションがついた状態でメッセージが飛んでくると思います。
最後に
PythonからSlackにメッセージを投げてみました。
Pythonのpackageを使うと簡単にメッセージを投げることができました。
他のプログラムと組み合わせることで、情報をSlackにまとめるという使い方もできそうです。
以上、「PythonからSlackに通知を送ってみる!」でした。
最後までご覧頂き、ありがとうございます。