-
[Spring Boot] 슬랙 메시지 보내기(Incoming WebHooks) 2프로젝트 2020. 11. 29. 22:00반응형
-이전 글에서 슬랙 채널에 메시지를 보내는 기능을 정리했는데,
이번에 추가로 정리해본다.
Map<String,Object> request = new HashMap<String,Object>(); // request.put("username", "slackbot"); request.put("text", "custom-slack-msg");
1. 요청 데이터로 "username"을 추가했는데, 없어도 된다.
없으면 기본 이름인 "incoming-webhook"으로 발송된다.
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