181 lines
6.5 KiB
Java
181 lines
6.5 KiB
Java
package kcc.ve.cmm;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.InputStreamReader;
|
|
import java.net.URLEncoder;
|
|
import java.nio.charset.Charset;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
|
|
import org.apache.http.HttpEntity;
|
|
import org.apache.http.HttpResponse;
|
|
import org.apache.http.client.HttpClient;
|
|
import org.apache.http.client.methods.HttpPost;
|
|
import org.apache.http.entity.ContentType;
|
|
import org.apache.http.entity.mime.HttpMultipartMode;
|
|
import org.apache.http.entity.mime.MultipartEntityBuilder;
|
|
import org.apache.http.entity.mime.content.FileBody;
|
|
import org.apache.http.impl.client.HttpClients;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
import kcc.com.cmm.service.EgovFileMngUtil;
|
|
|
|
public class VeSendSMS {
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class);
|
|
|
|
|
|
//================================================================
|
|
//찾교 관리자 SMS 발송 - 알리고 API
|
|
//사용자 ID : Identifier
|
|
//발급 키 : ny3v5te9d8131byxllc8c0v7cmx7jqo1
|
|
|
|
//*Request
|
|
// POST /send/ HTTP/1.1
|
|
// Host: apis.aligo.in
|
|
// Service Port: 443
|
|
|
|
//key |인증용 API Key |필수 |String
|
|
//user_id |사용자id |필수 |String
|
|
//sender |발신자 전화번호 (최대 16bytes) |필수 |String
|
|
//receiver |수신자 전화번호 - 컴마(,)분기 입력 |필수 |String
|
|
//msg |메시지 내용 |필수 |String (1~2,000Byte)
|
|
//msg_type |SMS(단문) , LMS(장문), MMS(그림문자) 구분 |X |String
|
|
//title |문자제목(LMS,MMS만 허용) |X |String (1~44Byte)
|
|
//destination |%고객명% 치환용 입력 |X |String
|
|
//rdate |예약일 (현재일이상) |X |YYYYMMDD
|
|
//rtime |예약시간 - 현재시간기준 10분이후 |X |HHII
|
|
//image1 |첨부이미지 (image 또는 image1) |X |JPEG,PNG,GIF
|
|
//image2 |첨부이미지 |X |JPEG,PNG,GIF
|
|
//image3 |첨부이미지 |X |JPEG,PNG,GIF
|
|
//testmode_yn |연동테스트시 Y 적용 |X |String
|
|
|
|
//*Response
|
|
//result_code |결과코드(API 수신유무) |Integer
|
|
//message |결과 메시지( result_code 가 0 보다 작은경우 실패사유 표기) |String
|
|
//msg_id |메시지 고유 ID |Integer
|
|
//success_cnt |요청성공 건수 |Integer
|
|
//error_cnt |요청실패 건수 |Integer
|
|
//msg_type |메시지 타입 (1. SMS, 2.LMS, 3. MMS) |String
|
|
//================================================================
|
|
public Map<String, Object> VeSendSMS(String receiver, String msg, String sndFlag) throws Exception {
|
|
|
|
String result = "";
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
|
try{
|
|
|
|
final String encodingType = "utf-8";
|
|
final String boundary = "____boundary____";
|
|
|
|
/**************** 문자전송하기 예제 ******************/
|
|
/* "result_code":결과코드,"message":결과문구, */
|
|
/* "msg_id":메세지ID,"error_cnt":에러갯수,"success_cnt":성공갯수 */
|
|
/* 동일내용 > 전송용 입니다.
|
|
/******************** 인증정보 ********************/
|
|
String sms_url = "https://apis.aligo.in/send/"; // 전송요청 URL
|
|
|
|
Map<String, String> sms = new HashMap<String, String>();
|
|
|
|
sms.put("user_id", "copy0723"); // SMS 아이디
|
|
sms.put("key", "ny3v5te9d8131byxllc8c0v7cmx7jqo1"); //인증키
|
|
|
|
/******************** 인증정보 ********************/
|
|
|
|
/******************** 전송정보 ********************/
|
|
//msg_type - SMS, LMS, MMS 미지정 시 자동 전환
|
|
//성인교육 기본 템플릿 제공
|
|
if("S".equals(sndFlag)) {
|
|
msg = "안녕하세요. 저작권배움터 찾아가는 교육 담당자입니다.\n" + msg + "\n감사합니다.";
|
|
|
|
}
|
|
|
|
|
|
sms.put("msg", msg); // 메세지 내용
|
|
sms.put("receiver", receiver); // 수신번호
|
|
//sms.put("destination", "01111111111|담당자,01111111112|홍길동"); // 수신인 %고객명% 치환
|
|
|
|
/*24.01.18 메뉴별 발신번호 처리ㅏ*/
|
|
String sender = "055-792-0233";
|
|
if("C".equals(sndFlag)) { // 청소년
|
|
sender = "055-792-0233";
|
|
sender ="055-792-0224";// 폰번호
|
|
}else if("S".equals(sndFlag)) { //성인
|
|
sender = "02-2669-0083";
|
|
sender = "055-792-0233";
|
|
}else if("G".equals(sndFlag)) { //체험교실
|
|
sender = "055-792-0234";
|
|
}else if("A".equals(sndFlag)) { //기반강화
|
|
sender = "02-2669-0082";
|
|
}else if("B".equals(sndFlag)) { // 기소유예
|
|
sender = "055-792-0223";
|
|
}
|
|
|
|
sms.put("sender", sender); // 발신번호
|
|
//sms.put("rdate", ""); // 예약일자 - 20161004 : 2016-10-04일기준
|
|
//sms.put("rtime", ""); // 예약시간 - 1930 : 오후 7시30분
|
|
//sms.put("testmode_yn", "Y"); // Y 인경우 실제문자 전송X , 자동취소(환불) 처리
|
|
sms.put("title", "교육운영관리시스템"); // LMS, MMS 제목 (미입력시 본문중 44Byte 또는 엔터 구분자 첫라인)
|
|
|
|
String image = "";
|
|
//image = "/tmp/pic_57f358af08cf7_sms_.jpg"; // MMS 이미지 파일 위치
|
|
|
|
/******************** 전송정보 ********************/
|
|
|
|
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
|
|
|
builder.setBoundary(boundary);
|
|
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
|
|
builder.setCharset(Charset.forName(encodingType));
|
|
|
|
for(Iterator<String> i = sms.keySet().iterator(); i.hasNext();){
|
|
String key = i.next();
|
|
builder.addTextBody(key, sms.get(key)
|
|
, ContentType.create("Multipart/related", encodingType));
|
|
}
|
|
|
|
File imageFile = new File(image);
|
|
if(image!=null && image.length()>0 && imageFile.exists()){
|
|
|
|
builder.addPart("image",
|
|
new FileBody(imageFile, ContentType.create("application/octet-stream"),
|
|
URLEncoder.encode(imageFile.getName(), encodingType)));
|
|
}
|
|
|
|
HttpEntity entity = builder.build();
|
|
|
|
HttpClient client = HttpClients.createDefault();
|
|
HttpPost post = new HttpPost(sms_url);
|
|
post.setEntity(entity);
|
|
|
|
HttpResponse res = client.execute(post);
|
|
|
|
|
|
if(res != null){
|
|
BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType));
|
|
String buffer = null;
|
|
while((buffer = in.readLine())!=null){
|
|
result += buffer;
|
|
}
|
|
in.close();
|
|
}
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
resultMap = objectMapper.readValue(result, new HashMap<String, Object>().getClass());
|
|
|
|
System.out.println(result);
|
|
|
|
}catch(Exception e){
|
|
System.out.println(e.getMessage());
|
|
}
|
|
|
|
return resultMap;
|
|
}
|
|
}
|
|
|