게시판 글 작성 시 서로 다른 내용의 알림톡을 서로 다른 사람에게 보내려고 합니다.
본문
안녕하세요.
발송킹이라는 알림톡 업체 API를 사용해서 게시판 글 등록 시
관리자와 작성자에게 서로 다른 내용의 알림톡을 발송하려고 합니다.
작성자가 글을 작성하면 관리자와 작성자에게 알림톡이 보내지긴 하는데
설정에 따라서 알림톡이 이중으로 가거나 한가지 내용만 보내집니다.
아래 3개의 소스가 있는데
1은 발송킹 제공 API이고
2처럼 수정하면 글 작성 시 관리자와 작성자에게 알림톡이 오긴 하는데 둘 다 내용이 작성자 관련 알림톡으로만 발송됩니다.
3처럼 수정하면 작성자에게 작성자 관련 알림톡이 오는데 관리자에게 관리자 관련 알림톡 + 작성자 관련 알림톡 이렇게 2개가 동시에 옵니다.
문자를 이용할때는 이런식으로 해도 원하는대로 발송이 되었는데 이건 안되네요.
혹시 어디를 수정하면 제가 원하는 대로 알림톡이 각각 발송되는지 아시는 분 계시면 도움 좀 부탁드립니다.
감사합니다.
1.
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['UserID'] = 'TESTID'; // 사용자 계정
$Post_Data['UserPW'] = 'TESTPW'; // 사용자 암호
$Post_Data['Service'] = 'ATALK'; // ATALK 기입
$Post_Data['Type'] = 'Send'; // Send 기입
$Post_Data['Template_Seq'] = '250'; // 템플릿 고유번호
$Post_Data['Fail_To'] = 'LMS'; // 알림톡 실패 시 문자로 전환 발송 (빈값:전환발송 안함, SMS:단문으로 발송, LMS:장문으로 발송)
$Post_Data['Send_Date'] = ''; // 발송시각 - 미입력 시 즉시발송, 예약 날짜형식) YYYY-MM-DD HH:NN
$Post_Data['Callback'] = '*** 개인정보보호를 위한 전화번호 노출방지 ***'; // 발신번호
$Post_Data['Subject'] = 'API 알림톡 발송 테스트 예제입니다.'; // 발송 제목
$Post_Data['Main_Text'] = 'API 알림톡 발송 테스트 예제\n\n기본 내용입니다.'; // 기본 내용
$Post_Data['Fail_To_Main_Text'] = '#{이름}님 안녕하세요.....'; // 문자로 전환 발송 시 내용, 전환발송 시 필수
$Post_Data['Fail_To_Template'] = 1; // 문자로 전환 발송 시 Fail_To_Main_Text 값 대신 템플릿 내용으로 발송, 0:Fail_To_Main_Text 값으로 발송, 1:템플릿 내용으로 발송
// 수신처 정보 추가
$Dest[] = Array("Company" => "발송킹1", "Name" => "수신자1", "Phone" => "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***",
"Replace_Datas" => Array(
Array("Key" => "#{이름}", "Value" => "홍길동"),
Array("Key" => "#{이용년월}", "Value" => "2020년 01월")
)
);
// PHP 버전에 따른 JSON 변환 시 한글처리
$phpVersion = substr(phpversion(), 0, 3) * 1;
if ( $phpVersion >= 5.4 ) {
$Destination = json_encode($Dest, JSON_UNESCAPED_UNICODE);
} else {
function han($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
$Destination = to_han(json_encode($Dest));
}
$Post_Data["Destination"] = $Destination;
// CURL 시작
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://balsongking.com/Linkage/API/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Post_Data);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($ch) . ", curl_errno " . curl_errno($ch));
}
curl_close($ch);
$jsonDecodeArr = json_decode($response, true); // json문자를 PHP 배열로 변환
if ( $jsonDecodeArr['Result'] != 'OK' ) { //발송 실패 시
echo iconv("UTF-8", "EUC-KR", $jsonDecodeArr['Message']);
exit;
}
$resultTh = "접수번호";
$resultTd = $jsonDecodeArr['Job_No'];
2.
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['UserID'] = 'TESTID'; // 사용자 계정
$Post_Data['UserPW'] = 'TESTPW'; // 사용자 암호
$Post_Data['Service'] = 'ATALK'; // ATALK 기입
$Post_Data['Type'] = 'Send'; // Send 기입
$Post_Data['Callback'] = '*** 개인정보보호를 위한 전화번호 노출방지 ***'; // 발신번호
$Post_Data['Send_Date'] = ''; // 발송시각 - 미입력 시 즉시발송, 예약 날짜형식) YYYY-MM-DD HH:NN
$Post_Data['Fail_To_Template'] = 1; // 문자로 전환 발송 시 Fail_To_Main_Text 값 대신 템플릿 내용으로 발송, 0:Fail_To_Main_Text 값으로 발송, 1:템플릿 내용으로 발송
if( $w=="" && !$is_admin ) {
// 글등록시 관리자에게 발송 //
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['Template_Seq'] = '250'; // 템플릿 고유번호
$Post_Data['Fail_To'] = 'LMS'; // 알림톡 실패 시 문자로 전환 발송 (빈값:전환발송 안함, SMS:단문으로 발송, LMS:장문으로 발송)
$Post_Data['Subject'] = '관리자에게'; // 발송 제목
$Post_Data['Main_Text'] = '관리자에게 보내는 내용'; // 기본 내용
// 수신처 정보 추가
$Dest[] = Array("Company" => "회사명", "Name" => "관리자", "Phone" => "관리자전화번호",
"Replace_Datas" => Array(
Array("Key" => "#{이름}", "Value" => ""),
Array("Key" => "#{내용}", "Value" => "")
)
);
// 글등록시 작성자에게 발송 //
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['Template_Seq'] = '251'; // 템플릿 고유번호
$Post_Data['Fail_To'] = 'LMS'; // 알림톡 실패 시 문자로 전환 발송 (빈값:전환발송 안함, SMS:단문으로 발송, LMS:장문으로 발송)
$Post_Data['Subject'] = '작성자에게'; // 발송 제목
$Post_Data['Main_Text'] = '작성자에게 보내는 내용'; // 기본 내용
// 수신처 정보 추가
$Dest[] = Array("Company" => "회사명", "Name" => "작성자", "Phone" => "작성자전화번호",
"Replace_Datas" => Array(
Array("Key" => "#{이름}", "Value" => ""),
Array("Key" => "#{내용}", "Value" => "")
)
);
}
// PHP 버전에 따른 JSON 변환 시 한글처리
$phpVersion = substr(phpversion(), 0, 3) * 1;
if ( $phpVersion >= 5.4 ) {
$Destination = json_encode($Dest, JSON_UNESCAPED_UNICODE);
} else {
function han($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
$Destination = to_han(json_encode($Dest));
}
$Post_Data["Destination"] = $Destination;
// CURL 시작
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://balsongking.com/Linkage/API/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Post_Data);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($ch) . ", curl_errno " . curl_errno($ch));
}
curl_close($ch);
$jsonDecodeArr = json_decode($response, true); // json문자를 PHP 배열로 변환
if ( $jsonDecodeArr['Result'] != 'OK' ) { //발송 실패 시
echo iconv("UTF-8", "EUC-KR", $jsonDecodeArr['Message']);
exit;
}
$resultTh = "접수번호";
$resultTd = $jsonDecodeArr['Job_No'];
3.
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['UserID'] = 'TESTID'; // 사용자 계정
$Post_Data['UserPW'] = 'TESTPW'; // 사용자 암호
$Post_Data['Service'] = 'ATALK'; // ATALK 기입
$Post_Data['Type'] = 'Send'; // Send 기입
$Post_Data['Callback'] = '*** 개인정보보호를 위한 전화번호 노출방지 ***'; // 발신번호
$Post_Data['Send_Date'] = ''; // 발송시각 - 미입력 시 즉시발송, 예약 날짜형식) YYYY-MM-DD HH:NN
$Post_Data['Fail_To_Template'] = 1; // 문자로 전환 발송 시 Fail_To_Main_Text 값 대신 템플릿 내용으로 발송, 0:Fail_To_Main_Text 값으로 발송, 1:템플릿 내용으로 발송
if( $w=="" && !$is_admin ) {
// 글등록시 관리자에게 발송 //
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['Template_Seq'] = '250'; // 템플릿 고유번호
$Post_Data['Fail_To'] = 'LMS'; // 알림톡 실패 시 문자로 전환 발송 (빈값:전환발송 안함, SMS:단문으로 발송, LMS:장문으로 발송)
$Post_Data['Subject'] = '관리자에게'; // 발송 제목
$Post_Data['Main_Text'] = '관리자에게 보내는 내용'; // 기본 내용
// 수신처 정보 추가
$Dest[] = Array("Company" => "회사명", "Name" => "관리자", "Phone" => "관리자전화번호",
"Replace_Datas" => Array(
Array("Key" => "#{이름}", "Value" => ""),
Array("Key" => "#{내용}", "Value" => "")
)
);
// PHP 버전에 따른 JSON 변환 시 한글처리
$phpVersion = substr(phpversion(), 0, 3) * 1;
if ( $phpVersion >= 5.4 ) {
$Destination = json_encode($Dest, JSON_UNESCAPED_UNICODE);
} else {
function han($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
$Destination = to_han(json_encode($Dest));
}
$Post_Data["Destination"] = $Destination;
// CURL 시작
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://balsongking.com/Linkage/API/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Post_Data);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($ch) . ", curl_errno " . curl_errno($ch));
}
curl_close($ch);
$jsonDecodeArr = json_decode($response, true); // json문자를 PHP 배열로 변환
if ( $jsonDecodeArr['Result'] != 'OK' ) { //발송 실패 시
echo iconv("UTF-8", "EUC-KR", $jsonDecodeArr['Message']);
exit;
}
$resultTh = "접수번호";
$resultTd = $jsonDecodeArr['Job_No'];
// 글등록시 작성자에게 발송 //
// 요청변수 설정 (변수 및 값 대소문자 구분)
$Post_Data['Template_Seq'] = '251'; // 템플릿 고유번호
$Post_Data['Fail_To'] = 'LMS'; // 알림톡 실패 시 문자로 전환 발송 (빈값:전환발송 안함, SMS:단문으로 발송, LMS:장문으로 발송)
$Post_Data['Subject'] = '작성자에게'; // 발송 제목
$Post_Data['Main_Text'] = '작성자에게 보내는 내용'; // 기본 내용
// 수신처 정보 추가
$Dest[] = Array("Company" => "회사명", "Name" => "작성자", "Phone" => "작성자전화번호",
"Replace_Datas" => Array(
Array("Key" => "#{이름}", "Value" => ""),
Array("Key" => "#{내용}", "Value" => "")
)
);
// PHP 버전에 따른 JSON 변환 시 한글처리
$phpVersion = substr(phpversion(), 0, 3) * 1;
if ( $phpVersion >= 5.4 ) {
$Destination = json_encode($Dest, JSON_UNESCAPED_UNICODE);
} else {
function han($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
$Destination = to_han(json_encode($Dest));
}
$Post_Data["Destination"] = $Destination;
// CURL 시작
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://balsongking.com/Linkage/API/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Post_Data);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($ch) . ", curl_errno " . curl_errno($ch));
}
curl_close($ch);
$jsonDecodeArr = json_decode($response, true); // json문자를 PHP 배열로 변환
if ( $jsonDecodeArr['Result'] != 'OK' ) { //발송 실패 시
echo iconv("UTF-8", "EUC-KR", $jsonDecodeArr['Message']);
exit;
}
$resultTh = "접수번호";
$resultTd = $jsonDecodeArr['Job_No'];
}
답변 1
저의 메모리 공간이 작아서,
님의 긴 코드와 수많은 설명, 특정 전문성 요구에 대한 작업 공간이 부족함을 느낍니다.
발송킹(API)의 공식 지원 채널을 적극적으로 활용하시어,
API 연동 방법의 문제로부터 시작하시는 것이 더 효과적일 수 있습니다.
답변을 작성하시기 전에 로그인 해주세요.