Slack + WebHook による投稿について
SlackではWebHook用URLを取得することで、簡単にPythonスクリプトからメッセージを投稿することができます。
Slackには、比較的単純なメッセージに使用するmessage
と複雑なメッセージの形式を表現できるattachments
が存在します。
Pythonを使用し上記両方のフォーマットでslackに投稿する仕組みについて説明します。
Incoming WebHookの設定
SlackのIncoming WebHookの設定ページで投稿用URLを発行します。
チャンネルを選択して、Add Incoming WebHooks Integration
ボタンをクリックします。
(オプショナル)必要な場合はデフォルトの投稿設定を変更できます。
項目 | 説明 |
---|---|
Customize Name | 投稿時のデフォルトユーザ名 |
Customize Icon | 投稿時のデフォルトアイコン |
修正した場合は、Save Settings
で修正を保存しておきます。
PythonからSlackへ投稿
slackwebをインストール
WebHookで簡単に投稿を行うことが可能なslackwebをpip経由でインストールします。
sudo pip install slackweb
単純なメッセージの送信
slackwebを使用することで以下のようにメッセージを送信できます。
ここで省略されたフィールドはデフォルトのものが使用されます。
> import slackweb
> slack = slackweb.Slack(url="<コピーしたURL>")
> slack.notify(text="This is a test.")
notifyメソッドの引数を修正することで、部屋やアイコン、ユーザ名を修正したり、簡易的なマークダウン記法を使用することができます。(詳細について知りたい方はMessage Formattingを参照してください。)
> slack.notify(text="This is a *test*.", channel="#coffee", username="coffee-bot", icon_emoji=":coffee", mrkdwn=True)
複雑なメッセージの送信
attachments
の形式を使用することで複雑なメッセージを送ることもできます。
> attachments = []
> attachment = {"title": "Sushi",
"pretext": "Sushi _includes_ gunkanmaki",
"text": "Eating *right now!*",
"mrkdwn_in": ["text", "pretext"]}
> attachments.append(attachment)
> slack.notify(attachments=attachments)
詳細については、Attachmentsを参照してください。