inblog logo
|
Coding_study
    JAVA

    Coolsms (문자 전송)

    yuzu sim's avatar
    yuzu sim
    Jan 17, 2024
    Coolsms (문자 전송)

    1. Coolsms란?

    자바로 문자 보낼 수 있는 서비스. 우선 Coolsms 사이트에 들어가서 API Key와 API Secret 코드를 발급 받는다. 이후 이 값을 라이브러리를 다운 받아서, 해당하는 메소드에 넣으면 문자가 간다. (Coolsms가 맞춰보고 신뢰할 수 있으면 통신사한테 내 문자를 전달해주는 것)
    notion image
    💡
    보내는 사람 이름을 112로 넣으면 112만의 api키랑 secret값 (해쉬값)이 일치하지 않아서 팅궈버림.
     

    2. Coolsms 이용하기

    https://coolsms.co.kr/ > 우측 '개발 문서' Java/Kotlin SDK 연동 가이드 > 메시지 발송 예제
    라이브러리로 문자를 보내기 위해서 SDK (소프트웨어 디벨롭 키)를 다운받아라.

    2-1. 프로젝트 생성 및 라이브러리 추가하기

    [ 프로젝트 생성 ]
    notion image
    💡
    build : 실행 파일을 만든다
    DSL : 도메인 특화 언어 (목적이 있는 언어, 목적이 딱 하나 있는 언어) (SQL 같이 쿼리에 질의를 하기 위한 단 하나의 목적을 가진 걸 DSL이라고 한다.) (JAVA는 DSL가 아니다.)
    💡
    프로젝트 만들 때, 이렇게 안 만들면 build.gradle 안 만들어짐!
     

     
    [ 라이브러리 추가하기 ]
    notion image
    implementation 'net.nurigo:sdk:4.2.7' 해당 코드를 build.gradle의 dependencies에 붙여넣는다.
    notion image
    notion image
    코끼리 누르면 라이브러리 다운 완료!
    notion image
    다 다운 받아진 것 확인 (21은 기존의 자바 라이브러리)
     

    2-2. 단축 문자 발송 코드 복붙

    코드
    DefaultMessageService messageService = NurigoApp.INSTANCE.initialize("API 키 입력", "API 시크릿 키 입력", "https://api.coolsms.co.kr"); // Message 패키지가 중복될 경우 net.nurigo.sdk.message.model.Message로 치환하여 주세요 Message message = new Message(); message.setFrom("계정에서 등록한 발신번호 입력"); message.setTo("수신번호 입력"); message.setText("SMS는 한글 45자, 영자 90자까지 입력할 수 있습니다."); try { // send 메소드로 ArrayList<Message> 객체를 넣어도 동작합니다! messageService.send(message); } catch (NurigoMessageNotReceivedException exception) { // 발송에 실패한 메시지 목록을 확인할 수 있습니다! System.out.println(exception.getFailedMessageList()); System.out.println(exception.getMessage()); } catch (Exception exception) { System.out.println(exception.getMessage()); }
     
    notion image
    notion image
    빨간 부분 가서 alt + enter 하면 import 완료! (import 안되어서 빨간거)
     

     
    통신은 무조건 예외가 있을 수 있다. runTime 에러나는걸 미리 잡으라고 알려줌 messageService.send(message);는 부모가 알려주는 Exception
    notion image
    NurigoMessageNotReceivedException 메세지를 못받았을때의 익셉션과 그 외의 exception
    notion image
    그런데... 한글이 깨져서 나온다?!
     

    2-3. 한글 깨짐 해결 방법

    링크 1 : https://da-nyee.github.io/posts/intellij-console-encoding-issue/
    링크 2 : https://firstws.tistory.com/23
    notion image
    한글 안 깨지는 것 확인!
     

    2-4. 완성 코드

    import net.nurigo.sdk.NurigoApp; import net.nurigo.sdk.message.exception.NurigoMessageNotReceivedException; import net.nurigo.sdk.message.model.Message; import net.nurigo.sdk.message.service.DefaultMessageService; public class MyApp { public static void main(String[] args) { DefaultMessageService messageService = NurigoApp.INSTANCE.initialize("N", "J", "https://api.coolsms.co.kr"); // Message 패키지가 중복될 경우 net.nurigo.sdk.message.model.Message로 치환하여 주세요 Message message = new Message(); message.setFrom("112"); message.setTo("010"); message.setText("안녕, 이제 곧 집에가"); try { // send 메소드로 ArrayList<Message> 객체를 넣어도 동작합니다! messageService.send(message); } catch (NurigoMessageNotReceivedException exception) { System.out.println("오류 발생1"); // 발송에 실패한 메시지 목록을 확인할 수 있습니다! System.out.println(exception.getFailedMessageList()); System.out.println(exception.getMessage()); } catch (Exception exception) { System.out.println("오류 발생2"); System.out.println(exception.getMessage()); } } }
    오류발생1 . 발신번호 미등록. 112를 폰번호로 바꿔라 이런 식으로 API 키 값도 바꿔보고 하면서... 봐바라!
     
     
    Share article

    Coding_study

    RSS·Powered by Inblog