사용 방법
나의 서비스 관리(카카오 알림톡/SMS 비즈니스형의 경우) - SMS 관리 - 소스 예제 - JSP 소스 예제를 보면
소스 예제가 여러 개 있긴한데 SMS 보내려면 아래 세 예제 코드만 보면 되는데요.
문자전송 - 발송 폼 소스 예제
문자전송 - 발송요청 처리 소스예제1
문자전송 - 발송요청 처리(발신번호 목록 조회) 소스예제2
sms 폴더를 하나 만들어서 차례대로 복사 붙여넣기 해줍니다.
/sms/sms_test.do
/sms/calljson.do
/sms/sms_sender.do
1. sms_test.do
...
var data_file = "./calljson.do";
...
loadJSON() 함수 안에 calljson 파일 위치에 맞게 코드 수정해주고
위와 같이 폼 형식을 자신에게 필요한 테스트 형태로 수정해줍니다.
이 때 문서에 적혀있는 대로
요청 값에 필수로 되어있는 것들은 아주 당연하게도 무조건 보내줘야하고
여기 폼에서는 필수 요청 데이터가 input name이 action, rphone, msg 정도가 되겠습니다.
name="action" value="go" 값은 요청 값에서 필수가 아니긴 한데
sms_sender.do 코드 수정하면 빼도 됩니다. (저는 폼 요청 확인 용도로 그냥 넣어줬습니다)
제 폼 예시 코드는 아래와 같습니다(제목, 메시지 전송 폼만 필요하신 분들은 저 부분만 복사해서 쓰시길!)
<form method="post" name="sms" action="./sms_sender.do">
<h2>[ Fix ]</h2>
<p>Action : go</p>
<input name="action" type="hidden" value="go">
<h2>[ Test ]</h2>
<p>Test Flag : <input type="text" name="testflag" maxlength="1"> 예) 테스트시: Y</p>
<p>
Alert : <input type="text" name="nointeractive" maxlength="1"> 예) 사용할 경우 : 1<br/>
- 성공 시, 대화상자(alert) 생략
</p>
<p>
메시지 타입 : <input name="smsType" value="S"> 예) S or L<br/>
- 단문(SMS) : 최대 90byte까지 전송할 수 있으며, 잔여건수 1건이 차감됩니다.<br />
- 장문(LMS) : 한번에 최대 2,000byte까지 전송할 수 있으며 1회 발송당 잔여건수 3건이 차감됩니다.<br/>
</p>
<p>Return url : <input name="returnurl" type="text" maxlength="64" value="./sms_ok.do"></p>
<h2>[ Request ]</h2>
<p>받는 번호 : <input name="rphone" type="text" value="010-2998-6238"> 예) 011-011-111 , '-' 포함해서 입력.</p>
<p>제목 : <input type="text" name="subject" value="테스트 제목"></p>
<p>메시지 : <input type="text" name="msg" value="테스트입니다."></p>
<input type="submit" value="전송">
</form>
2. calljson.do
...
String postParams = "userId=신청한아이디&passwd=인증후사용하세요";
...
이 파일에서는 postParams 부분만 알맞게 수정해주시면 됩니다.
3. sms_sender.do
<%
/**==============================================================
Description : 캐릭터셋 정의
EUC-KR: @ page contentType="text/html;charset=EUC-KR
UTF-8: @ page contentType="text/html;charset=UTF-8
==============================================================**/
%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%
/**==============================================================
Description : 사용자 샘플코드
==============================================================**/
String charsetType = "UTF-8"; // EUC-KR 또는 UTF-8
...
한글 사용하실거면 위에 친절하게 나와있는대로 UTF-8로 바꿔주시고
...
// Default
String user_id = base64Encode("SMS 아이디");
String secure = base64Encode("인증키");
String sphone1 = base64Encode("02"); // 보내는 번호
String sphone2 = base64Encode("1111");
String sphone3 = base64Encode("1111");
String mode = base64Encode("1");
// Get via request
String rphone = base64Encode(nullcheck(request.getParameter("rphone"), "")); // 받는 번호
String subject = ""; // 제목
String msg = base64Encode(nullcheck(request.getParameter("msg"), "")); // 메세지
String smsType = base64Encode(nullcheck(request.getParameter("smsType"), ""));
if(nullcheck(request.getParameter("smsType"), "").equals("L")) {
// SMSType이 있으면 SMS, LMS를 구분해서 발송 처리
// - value : S or L
// - 단문(SMS) : 최대 90byte까지 전송할 수 있으며, 잔여건수 1건이 차감
// - 장문(LMS) : 한번에 최대 2,000byte까지 전송할 수 있으며 1회 발송당 잔여건수 3건 차감
subject = base64Encode(nullcheck(request.getParameter("subject"), ""));
}
// System.out.println("smsType"+smsType);
// Etc
String testflag = base64Encode(nullcheck(request.getParameter("testflag"), "")); // 테스트 시, Y
String returnurl = nullcheck(request.getParameter("returnurl"), "./sms_ok.do");
String nointeractive = nullcheck(request.getParameter("nointeractive"), ""); // 결과 alert
...
마찬가지로 아이디와 인증키, 보내는 번호 넣어주세요
필요없는거 제거하다보니까 응답 코드 -101(변수 부족 에러) 에러가 떴었는데
문서에는 필수라고 안나와있는데 mode 부분도 필수더라고요
Etc 주석 부분은 필요 없다면 안넣으셔도 되는데 저는 테스트 용도로 넣어뒀습니다.
...
// 데이터 맵핑 변수 정의
String arrKey[]
= new String[] {"mode", "user_id","secure","sphone1","sphone2","sphone3",
"rphone","subject","msg","testflag", "smsType"};
String valKey[]= new String[arrKey.length] ;
valKey[0] = mode;
valKey[1] = user_id;
valKey[2] = secure;
valKey[3] = sphone1;
valKey[4] = sphone2;
valKey[5] = sphone3;
valKey[6] = rphone;
valKey[7] = subject;
valKey[8] = msg;
valKey[9] = testflag;
valKey[10] = smsType;
...
필요한 부분만 알맞게 넣어주신 다음에
제대로 메시지가 가는지 확인해주시면 됩니다.
추가적으로
제가 처음에 폼 action 부분에 .do 파일이 아니라
sms_sender.jsp로 보냈었는데 자꾸 403 forbidden 에러가 나서
cors 오류인가 권한 문제인가 뭔가 한참 검색하고 헤맸었는데
.jsp 파일을 웹에서 접근 불가하게 한 것 같고
실제로 지금처럼 jsp 파일이 웹에서 접근되면 안되는게 맞다. 라고 알려주셨습니다.
저는 단순하게 php처럼 그냥 접근되는 줄 알았는데 아니었네용....ㅎ
혹시 저처럼 조금 삽질하시는 분이 계시다면 도움이 되셨길 바랍니다 ㅎ.ㅎ,.~!~
'Language > Java, Jsp' 카테고리의 다른 글
JSP - jstl 변수 공유 (0) | 2022.04.01 |
---|---|
jstl sql:query 쉽게 사용하기 (0) | 2022.03.31 |
jstl funtion (0) | 2022.03.18 |
JSP ResultSet 전체 레코드 개수 구하기 (0) | 2022.03.16 |
jstl 문법 정리 (0) | 2022.03.12 |