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
このあたりを参考に。