ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Boot] 슬랙 메시지 보내기(Incoming WebHooks) 2
    프로젝트 2020. 11. 29. 22:00
    반응형

    Slack

    -이전 글에서 슬랙 채널에 메시지를 보내는 기능을 정리했는데,

    이번에 추가로 정리해본다.

    Map<String,Object> request = new HashMap<String,Object>();
    // request.put("username", "slackbot");
    request.put("text", "custom-slack-msg");

     

    1. 요청 데이터로 "username"을 추가했는데, 없어도 된다.

    없으면 기본 이름인 "incoming-webhook"으로 발송된다.

    기본 username

     

    2. "missing_text_or_fallback_or_attachments"의 에러는 이름 그대로 요청 데이터로 "text"가 없을 때 뜬다.

    만약에 "test"라고 적으면 에러가 발생한다.

    *text타입이 아닌 메시지를 보낼 땐 아직 테스트해보지 않았다.

    Map<String,Object> request = new HashMap<String,Object>();
    request.put("test", "custom-slack-msg");

     

    3. "invalid_payload"는 위와 비슷한 경우로 요청 데이터가 잘못되었을 때 나온다.

    잘못된 요청 데이터로 호출하면 위 에러를 응답한다.

     

    사실 이번 정리를 하게 된 이유가 "invalid_paylod" 때문이었는데,

    처음으로 "invalid_payload" 에러가 발생했을 땐,

    아래처럼 "ContentType"을 추가해서 호출했다.

    그래서 에러가 해결되었다.

    RestTemplate restTemplate = new RestTemplate();
    
    Map<String, Object> request = new HashMap<String, Object>();
    request.put("text", msg);
    
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON); // add content type
    
    HttpEntity<Map<String, Object>> entity = new HttpEntity<Map<String, Object>>(request, headers);
    
    ResponseEntity<String> result = restTemplate.exchange(WEBHOOKS, HttpMethod.POST, entity, String.class);

     

     

    하지만 이후에 "ContentType"에 "APPLICATION_JSON" 타입을 빼고 호출해도 정상적으로 호출이 가능했다.

     

    그러니 "invalid_payload"는 "ContentType"을 추가하는 것과는 다른 것 같았고,

    전체적인 프로그램 구조의 문제와 관련이 있는 것 같았다.

     

    "Controller"내에서 "Service"를 호출하는 방식과,

    "RestTemplate"을 쓰는 문제와 관련이 있는 것 같았는데 아직 동일한 증상은 구현하지 못했다.

    추후 해당 문제가 발생했던 원인과 정리된 소스를 만들어볼 예정이다.

     

    반응형

    '프로젝트' 카테고리의 다른 글

    [Spring Boot] 슬랙 메시지 보내기(Incoming WebHooks)  (0) 2020.10.05

    댓글

Designed by Tistory.