JavaからSlack API経由でメッセージを送信してみた【Simple Slack API】

JavaでSlackへメッセージ送信しようとしたのですが、Simple Slack APIというAPIを利用したら簡単にできたのでメモしておきます。

場所

github https://github.com/Ullink/simple-slack-api

Mavenの場合はここです。 https://mvnrepository.com/artifact/com.ullink.slack/simpleslackapi

サンプル

import java.io.IOException;

import com.ullink.slack.simpleslackapi.SlackChannel;
import com.ullink.slack.simpleslackapi.SlackSession;
import com.ullink.slack.simpleslackapi.impl.SlackSessionFactory;
public class SlackTest {
    public static void main(String[] args) {
        String token = "xoxp-0123456789-0123456789-0123456789-0123456789";
        String channel = "your-channel";
                String message = "TEST";

        try {
            printSlackChannelList(token);
            sendSlackMessage(token,channel,message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private static void sendSlackMessage(String apiToken,String channelName,String message) throws IOException{
        SlackSession session = SlackSessionFactory.createWebSocketSlackSession(apiToken);
        session.connect();
        SlackChannel channel = session.findChannelByName(channelName);
        session.sendMessage(channel, message);
        session.disconnect();
    }
    private static void printSlackChannelList(String apiToken) throws IOException{
        SlackSession session = SlackSessionFactory.createWebSocketSlackSession(apiToken);
        session.connect();
        session.getChannels().forEach(c -> System.out.println(c.getName()));
        session.disconnect();
    }
}

ログが大量にでてうるさい場合

ちょっとメッセージを送るだけでも、こんな感じでメッセージが大量に出ます。slf4j.simpleloggerから出力されています。

[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - connecting to slack
[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - Team AAAAA
[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - Self AAAAAAAA : yusuke.otomo
[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - 100 users found on this session
[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - 1000 channels found on this session
[main] INFO com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl - slack session ready

Javaの実行時にオプション指定してログのレベルを変更してあげれば、メッセージを調整することができます。

-Dorg.slf4j.simpleLogger.defaultLogLevel=info

このあたりを参考に。

https://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html