BOARD

자료·레퍼런스

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 9회 작성일 26-10-08 16:34

본문

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

그누보드 운영 환경에서 아이코드 토큰키를 활용해 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: 인증 실패 (서비스 사용이 불가능합니다. 아이코드로 문의하세요.)
  • 기타/디폴트: 위 코드에 해당하지 않는 경우 (알 수 없는 오류로 전송이 실패하였습니다.)

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.