Simple Slack APIを使ってSlackへHello World!

「Simple Slack API」を使ってJavaでSlackへHello Worldをする。Slackへメッセージが送れればアプリケーションのエラー通知など、いろいろ応用できそう。

概要

最近はSlackも定着してきたので、Java→Slackでメッセージの送り方をまとめる(Hello Worldを送るまで)。Slackへのメッセージ送信はアプリケーションのエラー通知など、いろいろ使えそう。

ライブラリは「Simple Slack API」を利用する。Simple Slack APIはSlackのWeb APIのラッパー。Maven Centralにも登録されている。これが決定版かどうかまでは判断できないが、とりあえずはよさそうなので利用する。SlackはWeb APIがしっかりしているのでそちらを頑張るでもよいかも。

下準備

Slackへプログラム経由でHello Worldするには、まずBotユーザーが必要なので作成する。BotユーザーにAPI Tokenが発行されるのでそれによって認証される。またメッセージを送るチャンネルも必要なるので作る。

Botの作成

2人目以降であればConfigure Appsのページ(https://my.slack.com/apps/manage)からBotを作成できるが、最初のBot作成ページへ直接行く(行かなければならない)。

手順

  1. Bot作成ページへ行く。
    https://my.slack.com/services/new/bot

  2. Botユーザー名を入力して次へ。
    Bot作成01

  3. Botの設定ページが表示されるので、これでOK。
    表示されているAPI Tokenをプログラムで利用する(あとから確認することも可能)。
    Bot作成02

Channelの作成とBotのメンバー登録

Botユーザーを作成してもメッセージをどこに送るかということになるので、送り先のChannelを作成する。Botもメンバー登録されていないとそのChannelにメッセージを送れない(らしい)ので、メンバー登録もする。

これらのChannel作成とメンバー登録は通常のSlack操作で可能(特別なことはない)。

手順

  1. Channelを作成する。
    Channel作成01

  2. ChannelのメンバーにBotを追加する。これでOK。
    Channel作成02

Simple Slack APIでHello World!

いよいよ本題。といっても難しくない。 Simple Slack APIはMaven Centralにも登録されているのでMavenにdependencyを追加するだけ。コードも難しくない。

実際にメッセージが届けばOK。

pomのdependencyに追加
<!-- Simple Slack API -->
<dependency>
	<groupId>com.ullink.slack</groupId>
	<artifactId>simpleslackapi</artifactId>
	<version>0.6.0</version>
</dependency>
SlackへHello World
public static void main(String[] args) throws IOException {

    // BotのAPI Tokenを設定
    SlackSession session = SlackSessionFactory.createWebSocketSlackSession("xoxb-**********");

    session.connect();

    SlackChannel channel = session.findChannelByName("bot-test-channel");
    String message = "Hello World!";
    session.sendMessage(channel, message);

    session.disconnect();

  }

次のようにメッセージが届けばOK。
メッセージ確認01

Appendix A: 参考

Appendix B: 改訂履歴

  • v1.0, 2017-04-12: 初稿