File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<script type="text/javascript">
$(function(){
$("#selectKakaoProfileList").on("change", function(){
$("#selectTemplateList option").remove();
selectTemplateList();
});
$("#selectTemplateList").on("change", function(){
selectTemplateInfo($(this).val());
});
});
//등록된 발신 탬플릿 목록 조회
function selectTemplateList(){
var selectAgentCode = $("select[name='selectKakaoProfileList']").val();
$.ajax({
type: "POST"
, url: "/web/mjon/test/selectKakaoApiTemplateAjax.do"
, data:{ "senderKey":selectAgentCode, "pageType":"notityTalk"}
, dataType:'json'
, cache: false
, async: false
, timeout: 600000
, success: function (returnData, status) {
if(status == 'success'){
$("#selectTemplateList option").remove();
$("#selectTemplateList").append("<option value=''>선택하세요.</option>");
var list = returnData.kakaoTemplateList;
for(var i=0; i < list.templatList.length; i++){
$("#selectTemplateList").append("<option value='"+list.templatList[i].templateCode+"'>"+list.templatList[i].templateName+"</option>");
}
} else if(status== 'fail'){
alert("저장에 실패하였습니다. !!");
}
}
,error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
function selectTemplateInfo(id){
var selectAgentCode = $("select[name='selectKakaoProfileList']").val();
$.ajax({
type: "POST"
, url: "/web/mjon/test/selectKakaoApiTemplateInfoAjax.do"
, data:{"senderKey":selectAgentCode, "templateCode":id}
, dataType:'json'
, cache: false
, async: false
, timeout: 600000
, success: function (returnData, status) {
if(status == 'success'){
var info = returnData.kakaoTemplateInfo;
$("#templateInfo").show();
$("#templateCodeInfo").val(info.templateCode);
$("#templateContentInfo").val(info.templateContent);
$("#senderKeyInfo").val(selectAgentCode);
//엑셀 샘플 정보 - 내용만 변수처리하기
$("#excelTemplateContent").val(info.templateContent);
$("#excelTemplateSubtitle").val(info.templateSubtitle);
$("#excelTemplateTitle").val(info.templateTitle);
//변수 문자열 중복 제거
var content = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g);
var newList = Array.from(new Set(content));
document.bizForm.varNmList.value = newList;
} else if(status== 'fail'){
alert("저장에 실패하였습니다. !!");
}
}
,error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
//엑셀 업로드 양식 다운로드 받기
function excelDownload(){
var excelForm = document.excelForm;
var fullVarList = $("#excelTemplateContent").val().match(/(?<=\#\{)(.*?)(?=\})/g);
excelForm.excelVarNmList.value = fullVarList;
excelForm.action = "<c:url value='/web/mjon/test/kakaoApiNotityTalkSampleExcelDownload.do'/>";
excelForm.submit();
}
//엑셀 파일 불러오기
function excelExport() {
var files = document.getElementById('excelFile').files;
if(files.length==0){
alert("파일을 선택해주세요.");
return;
}
var filename = files[0].name;
var extension = filename.substring(filename.lastIndexOf(".")).toUpperCase();
if (extension == '.XLS' || extension == '.XLSX') {
excelFileToJSON(files[0]);
}else{
alert("엑셀 파일을 첨부해주세요.");
}
}
//엑셀 정보 json으로 변환
function excelFileToJSON(file){
try {
var reader = new FileReader();
reader.readAsBinaryString(file);
reader.onload = function(e) {
var data = e.target.result;
var workbook = XLSX.read(data, {
type : 'binary'
});
var result = {};
//첫번째 시트 정보 json으로 변환
var firstSheetName = workbook.SheetNames[0];
var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[firstSheetName]);
displayJsonToHtmlTable(jsonData);
}
}catch(e){
console.error(e);
}
}
//엑셀 json 정보 테이블로 그려주기
function displayJsonToHtmlTable(jsonData){
//합친 내용에서 변수 문자열 뽑기 - #과{}포함
var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g);
if(varList != null){
//맨 앞에 수신번호 배열 추가
varList.unshift('메시지 수신 휴대폰 번호');
}else{
//배열이 없으면 신규 생성
varList = ['메시지 수신 휴대폰 번호'];
}
//변수 문자열 중복 제거
var newList = Array.from(new Set(varList));
document.excelForm.excelVarNmList.value = newList;
var table=document.getElementById("excelTable");
var htmlData = "<tr>";
//헤더 그려주기
for(var x=0; x<newList.length; x++){
htmlData+='<th>'+newList[x]+'</th>'
}
htmlData+='</tr>'
if(jsonData.length>0){
for(var i=0; i<jsonData.length;i++){
htmlData+='<tr>'
for(var y=0; y<newList.length;y++){
var row=jsonData[i][newList[y]];
htmlData+='<th>'+row+'</th>'
}
htmlData+='</tr>'
}
htmlData+='</tr>'
table.innerHTML=htmlData;
}else{
table.innerHTML='엑셀을 다시 올려주세요.';
}
}
function sendExcelSetting(){
var varVal = "";
var tempVal = "";
var phoneNumVal = "";
var tempPhoneNumVal = "";
$('#excelTable').find('tr').each(function(prevIndex, item){
if(prevIndex !== 0){
$(item).find('th').each(function(index, item){
console.log('index :: ', index, ' || $(item).text() :: ', $(item).text());
if(index === 0){
tempPhoneNumVal = $(item).text();
}else if(index === 1){
tempVal = $(item).text();
}else{
tempVal += '§'+$(item).text();
}
});
if(varVal == ""){
varVal = tempVal;
}else{
varVal += ","+tempVal;
}
if(phoneNumVal == ""){
phoneNumVal = tempPhoneNumVal;
}else{
phoneNumVal += ","+tempPhoneNumVal;
}
tempVal = "";
tempPhoneNumVal = "";
}
});
if(varVal != ""){
// 치환문자 설정
bizForm.txtReplYn.value = "Y";
$('#varValList').val(varVal);
}else{
// 치환문자 설정
bizForm.txtReplYn.value = "N";
}
$('#callToList').val(phoneNumVal);
}
//등록된 발신 탬플릿 카카오톡 전송
function sendTemplateInfo(){
var senderKeyInfo = $("#senderKeyInfo").val();
var templateCodeInfo = $("#templateCodeInfo").val();
var templateContentInfo = $("#templateContentInfo").val();
var inputSendPhone = $("#inputSendPhone").val();
var inputDestPhone = $("#inputDestPhone").val();
var bizForm = document.bizForm;
bizForm.senderKey.value = senderKeyInfo;
bizForm.templateCode.value = templateCodeInfo;
bizForm.templateContent.value = templateContentInfo;
bizForm.callFrom.value = inputDestPhone;
// json 파일 생성여부 체크
bizForm.bizJsonYn.value = "N";
// 예약문자 설정
bizForm.reserveYn.value = "N";
// 대체문자 설정
var checkedYn = $('#inputSubMsgSendYn').is(':checked');
var inputSubMsgTxt = $("#inputSubMsgTxt").val();
if(checkedYn){
bizForm.subMsgSendYn.value = "Y";
bizForm.subMsgTxt.value = inputSubMsgTxt;
}else{
bizForm.subMsgSendYn.value = "N";
}
sendExcelSetting();
var data = new FormData(bizForm);
$.ajax({
type: "POST"
, url: "/web/mjon/test/kakaoNotityTalkSendAjax.do"
, data: data
, dataType: 'json'
, async: false
, processData: false
, contentType: false
, cache: false
, success: function (returnData, status) {
if(status == 'loginFail'){
alert(returnData.message);
return false;
}else if(status== 'fail'){
alert(returnData.message);
return false;
} else if(status == 'success'){
alert("기획은 언제쯤 나올까요 ?");
}
}
,error: function (e) {
console.log("ERROR : ", e);
alert("카카오 알림톡 전송에 실패하였습니다.");
}
});
}
</script>
<form id="excelForm" name="excelForm" method="post">
<input type="hidden" id="excelTemplateContent" name="excelTemplateContent" value="">
<input type="hidden" id="excelTemplateSubtitle" name="excelTemplateSubtitle" value="">
<input type="hidden" id="excelTemplateTitle" name="excelTemplateTitle" value="">
<input type="hidden" id="excelVarNmList" name="excelVarNmList" value="">
</form>
<form id="bizForm" name="bizForm" method="post">
<input type="hidden" id="senderKey" name="senderKey" value=""> <!-- 카카오 보내는 사람 Key -->
<input type="hidden" id="templateCode" name="templateCode" value=""> <!-- 카카오 전송 templat Code -->
<input type="hidden" id="templateContent" name="templateContent" value=""> <!-- 카카오 전송 templat내용 -->
<input type="hidden" id="callFrom" name="callFrom" value=""> <!-- 보내는사람 -->
<input type="hidden" id="subMsgSendYn" name="subMsgSendYn" value=""> <!-- 대체문자 전송여부 -->
<input type="hidden" id="subMsgTxt" name="subMsgTxt" value=""> <!-- 대체문자 전송내용 -->
<input type="hidden" id="txtReplYn" name="txtReplYn" value=""> <!-- 치환문자 여부 -->
<input type="hidden" id="bizJsonYn" name="bizJsonYn" value=""> <!-- JSON 생성 여부 -->
<input type="hidden" id="reserveYn" name="reserveYn" value=""> <!-- 예약문자 여부 -->
<input type="hidden" id="callToList" name="callToList" value=""> <!-- 받는사람 리스트-->
<input type="hidden" id="varNmList" name="varNmList" value=""> <!-- 변수 이름 리스트-->
<input type="hidden" id="varValList" name="varValList" value=""> <!-- 변수 값 리스트 -->
</form>
<!-- content 영역 -->
<div class="inner">
<!-- send top -->
<div class="send_top">
<!-- tab button -->
<ul class="tabType4">
<li class="tab"><button type="button" onclick="location.href='/web/mjon/test/selectSendCategoryView.do'">카카오톡 카테고리 등록</button></li>
<li class="tab"><button type="button" onclick="location.href='/web/mjon/test/selectSendTestView.do'">카카오톡 발신프로필 등록</button></li>
<li class="tab"><button type="button" onclick="location.href='/web/mjon/test/selectTemplateView.do'">카카오톡 템플릿 등록</button></li>
<li class="tab"><button type="button" onclick="location.href='/web/mjon/test/selectKakaoImageView.do'">카카오톡 친구톡 이미지 등록</button></li>
<li class="tab active"><button type="button" onclick="location.href='/web/mjon/test/kakaoApiNotityTalkView.do'">카카오톡 알림톡 전송</button></li>
<li class="tab"><button type="button" onclick="location.href='/web/mjon/test/kakaoApiNotityTalkViewWithExcel.do'">카카오톡 알림톡 엑셀 등록</button></li>
</ul>
<!--// tab button -->
<div class="serv_content current" id="tab5_5">
<div class="heading">
<h2>카카오톡 알림톡 전송화면</h2>
</div>
<div class="pay_cont current" id="tab1_1">
<p class="tType1_title">발신 프로필 정보 조회</p>
<table class="tType1">
<caption>카카오톡 발신프로필 등록</caption>
<colgroup>
<col style="width: 190px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="autoY">
<th scope="row">
카카오채널 ID
</th>
<td>
<label for="" class="채널ID 선택"></label>
<select class="list_selType1" id="selectKakaoProfileList" name="selectKakaoProfileList">
<option value="">채널ID 선택</option>
<c:forEach var="kakaoProfileInfo" items="${kakaoProfileList}" varStatus="status">
<option value="${kakaoProfileInfo.senderKey}"><c:out value='${kakaoProfileInfo.yellowId}'/></option>
</c:forEach>
</select>
</td>
</tr>
<tr class="autoY">
<th scope="row">
탬플릿 선택
</th>
<td>
<label for="" class="탬플릿 선택"></label>
<select class="list_selType1" id="selectTemplateList" name="selectTemplateList">
<option value="">선택하세요.</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="pay_cont current" id="templateInfo" style="display: none">
<p class="tType1_title">발신 템플릿 정보</p>
<table class="tType1">
<caption>발신 템플릿 정보</caption>
<colgroup>
<col style="width: 190px;">
<col style="width: 80%;">
</colgroup>
<tbody>
<tr class="autoY">
<th scope="row">
템플릿 코드
</th>
<td>
<input type="text" id="templateCodeInfo" readonly="readonly">
</td>
</tr>
<tr class="autoY">
<th scope="row">
템플릿 내용
</th>
<td>
<textarea id="templateContentInfo" readonly="readonly"></textarea>
</td>
</tr>
<tr class="autoY excelDownload">
<th scope="row">
<c:out value="\#{변수명} 설정 파일 다운로드"/>
</th>
<td>
<button type="button" class="excel_btn btnType" onclick="excelDownload();"><i class="downroad"></i>엑셀 다운로드</button>
</td>
</tr>
<tr class="autoY">
<th scope="row">
발신프로필키
</th>
<td>
<input type="text" id="senderKeyInfo" readonly="readonly">
</td>
</tr>
<tr class="autoY">
<th scope="row">
수신 전화번호
</th>
<td>
<input type="text" id="inputDestPhone">
</td>
</tr>
<tr class="autoY">
<th scope="row">
발신 전화번호
</th>
<td>
<input type="text" id="inputSendPhone">
</td>
</tr>
<tr class="autoY">
<th scope="row">
엑셀 업로드
</th>
<td>
<input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport(event); return false;"/>
</td>
</tr>
</tbody>
</table>
<table id="excelTable">
<tbody>
<tr>
<th>메시지 수신 휴대폰 번호</th>
<th>변수 A</th>
<th>변수 B</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<div style="text-align: center;">
<button type="button" class="btnType btnType16" onclick="sendTemplateInfo();">전송</button>
</div>
</div>
</div>
</div>
<!--// send top -->
</div>
<!--// send top -->