Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした