아이코드 토큰키 기반 그누보드 SMS/LMS 자동 발송 모듈 연동 가이드
페이지 정보

본문
아이코드 토큰키 기반 그누보드 SMS/LMS 자동 발송 모듈 연동 가이드
1. SMS 서버 접속 초기화 (
2. 발송 패킷 생성 (
3. 소켓 통신을 통한 전송 및 결과 수신 (
그누보드 운영 환경에서 아이코드 토큰키를 활용해 SMS 및 LMS 문자 자동 발송 기능을 구현할 때 필요한 설정 파일 구성, 컴포넌트 클래스 연동, 그리고 전송 오류 코드별 대응 방법을 안내합니다.
아이코드 토큰키 기반 sms.db.php 환경 설정 구성 방법
아이코드 SMS/LMS 자동 발송 모듈 연동을 위한 설정 파일(sms.db.php)은 데이터베이스 접속 정보와 아이코드 서버 연동에 필요한 토큰키 및 포트 정보를 정의합니다. PHP v3.1.2 b26 기준 설정 파일의 구성 항목은 다음과 같습니다.
설정 파일 주요 항목
- 데이터베이스 연결 설정:
$mysql_host에 데이터베이스 서버 주소(localhost),$mysql_user에 접속 아이디,$mysql_password에 비밀번호,$mysql_db에 데이터베이스 명을 입력합니다. 그누보드5 환경에서는 그누보드 설정(_common.php및G5_MYSQL_*상수)을 활용할 수 있습니다. - 발송 내역 테이블 정의: 문자발송 내역을 저장할
$sms_table(sms_list)과 관리자 로그인 내역을 저장할$sms_admin_table(sms_adm)을 지정합니다. - 아이코드 서버 및 토큰키 설정:
$icode_server에는 SMS 서버 주소(211.172.232.124),$icode_key에는 발급받은 아이코드 발송전용 토큰키,$icode_port에는 토큰키 사용 시 포트(9201)를 각각 설정합니다. - 발신 및 수신번호 설정: 기본 발신번호와 수신번호(
$send_hp_mb,$recv_hp_mb)를 지정하며,$client_ip변수를 통해 클라이언트의 IP 주소를 확인 및 파싱합니다.
SMS 컴포넌트 클래스(sms.component.php) 패킷 생성 및 전송 처리 방식
sms.component.php 파일에 정의된 SMS 클래스는 아이코드 SMS 서버와의 접속, 패킷 생성, 문자 발송 및 결과 수신을 담당하는 메인 클래스입니다.
1. SMS 서버 접속 초기화 (SMS_con)
SMS_con($host, $port, $key)메서드를 통해 소켓 통신에 사용할 서버 호스트 주소, 포트 번호, 그리고 아이코드 발송 전용 토큰키를 설정합니다.
2. 발송 패킷 생성 (Add)
Add($strTelList, $strCallBack, $strData, $strSubject='', $strDate='')메서드는 수신번호 목록, 발신번호(회신번호), 메시지 내용, LMS 제목, 예약 일자 등을 전달받아 전송용 패킷을 구성합니다.- 문자 타입 판별: 전달받은 메시지 내용(
$strData)의 길이에 따라 단문(SMS)과 장문(LMS) 타입을 설정합니다. 글자 수가 90자를 초과하면 LMS(값: 1), 이하는 SMS(값: 0)로 지정하며, SMS일 경우 제목은 빈 값으로 처리합니다. - 글자 수 및 포맷 정제: 회신번호는 최대 12글자, LMS 제목은 UTF-8 기준 최대 30자, 본문은 최대 2000자로 길이를 제한 및 조절합니다. 또한 메시지 내 개행 문자를 표준화("n")합니다.
- 패킷 패딩: 수신번호 배열(
$strTelList)을 순회하며 각 건별로 토큰키(key), 수신번호(tel), 회신번호(cb), 메시지(msg), 제목(title, 옵션), 예약일자(date, 옵션)를 포함한 JSON 데이터를 생성합니다. 생성된 JSON 문자열의 길이를 측정하여 앞에 식별자(06)와 4자리 길이 패딩을 붙인 후 내부 데이터 배열($this->Data[])에 적재합니다.
3. 소켓 통신을 통한 전송 및 결과 수신 (Send)
Send()메서드는fsockopen함수를 사용하여 설정된 소켓 호스트와 포트로 서버 접속을 시도합니다.- 통신이 연결되면 배열에 담겨 있던 전송 패킷들을 순차적으로 서버에 전송(
fputs)하고, 서버로부터 응답(fgets)을 수신하여 결과 코드와 대상 번호를 파악합니다. - 응답 결과 코드가
00(전송 완료) 또는17(접수/발송 대기)인 경우 성공 결과 배열($this->Result[])에 기록하고, 그 외 에러 코드인 경우 에러 내용과 함께 결과를 기록한 뒤 처리를 분기합니다.
문자 발송 스크립트(sms_send.php)의 발신번호 정제 및 에러 코드 분기 처리
문자 발송 스크립트인 sms_send.php에서는 발신번호와 수신번호에 포함된 하이픈(-)을 제거하여 번호를 정제한 뒤 전송을 시도합니다. 발송 결과 반환된 에러 코드에 따라 분기 처리를 수행하여 실패 원인을 파악하고 대응할 수 있습니다.
1. 발신번호 및 수신번호 정제
sms_send.php 파일 내부에서 설정 파일에 정의된 변수의 하이픈을 제거하는 방식으로 번호를 정제합니다.
$send_number = str_replace("-","",$send_hp_mb); // 발신번호 하이픈 제거
$recv_number = str_replace("-","",$recv_hp_mb); // 수신번호 하이픈 제거
2. 서버 응답 에러 코드 분기 처리
SMS 서버와의 통신 결과로 수신한 결과값에서 에러 코드를 추출하여 switch 문을 통해 각 오류 상황별로 분기 처리합니다.
23: 데이터 오류, 전송날짜오류, 발신번호미등록 (데이터를 다시 확인해 주시기 바랍니다.)85: 발신번호 미등록 (등록되지 않는 발송번호 입니다.)87: 인증 실패 ((정액제-계약확인)인증 받지 못하였습니다.)88: 연동모듈 발송 불가 (연동모듈 사용이 불가능합니다. 아이코드로 문의하세요.)96: 토큰 검사 실패 (사용할 수 없는 토큰키입니다.)97: 잔여코인 부족 (잔여코인이 부족합니다.)98: 사용기간 만료 (사용기간이 만료되었습니다.)99: 인증 실패 (서비스 사용이 불가능합니다. 아이코드로 문의하세요.)- 기타/디폴트: 위 코드에 해당하지 않는 경우 (
알 수 없는 오류로 전송이 실패하였습니다.)
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 alertclose 함수를 이용한 알림 메시지 출력 및 창 닫기 26.10.10
- 다음글MySQL과 PHP 환경에서의 비밀번호 해시 함수 취약점 분석 및 보안 강화 가이드 26.10.08
댓글목록
등록된 댓글이 없습니다.