카카오알림톡 - kth-apistore/docs GitHub Wiki

카카오 알림톡 API 사용자 가이드

1 범위(Scope)

  • 본 규격서는 HTTP 프로토콜을 기반으로 작성되었습니다.
  • 본 규격서는 Message 전송에 대한 규격을 정의하고 있습니다.  

2 개요

2.1 API 목록

종류 API 기능
발송 /kko/{v1}/msg/{client_id} 카카오 알림톡 발송 기능
결과조회 /kko/{v1}/report/{client_id} 결과 조회 기능
템플릿 조회 /kko/{v1}/template/list/{client_id} 등록된 템플릿 조회
발신번호 /kko/{v1}/sendnumber/save/{client_id} 발신번호 등록
발신번호 /kko/{v1}/sendnumber/list/{client_id} 등록된 발신번호 리스트 조회

2.2 인증

  • 구매 시 발급받은 Key의 코드값을 헤더 “x-waple-authorization”의 값으로 설정

x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ==

2.3 공통 정의 사항

Content-Type: application/x-www-form-urlencoded; charset=UTF-8 x-waple-authorization: MS0xMzY1NjY2MTAyDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ==

3 API 정의

3.1 카카오 알림톡 API

기본정보 / msg/{client_id} * 기능: 카카오 알림톡 전송 기능

Element Type Optional Description
PHONE String No 수신할 핸드폰번호
CALLBACK String Yes 발신자 전화번호(“-“제외/숫자만 입력) “01012345678”
REQDATE String Yes 발송시간(없을 경우 즉시발송)
“20130529171111”(2013-05-29-17:11:11)
MSG String No 전송할 메시지
(승인된 템플릿의 내용과 동일하게 작성)
TEMPLATE_CODE String No 카카오 알림톡 템플릿코드
FAILED_TYPE String No 카카오알림톡 전송 실패 시 전송할 메시지 타입 ( SMS, LMS, N(전송안함) )
FAILED_SUBJECT String Yes 카카오알림톡 전송 실패 시 전송할 제목
(SMS 미사용)
FAILED_MSG String Yes 카카오알림톡 전송 실패 시 전송할 내용
BTN_TYPES String No 카카오 알림톡 버튼타입 (웹링크, 앱링크, 봇키워드, 메시지전달, 배송조회), 최대 5개까지 추가 가능하며 타입별 콤마로 구분함.
(승인된 템플릿과 불일치시 전송실패)
BTN_TXTS String No 카카오 알림톡 버튼이름 (BNT_TYPES 입력 순으로 버튼이름 TEXT 입력, 승인된 템플릿과 불일치시 전송실패), TEXT별 콤마로 구분함.
(승인된 템플릿과 불일치시 전송실패)
BTN_URLS1 String No 알림톡 버튼링크주소 URL. 버튼 URL 버튼이2개 이상일 경우 콤마로 구분함.
웹링크, 앱링크는 URL이 필수이며, 기타(배송조회, 봇키워드, 메시지전달)은 null 값임.
(승인된 템플릿과 불일치시 전송실패)
BTN_URLS2 String No 알림톡 버튼링크주소 URL. 버튼 1개에 링크가2개인 경우 BTN_URLS2 파라미터 사용. 버튼이 2개 이상일 경우 콤마로 구분함.
(승인된 템플릿과 불일치시 전송실패)

FAILED_TYPE Element Type Optional Description result_code String No 처리 결과 코드 100 : User Error 200 : OK 300 : Parameter Error 301 : failed_type 이 "N" 이 아닌 경우에 실패SMS 제목과 내용이 없으면 에러 400 : Etc Error 500 : 발신번호 사전 등록제에 의한 미등록 차단 ( 3.4 발신번호 인증/등록 참조) 600 : 충전요금 부족 700 : 템플릿코드 사전 승인제에 의한 미승인 차단 800 : 템플릿코드에러 900 : 프로파일이 존재하지 않음 result_message String No 잔금 부족[미발송 목록] 01012345678 cmid String No 서버에서 생성한 request를 식별할 수 있는 유일한 키 사용 예제 REQUEST URL http://api.apistore.co.kr/kko/1/msg/{client_id} POST Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== Parameter PHONE=01011112222 CALLBACK=0211112222 MSG=테스트 TEMPLATE_CODE=A1111 FAILED_TYPE=LMS FAILED_SUBJECT=테스트 FAILED_MSG=테스트 BTN_TYPES=웹링크,웹링크 BTN_TXTS=홈페이지1,홈페이지2 BTN_URLS1= https://www.apistore1.co.kr, https://www.apistore2.co.kr

RESONSE

200 Access-Control-Allow-Origin Content-Type: application/json

{“result_code”:”200”,”cmid”:”2017052411064978”}

3.2 Report 조회 기본정보 /report/{client_id} * 기능: report 조회 기능

  • 방식: GET
  • 호출 URL: http://api.apistore.co.kr/kko/{v1}/report/{client_id} 요청 파라미터 Element Type Optional Description cmid(소문자) String No 서버에서 생성한 request를 식별할 수 있는 유일한 키 반환값 Element Type Optional Description STATUS String No 발송상태 1: 발송대기 2: 전송완료 3: 알림톡 결과수신완료 4: Failback 결과수신완료 PHONE String No 수신한 핸드폰번호 CALLBACK String No 발신자 전화번호 RSLT String Yes 카카오알림톡 결과수신 (6.1 Appendix Report Code 참조)

MSG_RSLT String Yes 카카오알림톡 실패 시 메시지 결과수신 (6.1 Appendix Report Code 참조)

사용 예제 REQUEST URL http://api.apistore.co.kr/kko/1/report/{client_id}?cmid=2017052411064978 GET Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== RESONSE

200 Access-Control-Allow-Origin: * Content-Type: application/json

{"PHONE":"01011112222","RSLT":"0","CALLBACK":"0232894122","MSG_RSLT":"00","STATUS":"3","CMID":"2017052411064978"} 3.3 Template 조회 기본정보 /template/list/{client_id} * 기능: template 조회 기능

  • 방식: GET
  • 호출 URL: http://api.apistore.co.kr/kko/{v1}/template/list/{client_id} 요청 파라미터 Element Type Optional Description TEMPLATE_CODE String Yes 템플릿코드 – 입력 안 할경우 전체 리스트 반환 STATUS String Yes 검수상태 – 입력 안 할경우 전체 리스트 반환 등록(1) / 검수요청(2) 승인(3) / 반려(4) / 승인중단(5) 반환값 Element Type Optional Description TEMPLATE_CODE String No 템플릿코드 TEMPLATE_NAME String No 템플릿명 TEMPLATE_MSG String No 템플릿 내용 STATUS String No 등록상태(등록,검수요청,승인,반려) BTNLIST String No 버튼 리스트 TEMPLATE_BTN_URL String No 버튼 URL TEMPLATE_BTN_NAME String No 버튼이름 TEMPLATE_BTN_TYPE String No 버튼 타입 사용 예제 REQUEST URL http://api.apistore.co.kr/kko/1/template/list/{client_id} GET Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== Parameter TEMPLATE_CODE=api123&status=1 RESONSE

200 Access-Control-Allow-Origin: * Content-Type: application/json

{"template_code”:”test1","template_name":"test1","template_msg":"메시지내용","status": "등록","btnList": "template_btn_url2": null,"template_btn_name": "홈페이지",template_btn_url":"https://www.apistore.co.kr","template_btn_type” :”웹링크”} 3.4 발신번호 인증/등록 기본정보 /sendnumber/save/{client_id} * 기능: 발신번호 인증/등록 API (apiVersion = 2)

comment String No 코멘트(200자) pintype String Yes 인증방법 (SMS. VMS(음성) 중 1개 선택) pincode String Yes 인증번호-인증번호 받은 후, pincode 파라미터 사용 (SMS 인증번호(6자리), VMS인증번호 (2자리)) 반환값 Element Type Optional Description result_code String No 처리 결과 코드 200 : 성공 300 : 파라메터 에러 400 : 인증 업데이트 중 에러 500 : 이미 등록된 번호 600 : 일치 하지 않는 인증번호 700 : 핀코드 인증 시간 만료(3분 이후 만료이며 재등록 요청해야 함.) sendnumber String No 등록한 번호 사용 예제 REQUEST <요청> URL http://api.apistore.co.kr/kko/2/sendnumber/save/{client_id} POST Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== Parameter sendnumber=0232894122&comment=케이티하이텔대표번호&pintype=SMS 또는 VMS(음성)

<인증> URL http://api.apistore.co.kr/kko/2/sendnumber/save/{client_id} POST Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== Parameter sendnumber=0232894122&comment=케이티하이텔대표번호&pintype=SMS&pincode=123456(6자리) (pintype=VMS 일 경우 pincode=12(2자리))

RESONSE [요청] 200 Access-Control-Allow-Origin: * Content-Type: application/json {"result_code":"200","sendnumber":"0232894122"}

[인증] 200 Access-Control-Allow-Origin: * Content-Type: application/json {"result_code":"200","sendnumber":"0232894122"} 3.5 발신번호 리스트 조회 기본정보 /sendnumber/list/{client_id} * 기능: list 조회 기능

  • 방식: GET
  • 호출 URL: http://api.apistore.co.kr/kko/{v1}/sendnumber/list/{client_id} 요청 파라미터 Element Type Optional Description sendnumber String Yes 발신번호(“-“제외) – 입력 안 할경우 전체 리스트 반환 반환값 Element Type Optional Description result_code String No 처리 결과 코드 100 : User Error 200 : OK 300 : Parameter Error 400 : Etc Error USE_YN : Y 값은 정상 등록된 번호. N 값은 요청 후 미인증 번호. client_id String No API스토어 계정 comment String No 등록 내용 sendnumber String No 등록한 번호 사용 예제 REQUEST URL http://api.apistore.co.kr/kko/1/sendnumber/list/{client_id} GET Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Header x-waple-authorization: MS0xMzY1NjY2MTAyNDk0LTA2MWE4ZDgyLTZhZmMtNGU5OS05YThkLTgyNmFmYzVlOTkzZQ== RESONSE 200 Access-Control-Allow-Origin: * Content-Type: application/json

{"result_code":"200" , “numberList": [{“client_id” : “{client_id}” , “comment” : null , “sendnumber":"0232892888"}, {“client_id” : “{client_id}” , “comment” : null , “sendnumber":"0212345678"} 4 Test Summary

  • TEST는 실제로 메시지 전송은 되지 않으며, 요청한 데이터에 대한 처리 결과만 확인 가능.
  • URL을 제외한 파라미터 및 리턴 데이터는 위와 동일. URL POST 카카오 알림톡 http://api.apistore.co.kr/kko/1/msg_test/{client_id}

5 발신번호 등록 규칙

  • 기본 : 8자리 ~ 11자리 발신번호
  • 유선 전화번호 : 지역 번호를 포함
  • 이동통신 전화번호
  • 대표 전화번호: 15xx, 16xx, 18xx(번호 앞에 지역번호 사용금지)

6 코드 및 메시지 정의 6.1 Appendix Report Code

RSLT

결과코드 코드 Description
0 SUCCESS 성공
1 INVALID_SENDER_KEY 발신 프로필 키가 유효하지않음
2 NOT_CONNECTED_USER 서버와 연결되어있지않은 사용자
5 ACK_TIMEOUT 메시지 발송 후 수신여부 불투명
6 RESPONSE_HISTORY_NOTFOUND 메시지 전송결과를 찾을 수 없음
8 NO_SEND_AVALIABLE_STATUS 메시지를 전송할 수 없는 상태
9 NO_VISIT_USER 최근 카카오톡을 미사용자
a E_INSUFFICIENT 건수 부족
b E_REJECT_ITER 전송 권한 없음
c E_DUP_KEY 중복된 키 접수 차단
d E_DUP_PHONE 중복된 수신번호 접수 차단
e E_SERVER_ERROR 서버 내부 에러
f E_FORMAT_ERR 메시지 포맷 에러
k MESSAGE_NOT_FOUND 메시지가존재하지않음
o E_TIMEOUT_AGENT TIME OUT 처리(Agent 내부)
p E_DUPLICATE_PHONE_MSG 메시지본문 중복 차단(Agent 내부)
t MESSAGE_EMPTY 메시지가비어있음
A NO_USER 카카오톡을 미사용자
B USER_BLOCKED_DELIVERY 알림톡 차단을 선택한 사용자
C SERIAL_NUMBER_DUPLICATED 메시지 일련번호 중복
D DUPLICATED 5초 이내 메시지 중복 발송
E UNSUPPORTED_CLIENT 미지원 클라이언트 버전
F ETC 기타 오류
H FAILED_TO_SEND_MESSAGE 카카오 시스템 오류
I INVALID_PHONE_NUMBER 전화번호 오류
J SAFETY_PHONE_NUMBER 050안심번호 발송불가
L MESSAGE_LENGTH_OVER_LIMIT 메시지 길이 제한 오류
M TEMPLATE_NOT_FOUND 템플릿을 찾을 수 없음
S SPAM 발신번호 검증 오류
U NO_MATCHED_TEMPLATE 메시지가 템플릿과 일치하지않음
V FAILED_TO_MATCH_TEMPLATE 메시지가 템플릿과 비교 실패

MSG_RSLT

결과코드 코드 Description
0 E_OK 성공
1 E_TIMEOUT 전송시간 초과
2 E_INVALID_PHONE 잘못된 전화번호/비가입자
5 E_NOT_ACK 통신사 결과 미수신
8 E_PHONE_BUSY 단말기 BUSY
9 E_SHADOW_REGION 음영지역
a E_INSUFFICIENT 건수 부족
b E_REJECT_ITER 전송 권한 없음
c E_DUP_KEY 중복된 키 접수 차단
d E_DUP_PHONE 중복된 수신번호 접수 차단
e E_SERVER_ERROR 서버 내부 에러
o E_TIMEOUT_AGENT TIME OUT 처리(Agent 내부) / 메시지 본문 중복 차단(Agent 내부)
p E_DUPLICATE_PHONE_MSG TIME OUT 처리(Agent 내부) / 메시지 본문 중복 차단(Agent 내부)
q E_DUPLICATE_KEY 메시지 중복키 체크(Agent 내부)
t E_TOGETHER_COUNT 잘못된 동보 전송 수신번호 리스트 / 카운트
A E_MSG_FULL 단말기 메시지 저장개수 초과
B E_SERVICE_STOP 단말기 일시 서비스 정지
C E_ETC_PHONE 기타 단말기 문제
D E_DENY 착신 거절
E E_POWER_OFF 전원 꺼짐
F E_ETC 기타
G E_INNER_FORMAT_ERR 내부 포맷 에러
H E_TELCO_FORMAT_ERR 통신사 포맷 에러
I E_UNACCEPTED_PHONE SMS/MMS 서비스 불가 단말기
J E_MSG_FAIL 착신 측 호 불가 상태
K E_TELCO_MSG_DEL 통신사에서 메시지 삭제 처리
L E_TELCO_QUE_FULL 통신사 메시지 처리 불가 상태
M E_WIRELESS_FAIL 무선망단 전송 실패
S E_SPAM 스팸
V E_CONTENTS_SIZE_ERR 컨텐츠 사이즈 초과
U E_CONTENTS_ERR 잘못된 컨텐츠