자바 스프링 어플리케이션에서 카카오톡 알람 보내기 Part 2. API 활용

Adam·2022년 6월 15일
3

트러블슈팅

목록 보기
2/4
post-thumbnail

토큰을 발급을 받는데는 성공했으니, 이제 그 토큰을 활용해서 카카오톡을 보내는 api를 짜는 것을 해보려 한다.
하지만 알리고의 api 문서는 비교적 불친절하게 되어있었다.
알리고의 api를 활용하기 위해서는 body에 보내는 문자 내용을 전부 첨부해서 보내야 했는데, 변수를 잘못 입력을 했을 경우 서버에서는 정상 처리가 됐다는 응답을 받지만, 실제로 카카오톡이 전달이 되지 않는 현상이 발견 되었다.
마침 알리고의 포인트를 전부 사용하여 대표님께 다른 보다 사용하기 편한 다른 서비스를 알아보자고 건의를 하였고, 논의 끝에 누리고의 쿨sms를 활용하자는 결론에 도달했다.

쿨sms는 알리고와 다르게 자바 예시코드를 깃헙에 업로드가 돼있고, 개발자의 편의를 고려하여 sdk를 제공하여 개발을 정말 편리하게 할 수 있게 해주었다.

SDK 다운로드

스프링 어플리케이션에서 일반적인 sdk를 불러오는것과 동일하게 pom.xml이나 build.gradle 파일에 dependency를 불러오면 된다.
나는 gradle project이기 때문에 아래 내용을 build.gradle파일에 추가해 주었다.

implementation group: 'net.nurigo', name: 'sdk', version: '4.2.4'

템플릿 인증 및 api 키 발급

쿨sms에 가입 후 카카오톡을 보내기 위해서는 템플릿을 검증 받아야 한다.
해당 작업은 회원 가입 후 대시보드 접근 권한이 주어지는데, 대시보드에서 등록을 할 수 있다.

해당 템플릿은 운영 담당하시는 분이 해주어서 자세한 사항은 모르겠으나, 크게 어려운 작업은 아니라고 생각된다.
그리고 해당 템플릿의 카톡을 보내기 위해선 api 키를 발급 받고 발송 번호를 등록해야 되는데, 이 역시 대시보드에서 쉽게 할 수 있다.

이 부분에서 주의해야 될 사항은 api 키를 발급 받을 때 시크릿 역시 같이 발급이 되는데, 해당 키와 시크릿을 잘 메모해놓아야 카카오톡 전송 api를 개발 할 수 있으니 꼭 기록해 두자.

API 개발

깃헙에 올라온 자바 예시코드를 본다면 다음과 같다.

좀 더 부가 설명을 하자면 해당 로직은 다음과 같다.
1. NurigoApp을 initialize 해준다.
2. 카카오 옵션을 initialize 해준다.
3. 카카오 옵션에 채널 아이디와 template id를 입력해준다.
4. 템플릿에 등록된 변수들을 hash map 형태로 넣어준다.
5. message를 initialize 해준다.
6. 발신 및 수신 번호와 카카오 옵션을 message instance에 넣어준다.
7. 1번에서 생성한 NurigoApp에서 해당 메세지를 전달하게 한다.

이를 바탕으로 컨트롤러를 작성해봤다.

@Slf4j
@RestController
public class NewKakaoController {
    @PostMapping("/kakao/send")
    public void SendMessage(){
        HashMap<String, String> variables = new HashMap<>();
        variables.put("#{고객명}", "아담");
        variables.put("#{상품명}", "테스트 상품");
        variables.put("#{입찰가}", "입찰가격");
        variables.put("#{수수료}", "수수료");
        variables.put("#{결제금액}", "결제금액");
        variables.put("#{결제가능시간}", "결제가능시간");
        kakaoMessage("", variables, "");
    }
    public void kakaoMessage(String templateId, HashMap<String, String> variables, String sendTo){
       final DefaultMessageService messageService = NurigoApp.INSTANCE.initialize("", "", "https://api.coolsms.co.kr");
        KakaoOption kakaoOption = new KakaoOption();
        kakaoOption.setPfId("");
        kakaoOption.setTemplateId(templateId);
        kakaoOption.setVariables(variables);

        Message message = new Message();
        message.setFrom("");
        message.setTo(sendTo);
        message.setKakaoOptions(kakaoOption);

        SingleMessageSentResponse response = messageService.sendOne(new SingleMessageSendingRequest(message));
    }
}

그러고 postman을 통해 해당 주소에 요청을 보냈다.

해당 요청을 보냈을때, 카카오톡이 정상적으로 보내진 것으로 확인 됐다.

이제 해당 api를 사용하기 위해선 db에서 해당 값들을 조회해오고, 주기적으로 조건에 맞을 경우 카톡을 보낼 수 있게 스케쥴러 어플리케이션을 작성해야 한다.

다음 포스트에서 해당 내용들에 대해서 적어보려 한다.

profile
Keep going하는 개발자

1개의 댓글

comment-user-thumbnail
2023년 11월 20일

안녕하세요 좋은 글 보고 갑니다.
coolsms 개발자 가이드에서 카카오톡 알림톡 서비스를 사용하기 위해서는 비즈니스 채널이 필요하다는 안내가 존재하는데 사업자등록을 하시고 비즈니스 채널을 개설하신 건가요?

답글 달기