LoginSignup
9
21

More than 5 years have passed since last update.

Incoming Webhooks を利用してslackに通知を飛ばす

Last updated at Posted at 2018-09-19

システム上の特定のタイミングでslackに通知を飛ばすことで、
何かが起きたことを検知する仕組みを試したので、記載。

slackに通知を飛ばす

Incoming Webhooks
というslackAppの機能を使うことで実現できる。
簡単に言うと、外部サービスからslackにメッセージを書き込む機能。

Incoming Webhooks の使い方は二種類ある?

色んな人がIncoming Webhooksの使い方をまとめているのだが、
どうもやり方が二種類あるようで少し迷った。

調べてみたら、custom integrationsは
公式が「古い手法だから、こっちは使わないでね」と言っていた。

ということで、slackappを作る方法でやってみた。

Incoming Webhooksの導入

基本的に、公式サイトに書いてある方法をなぞることで実現可能。

  1. 自分のslackappを作成する
    [create your Slack app] と書かれたボタンを押せば、アプリの作成画面が開かれる
    アプリの名前(任意)と、そのアプリを追加したいワークスペースを選択して、作成
  2. Incoming Webhooksの画面に遷移
    [Add features and functionality]から選択しても、左メニューから遷移してもよい
  3. Activate Incoming Webhooks と書かれた隣に、offになっているトグルボタンがあるので、これをクリックしてonにする
  4. 下の方に[Add New Webhook to Workspace] というボタンがあるので、クリック
    投稿先のチャンネルを選択して、許可する
  5. 先ほどの画面に戻され、[Webhook URL]に一つURLが追加されている
    [Channel]で投稿先も確認できる

以上で準備完了。

試しにメッセージを送ってみる

使用法は簡単で、先ほど追加されたURLに対して、json形式で書き込みたい内容を送るだけ。
[Sample curl request to post to a channel:]に送り方のサンプルまで書かれた親切っぷり。

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' 
https://hooks.slack.com/services/それぞれのURL

上記コマンドを仮想マシンで実行してみると、
見事に指定したチャンネルに「Hello, World!」というメッセージが届いた。

最後に

以上で導入完了。
あとは、通知したいタイミングで、追加したURLにjsonをつけて送信するだけ。
送信の仕方は、サービスによってそれぞれだと思うので、適した方法で。
jsonの中身をカスタマイズすることで、見た目にも豪華な書き込みができるので、
そのあたりを凝ってみても面白いかも。
ただ、やりすぎて通知がうっとうしくならないように、節度はわきまえましょう。

9
21
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
9
21