[kakao/알림톡] 카카오 알림톡(비즈톡) 연동 프로그래밍
2018.03.23 16:56 Edit
준비물
(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시간이면 끝날 작업을..... ㅂㄷㅂㄷ