1. Issue Description
Github Action과 슬랙 Webhook을 이용하여 PR 리뷰 Request, Submit 시 Slack에 메시지를 보내 알려주는 기능을 구현하였고, 메시지는 다음과 같이 성공적으로 온 것을 확인할 수 있었다.
초기에 테스트할 때는 슬랙 창을 열어두고 있어서 몰랐는데 나중에 다음과 같이 [no preview available] 메시지가 뜨면서 미리보기가 안 되는 것을 알게 되었다.
2. 원인 추론
(1) 구글 검색
- 검색어 : slack message no preview available
- 나의 경우와 비슷했던 글
- 찾았던 StackOverFlow 링크
- 이 경우 윈도우 알림이 서식 있는 텍스트 요소에 대해 지원하지 않아서 그럴 수 있다는 의견이 있었다.
- 슬랙으로 알림이 오는 다른 API 알림이 미리보기가 안 된 경우(해당 API Github Issue 링크)
- 슬랙으로 메시지를 보낼 때 block의 형식으로 보낼 수 있고, attachment의 형식으로 보낼 수 있는데, attachment의 형식으로 보낼 경우 슬랙에서 이를 "첨부파일"의 형식으로 인식해서 알림이 오지 않을 수 있다는 의견이 있었다.
- 찾았던 StackOverFlow 링크
=> 이 외에는 레퍼런스가 많이 없었고, 찾아봐도 "의견"이 대부분인 것 같았고 이것이 원인이다! 하는 글은 잘 보이지가 않았다. 미리보기가 보이지 않는 거지 메시지는 잘 오고 있었고 급한 안건은 아니었기 때문에 슬랙 팀에 직접 문의를 해보기로 했다.
(2) 슬랙 문의
- 질문의 일부
- 답변
=> 구글링하면서 혼선이 왔던 이유가 나처럼 웹훅을 이용해서 메시지를 보내는 경우는 드물었고 거의 토큰을 이용해서 API 요청을 보냈기 때문에 나랑 다르다고 생각해 더 찾기 어려웠는데 Webhook을 이용하든, 토큰을 이용하든 같은 API의 사양을 따르는 것은 생각하지 못했다.
=> 내가 보냈던 payload에는 "text" 항목이 없었기 때문에 미리보기가 보이지 않았던 것
3. 결과
fallback 필드 발견
"text" 필드를 넣어서 메시지 새로 구성하려던 와중에 attachments의 항목을 다시 확인하다가 "fallback" 필드를 발견했다.
혹시 fallback 필드를 이용해서 메시지를 아예 새로 구성하지 않고 단순히 항목 추가만 해서 미리보기를 할 수 있지 않을까? 라는 생각에 payload에 fallback 항목을 넣어 테스트를 해보았다.
"fallback" 필드에 보낸 문자열이 미리보기에 보이는 것을 확인
다음과 같이 fallback 필드 추가
private String generateJsonPayload(String text) {
StringBuilder sb = new StringBuilder();
sb.append("{\"attachments\":[{");
sb.append("\"fallback\": \"PR에 리뷰가 달렸어요! 확인해 주세요!\",");
sb.append("\"mrkdwn_in\": [\"text\"],");
sb.append("\"color\": \"#238636\",");
sb.append(text);
sb.append("}]}");
return sb.toString();
}
미리보기가 잘 보이는 것을 확인하였다! 그런데 프로필이 보이지 않는다. 이 항목 저 항목을 넣어봐도 바뀌지가 않아서 문의를 넣었다. 이미 한 번 문의를 해봤기 때문에 처음부터 자세한 사항을 작성하여 문의를 넣었더니 빠른 답변을 받을 수 있었는다.
!! 나한테만 일어나는 일이 아니라 꽤 여러 명에게 발생되는 문제인가 보다!
프로필이 안 보이는 것은 거슬리지만 없다고 크게 불편한 것은 아니니 일단 미리보기가 잘 되는 지금의 코드를 개발 브랜치에 적용하였다. 이제 미리보기가 잘 보이니 좋구만~
😅 API에서 문제가 생기면 보통 docs를 보고 해결할 수 있다는 사실... 영어 해석이 조금 더 익숙해지는 그 날이 오길...
'STUDY > Trouble Shooting' 카테고리의 다른 글
Timestamped ZonedDateTime 오류 (0) | 2024.05.22 |
---|---|
Redis Docker Container와 Spring Boot 연결이 안 되는 오류 (0) | 2024.05.22 |
만료된 토큰에서 토큰에 저장된 정보를 가져올 수 없는 오류 (0) | 2024.05.22 |
GraphQL - mutation 실행 시 필드 값이 null로 들어오는 오류 (0) | 2024.04.18 |
Docker에서 Spring Boot 프로젝트 build 시 GraphQL 요청을 보내지 못하는 오류 (0) | 2024.04.18 |