[Java] 자바와 slack webhook 연동(크롤링완료 후 slack으로 알림메세지 보내기)


슬랙으로 알림메세지를 오게하려면 본인의 workspace가 있어야한다.

슬랙홈페이지에 들어가서 create workspace를 한뒤 workspace를 만든뒤 본인의 workspace를 관리하는 manage페이지로 접속한다.

본인의 mange페이지로 들어가려면 https://본인워크스페이스이름.slack.com/apps/manage/custom-integrations 로 접속한다.

접속한 뒤 검색창에 incoming webhook이라고 검색한다.

그리고 뜨는 incoming webhook을 선택해서 들어가보면 ‘Add Configuration’ 을 선택해서 configuration을 추가한다(난 이미 추가해서 그림이 떠있다)

추가한 뒤 edit아이콘을 눌러서 설정파일로 들어간다

들어가서 보면 어떤 채널을 선택할건지를 정하고,

webhook URL을 복사한다.


크롤링이 완료되거나, 새로운 글이 있거나 할때 슬랙이 미리 알림을 주면 꽤나 유용하다!

package test;
import java.io.IOException;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.json.simple.JSONObject;
import com.pro1.common.PathFinder;



public class slack {

	public static void main(String[] args) {
		String url = "https://hooks.slack.com/services/웹훅유알엘";
        HttpClient client = new HttpClient();
        PostMethod post = new PostMethod(url);
        JSONObject json = new JSONObject();
        try {
            json.put("channel", "#채널명");
            json.put("text", "지금은 테스트중입니다");
            json.put("icon_emoji", ":원하는 아이콘:");	//커스터마이징으로 아이콘 만들수도 있다!
            json.put("username", "알리미");
            post.addParameter("payload", json.toString());
            //처음에 utf-8로 content-type안넣어주니까 한글은 깨져서 오더라. 그래서 content-type넣어줌
            post.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
            int responseCode = client.executeMethod(post);
            String response = post.getResponseBodyAsString();
            if (responseCode != HttpStatus.SC_OK) {
                System.out.println("Response: " + response);
            }
        } catch (IllegalArgumentException e) {
            System.out.println("IllegalArgumentException posting to Slack " + e);
        } catch (IOException e) {
            System.out.println("IOException posting to Slack " + e);
        } finally {
            post.releaseConnection();
        }

	}
}

이렇게 슬랙 메소드를 만들어서 크롤링이 완료되면 보내주거나, 새로운 글이 올라왔을때 알려주거나,

일정 날짜가 도달하면 알려주는 식으로 알림을 보내면 굉장히 편하다!




© 2018. by sora

Powered by sora