タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

PythonでSlackにメッセージを送る方法

f:id:tadaken3:20181027004418p:plain こんにちは!
タダケン(@tadaken3)です。

最近、仕事もプライベートもタスクが溢れていてあたふたしています。 とはいえ、週1ブログを更新するというのきちんと継続していきます。

ということで今回は軽めの記事です。

個別にSlackでリマインダーを送るタスクが発生したので、PythonからSlackにメッセージを送る方法をまとめました。

例えば、アンケートを実施していていて、まだ回答していない場合に、リマインダーを送るという使い方ができますね。

Botの作成とAPI トークンの取得

まずSlack側で準備をしていきます。今回は、ボットを作成して、ボット経由でメッセージを送ります。

ボットを作成するには以下のサイトにアクセスしてください。

Slack API: Applications | Slack

アプリの作成

サイトにアクセスすると、以下の画面が表示されると思いますので、Create New Appを押します

f:id:tadaken3:20181025202249j:plain

「App Name」と「Development Slack Team」を設定します。「App Name」はお好きな名前、「Development Slack Team」は先程作成したSlackのワークスペースを入力します。入力がおわったら「Create App 」を押します。

f:id:tadaken3:20181025202301j:plain

ボットの設定、ワークスペースにインストール

Basic Informationから「Bots」「Permissions」を選択します。 f:id:tadaken3:20181025202317j:plain

続いて、ボットの表示名を入力します。たとえばDisplay nameに「samplebot」と入力します。※こちらはお好きな名前で大丈夫です。 f:id:tadaken3:20181025202331j:plain

作成したbotをワークスペースにインストールします。 f:id:tadaken3:20181025203751j:plain

APIトークンの取得

「OAuth & Permissions」からSlack botを操作するためのTokenを取得します。取得したトークンは、あとで使用しますので、保存しておいてください。これでSlack側の準備が完了しました。

f:id:tadaken3:20181025202350j:plain

この画面の下の方に「Scopes」という箇所があるので、こちらに「bot」が付与されているかご確認ください。

f:id:tadaken3:20181025203915j:plain

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 を参照してみてくださいな。