痛風とシステム障害を恐れるエンジニアのブログ

趣味のことだったり仕事に関することだったりを徒然なるままに。webとかオープン系の会社で働いてます。お仕事の依頼お待ちしておりまーす。

PythonでSlackにメッセージを投げる

問い合わせフォームから問い合わせをするとメールが管理者に届くという仕組みがありますが、
今回はユーザーがフォームに入力した内容をSlackに投げるというのに取り組んでみました。

とりあえず、SlackのAPIの設定ですな。
Pythonのライブラリを見てみるとまぁたくさんいろんなのがそろっていて、だいたい必要になってくるのがSlackのAPIのTokenですな。


Slack API | Slack
このページでMyAppsを登録します。
そのあと
Slack Web API | Slack
この画面の下の方でTokenを発行できるのでそのTokenをプログラムに組み込めばよさ気です。

で、肝心のライブラリですが、最初はgithub.com
こちらを考えてました。
ただ、APIへの接続はできるのですが、メッセージをチャンネルに送ろうとするとエラーが出ます。
ぐぐったら他にも同じ現象が出てる人が居たのですが、結局解決しなかったので、諦めました。

次に試したのはgithub.com
こちらです。

こちらは問題なく動きました。
コードはこんな感じです。

from slacker import Slacker

SLACK_TOKEN = "*****" # Slackから払い出されるToken
channel = "hogehoge"
message = "test"

slack = Slacker(SLACK_TOKEN)
slack.chat.post_message(channel,message)

と、これだけですみます。簡単。

ちなみにチャンネルはSlackで見てるチャンネル名ではなく内部的に持つチャンネルIDを設定する必要があります。
チャンネルIDはapi.slack.com
ここのページでチャンネルリストのAPIを試せますので、その結果から知ることができます。
ちなみに私はPrivateなチャンネルに対してはメッセージを投げれてません。
チャンネルリストのAPIに出てこない・・・。
仕様的にできないのか今後も要調査です。

最近会社でもSlackを導入してきてるので、もっと色々と活用方法を模索していきたいところですな。
はよ日本語化して欲しいですね。