こんにちは!
タダケン(@tadaken3)です。
最近、仕事もプライベートもタスクが溢れていてあたふたしています。 とはいえ、週1ブログを更新するというのきちんと継続していきます。
ということで今回は軽めの記事です。
個別にSlackでリマインダーを送るタスクが発生したので、PythonからSlackにメッセージを送る方法をまとめました。
例えば、アンケートを実施していていて、まだ回答していない場合に、リマインダーを送るという使い方ができますね。
Botの作成とAPI トークンの取得
まずSlack側で準備をしていきます。今回は、ボットを作成して、ボット経由でメッセージを送ります。
ボットを作成するには以下のサイトにアクセスしてください。
Slack API: Applications | Slack
アプリの作成
サイトにアクセスすると、以下の画面が表示されると思いますので、Create New Appを押します
「App Name」と「Development Slack Team」を設定します。「App Name」はお好きな名前、「Development Slack Team」は先程作成したSlackのワークスペースを入力します。入力がおわったら「Create App 」を押します。
ボットの設定、ワークスペースにインストール
Basic Informationから「Bots」「Permissions」を選択します。
続いて、ボットの表示名を入力します。たとえばDisplay nameに「samplebot」と入力します。※こちらはお好きな名前で大丈夫です。
作成したbotをワークスペースにインストールします。
APIトークンの取得
「OAuth & Permissions」からSlack botを操作するためのTokenを取得します。取得したトークンは、あとで使用しますので、保存しておいてください。これでSlack側の準備が完了しました。
この画面の下の方に「Scopes」という箇所があるので、こちらに「bot」が付与されているかご確認ください。
PythonでSlackにメッセージを送る
さて、ここからはPythonでSlackにメッセージを送信していきます。
channel 内のユーザーの発言に応答するタイプの Bot ではなく、外部から Slack に投稿するだけであれば、 REST API を叩くだけで実現できます。 簡単ですね。
url = 'https://slack.com/api/chat.postMessage' token = "xoxb-hogehogehogeghogehoge" # あなたのAPI Tokenを入れてくださいな headers = {"Authorization" : "Bearer "+ token} channel = "<channel or user to alert>" #ユーザーを指定するとDMが送られる payload = { 'channel': channel, 'text': message, 'as_user': True } r = requests.post(url ,headers = headers, data=params)
パラメータの詳細は API document を参照してみてくださいな。