[kakao/알림톡] 카카오 알림톡(비즈톡) 연동 프로그래밍

준비물

 

(1) 카카오알림톡 대행업체선정

(2) 대행업체 선정후 모듈/메뉴얼 전달받기.

(3) 카카오비즈톡 템플릿 등록 / 승인 받기.

(4) 메뉴얼 보기.

 

카카오 알림톡은 미리 템플릿을 등록하여 승인이 되어야 진행할수있다.

필자는 cjmplace 대행사로 진행했습니다.

CJmplaceAgent 4.0 / centos7.0 기준입니다.

1. 모듈 셋팅후 서버에 띄우기

1-1 conf/cjagent.conf 수정하기

####################################################################
#
# CJAgent Config File
#
####################################################################
#
# Host Info
#
kko_ip=카카오게이트ip
kko_port=카카오게이트포트
kko_id=알림톡계약id
kko_pwd=알림톡계약pw

sms_ip=카카오게이트ip
sms_port=카카오게이트포트
sms_id=알림톡실패시 sms 로보낼 계약id
sms_pwd=알림톡실패시 sms 로보낼 계약wp

kakaokey=카카오_프로필_키

####################################################################
# 데이터베이스 유형(db_name)
# ORACLE, MSSQL, MYSQL, SYBASE, DB2, INFOMIX
#
# database driver
#

db_name=MYSQL
db_driver=com.mysql.jdbc.Driver
db_url=jdbc:mysql://192.168.0.2:3306/DB스키마?useUnicode=true&characterEncoding=UTF-8
db_sql=sql_mysql.sql

####################################################################
# 데이터베이스 CharSet(db_charset)
# MSSQL, ORACLE, MYSQL, SYBASE, DB2, INFOMIX 공통사용
# DBMS에 설정된 CharSet으로 설정한다.
# DBMS마다 euckr, euc_kr, eucksc 으로 명칭이 틀릴경우 EUC-KR로 사용.
db_charset=EUC-KR

####################################################################
# 데이터베이스의 계정설정(테이블생성권한필요함)
# MSSQL, ORACLE, MYSQL, SYBASE, DB2 공통사용
#
db_userid=DB아이디
db_password=DB비밀번호

sms_status_1=1
sms_status_2=2
sms_status_3=3
sms_status_6=6

mms_status_1=1
mms_status_2=2
mms_status_3=3
mms_status_6=6

kko_status_1=1
kko_status_2=2
kko_status_3=3
kko_status_6=6
kko_status_4=4


#max_activesocket=5

..
...
....
.....

 

1-2 cjstart.sh 수정하기

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64(자바path)

CJAGENT_HOME=/home/www/cjagent(cj모듈위치)

CJAGENT_NAMES=cjmplaceagent.jar(cj모듈위치 속에 jar파일위치)

if [ $# == 0 ]
    then echo "Usage: cjstart.sh [start | stop | list | version]"; exit;
fi

# csh일 경우 setenv LANG ko_KR.eucKR, AIX의 경우 ko_KR.IBM-eucKR
export LANG=ko_KR.eucKR

CJAGENT_HOME_LIST=`ls -al  | grep 'cjagent0' | awk '{print $9}'`

....
.....
......
.......

 

1-3 cjstart.sh 프로세스 기동

/* 서비스 시작 */
UNIX:cjagent/ > ./cjstart.sh start 

/* 서비스 종료 */
UNIX:cjagent/ > ./cjstart.sh stop

/* 서비스 기동여부 */
UNIX:cjagent/ > ./cjstart.sh list

 

실행이 완료되면 알림톡 관련 db가 자동으로 생성된다.

 

2. 알림톡 구현

/**
 * 카카오 알림톡 발송
 * @param $ph
 * @param $subject
 * @param $msg
 * @param $kka_msg
 * @param $template_code
 * @param string $type
 * @return bool
 */
function send_kko($ph, $subject, $msg, $kko_msg='', $template_code, $kko_type='button', $msg_type='SMS') {
    if( empty( $ph ) || empty( $msg ) || empty( $template_code ) ) {
        return false;
    }

    $CI = &get_instance();

    $ph = number_only( $ph ); // 수신번호 숫자인지 체크
    $subject = $CI->db->escape_str( $subject ); // 제목이스케이프
    $msg = $CI->db->escape_str( $msg ); // 내용이스케이프
    $reqdate = current_datetime( true ); // 보낼시간 형식(Y-m-d H:i:s)

    if( $kko_type == 'web' ) {

        $sql = "
            INSERT INTO KKO_MSG 
                (REQDATE,   STATUS,   PHONE,   CALLBACK, MSG,   template_code,   failed_type,   failed_subject,   failed_msg) 
            VALUES 
                ('$reqdate', '1', '$ph', '발신번호', '$kko_msg', '$template_code', '$msg_type', '$subject', '$msg'); 
        ";

    } else if( $kko_type == 'button' ) {

        $sql = "
            INSERT INTO KKO_MSG 
                (REQDATE,   STATUS,   PHONE,   CALLBACK, BUTTON_JSON, MSG,   template_code,   failed_type,   failed_subject,   failed_msg) 
            VALUES 
                ('$reqdate', '1', '$ph', '발신번호', '$kko_msg', '$msg', '$template_code', '$msg_type', '$subject', '$msg'); 
        ";

    }

    $CI->db->query( $sql );
    //echo $CI->db->last_query();
}


$alimtalk_name = '회원가입 완료';
$kko_msg = '{"button":[{"name":"버튼명","type":"WL","url_pc":"버튼링크", "url_mobile":"버튼링크"}]}';
$sms_msg = "안녕하세요 ".$rowMember->name." 고객님 쇼핑몰 회원가입을 진심으로 축하드립니다.";

send_kko($userTel, $alimtalk_name, $sms_msg, $kko_msg, '템플릿코드', 'button', 'LMS');
 

 

3. 알림톡 통신원리 설명

DB에 insert가 되면 그 값을 인지해서 모듈에서 cj쪽으로 내용을 전달해서 cj서버에서 직접 카카오 서버측으로 연동하는 구조.......

몰라서 삽질 3일.... 알면 1시간이면 끝날 작업을..... ㅂㄷㅂㄷ

Tag :

Leave Comments