こんにちは。 エキサイト株式会社の三浦です。
仕事やプライベートでSlackを使っている方も多いと思いますが、使っていく中で、「一定の条件下で自動的にメッセージを送信してほしい」と考えることもあるのではないでしょうか。
幸いSlackには、それを実現するための方法が用意されています。
今回は、Java・Spring Bootを使ってSlackにメッセージを送る方法を紹介します。
- 全体の流れ
- Slackのアプリを作成し、自動送信に使うためのトークンを発行する
- Javaで、Slackへのメッセージ送信用のライブラリをインストールする
- 発行したトークンとインストールしたライブラリを使って、メッセージ送信用のコードを作成・実行する
- 最後に
全体の流れ
JavaからSlackにメッセージを送るためには、以下の手順が必要になってきます。
- Slackのアプリを作成し、自動送信に使うためのトークンを発行する
- Javaで、Slackへのメッセージ送信用のライブラリをインストールする
- 発行したトークンとインストールしたライブラリを使って、メッセージ送信用のコードを作成・実行する
一つずつ見ていきましょう。
Slackのアプリを作成し、自動送信に使うためのトークンを発行する
Slackに、コードなどから自動的にメッセージを送信するためには、Slack側が発行したトークンを用いる必要があります。
これは、トークン等なしに自由にメッセージを送信できてしまうと、悪用される恐れがあるからだと思われます。
アプリの作り方については以前以下の記事にまとめたので、こちらを御覧ください。
注意点としては、この記事では
なお、 Incoming Webhooks でもSlackにメッセージを送信することはできますが、ファイルの送信はできないようです。 メッセージの送信だけなら構いませんが、もしファイルも送信したいのであれば、 Incoming Webhooks は選ばないようにしてください。
と書いていますが、今回のようにJavaから送信する場合は、メッセージの送信がしたいだけでも Incoming Webhooks
ではできません。
Permissions
から設定する方を行ってください。
記事の設定が完了していれば、 OAuth & Permissions
メニュー内の Bot User OAuth Token
欄にトークンが表示されているはずです。
今回はそれを使用します。
Javaで、Slackへのメッセージ送信用のライブラリをインストールする
トークンが発行できたら、次はJavaからのSlackへの送信を簡単にするため、公式で公開されているライブラリをインストールします。
Gradleを使用している場合は、 build.gradle
に以下のように設定すれば問題ありません。
// .. dependencies { implementation "com.slack.api:slack-api-client:1.27.3" // バージョンは適宜変更してください } // ...
発行したトークンとインストールしたライブラリを使って、メッセージ送信用のコードを作成・実行する
最後に、これまで準備してきたものを使って実際にメッセージを送信してみます。
やり方は非常に簡単で、以下のコードを実行するだけです。
try { Slack .getInstance() .methods("発行されたトークン") .chatPostMessage(req -> req .channel("送信先チャンネル") .text("テスト通知") ); } catch (Exception e) { System.out.println(e.getMessage()); }
実行すると、以下のメッセージが表示されます。
これで、簡単なメッセージであればJavaで送信できるようになりました!
最後に
特定の何かが起きたときの通知やエラーの警告など、Slackにプログラマチックにメッセージを送りたい場面は少なくないでしょう。
この記事が、そういった場面で助けになれば幸いです。