システム上の特定のタイミングでslackに通知を飛ばすことで、
何かが起きたことを検知する仕組みを試したので、記載。
slackに通知を飛ばす
Incoming Webhooks
というslackAppの機能を使うことで実現できる。
簡単に言うと、外部サービスからslackにメッセージを書き込む機能。
Incoming Webhooks の使い方は二種類ある?
色んな人がIncoming Webhooksの使い方をまとめているのだが、
どうもやり方が二種類あるようで少し迷った。
調べてみたら、custom integrationsは
公式が「古い手法だから、こっちは使わないでね」と言っていた。
ということで、slackappを作る方法でやってみた。
Incoming Webhooksの導入
基本的に、公式サイトに書いてある方法をなぞることで実現可能。
- 自分のslackappを作成する
[create your Slack app] と書かれたボタンを押せば、アプリの作成画面が開かれる
アプリの名前(任意)と、そのアプリを追加したいワークスペースを選択して、作成 - Incoming Webhooksの画面に遷移
[Add features and functionality]から選択しても、左メニューから遷移してもよい - Activate Incoming Webhooks と書かれた隣に、offになっているトグルボタンがあるので、これをクリックしてonにする
- 下の方に[Add New Webhook to Workspace] というボタンがあるので、クリック
投稿先のチャンネルを選択して、許可する - 先ほどの画面に戻され、[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の中身をカスタマイズすることで、見た目にも豪華な書き込みができるので、
そのあたりを凝ってみても面白いかも。
ただ、やりすぎて通知がうっとうしくならないように、節度はわきまえましょう。