134
141

More than 5 years have passed since last update.

Slackにincoming webhook経由でpythonからメッセージをPOSTする

Last updated at Posted at 2015-06-22

Slack + WebHook による投稿について

SlackではWebHook用URLを取得することで、簡単にPythonスクリプトからメッセージを投稿することができます。

Slackには、比較的単純なメッセージに使用するmessageと複雑なメッセージの形式を表現できるattachmentsが存在します。
Pythonを使用し上記両方のフォーマットでslackに投稿する仕組みについて説明します。

Incoming WebHookの設定

SlackのIncoming WebHookの設定ページで投稿用URLを発行します。

チャンネルを選択して、Add Incoming WebHooks Integrationボタンをクリックします。
スクリーンショット 2015-06-22 18.47.17.png

表示されるWebhook URLをコピーしておきます
スクリーンショット 2015-06-22 18.48.30.png

(オプショナル)必要な場合はデフォルトの投稿設定を変更できます。

項目 説明
Customize Name 投稿時のデフォルトユーザ名
Customize Icon 投稿時のデフォルトアイコン

修正した場合は、Save Settingsで修正を保存しておきます。

スクリーンショット 2015-06-22 18.52.30.png

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.")

スクリーンショット 2015-06-22 19.31.17.png

notifyメソッドの引数を修正することで、部屋やアイコン、ユーザ名を修正したり、簡易的なマークダウン記法を使用することができます。(詳細について知りたい方はMessage Formattingを参照してください。)

> slack.notify(text="This is a *test*.", channel="#coffee", username="coffee-bot", icon_emoji=":coffee", mrkdwn=True)

スクリーンショット 2015-06-22 19.33.46.png

複雑なメッセージの送信

attachmentsの形式を使用することで複雑なメッセージを送ることもできます。

> attachments = []
> attachment = {"title": "Sushi",
                "pretext": "Sushi _includes_ gunkanmaki",
                "text": "Eating *right now!*",
                "mrkdwn_in": ["text", "pretext"]}
> attachments.append(attachment)
> slack.notify(attachments=attachments)

スクリーンショット 2015-06-22 19.38.57.png

詳細については、Attachmentsを参照してください。

参考にしたサイト

slack - incoming-webhooks

134
141
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
134
141