파이썬에서 알림톡을 보낼 수 있다는 사실 알고 계셨나요? 문자 발송 비용도 훨씬 저렴한 알림톡 서비스는 카카오에서 만든 주문,배송,결제 등 정보성 메시지를 보내 수 있는 템플릿형 카카오톡 비즈 메시지 입니다.
알림톡 발송 건당 비용은 대략 7.5원 정도이며, 일부 실행사들의 경우 초기 법인 번호 등록시 약 30만원의 크레딧을 무상으로 제공하기도 합니다.
대 CRM 마케팅 시대 알림톡 프로세스
알림톡 발송은 사용자의 특정 행동 (신청, 가입, 구독, 배송상태) 등을 트리거로 보낼 수 있게 의도된 자동화 메시지 입니다. 예를 들어서 회원가입이 완료되었다면 사용자가 회원가입을 완료하였음을 그리고 얻을 수 있는 혜택을 정리해주는 것을 알림톡으로 할 수 있죠.
이메일로도 하고 계신 기업들도 많겠지만 알림톡의 최대 강점은 바로 신속성과 높은 열람율에 있습니다. 한번쯤 여러분들도 카카오채널로 부터 메시지를 받아보신적이 있으실 텐데요. 최근에는 사용자와 빠른 상호작용을 위해 앱푸쉬도 많이 활용하지만 중요한 프로모션은 알림톡이나 친구톡을 발송하고 있는 추세 입니다.
- 발송 범위 문구 제한하기
- 광고성 메시지 피하기
- 혜택은 명확하게
- 버튼 잘 활용하기
- 명확한 설명 문구
이 정도만 지킨다면 정말 다양한 메세지를 조건에 맞춰 발송할 수 있는 강력한 기능들이 있습니다.
알림톡 발송의 3요소
알림톡 발송을 위해서는 카카오채널, 템플릿, 유저 전화번호 이렇게 3가지 요소가 필요합니다. 카카오채널은 ‘비즈니스 채널’이여야 하며 템플릿은 미리 등록되어야 합니다. 대부분 알림톡 발송업체의 고유 템플릿 번호가 존재하며 영업일 기준 검토받는데 2~3일은 생각해주어야 하죠.
템플릿을 허가 받았다면 사용자의 전화번호나 특정 값등을 통해 개인화된 알림톡도 보낼 수 있습니다. (구매 수량 등)
파이썬으로 알림톡 보내기 코드
먼저 가장 다수가 활용하고 있는 ‘알리고’에서 활용 가능한 코드 입니다.
# -*- coding: utf-8 -*-
import requests
import json
basic_send_url = 'https://kakaoapi.aligo.in/akv10/token/create/30/s/' # 요청을 던지는 URL, 현재는 토큰생성
# token/create/토큰 유효시간/{y(년)/m(월)/d(일)/h(시)/i(분)/s(초)}/
# ================================================================== 토큰 생성 필수 key값
# API key, userid
# API키, 알리고 사이트 아이디
sms_data={'apikey': 'xxxxxxxxxxxx', #api key
'userid': 'xxxxxxxxxxxx', # 알리고 사이트 아이디
}
create_token_response = requests.post(basic_send_url, data=sms_data)
print(create_token_response.json())
토큰을 받는 형식으로 되어 있으며, IP를 등록해서 획득하실 수 있습니다.
# -*- coding: utf-8 -*-
import requests
import json
basic_send_url = 'https://kakaoapi.aligo.in/akv10/profile/auth/' # 요청을 던지는 URL, 현재는 카카오채널 인증
# ================================================================== 채널인증 필수 key값
# API key, userid, token, plusid, phonenumber
# API키, 알리고 사이트 아이디, 토큰, 카카오채널 아이디, 관리자 핸드폰 번호
sms_data={'apikey': 'xxxxxxxxxxxx', #api key
'userid': 'xxxxxxxxxxxx', # 알리고 사이트 아이디
'token': 'xxxxxxxxxxxx', # 생성한 토큰
'plusid': 'xxxxxxxxxxxx', # 카카오채널 아이디(@포함)
'phonenumber': '01000000000' # 카카오채널 알림받는 관리자 핸드폰 번호
}
channel_auth_response = requests.post(basic_send_url, data=sms_data)
print(channel_auth_response.json())
입력받은 토큰으로는 이런식으로 프로필 열람요청을 할 수 있고, 저희에게 필요한 메시지 발송 코드 쪽을 볼까요?
# -*- coding: utf-8 -*-
import requests
import json
basic_send_url = 'https://kakaoapi.aligo.in/akv10/alimtalk/send/' # 요청을 던지는 URL, 알림톡 전송
# ================================================================== 알림톡 보낼 때 필수 key값
# API key, userid, token, senderkey, tpl_code, sender, receiver_1, subject_1, message_1
# API키, 알리고 사이트 아이디, 토큰, 발신프로파일 키, 템플릿 코드, 발신번호, 수신번호, 알림톡 제목, 알림톡 내용
#
# ================================================================== 알림톡 보낼 때 선택 key값
# senddate, recvname_1, button_1, failover, fsubject_1, fmessage_1, testMode
# 예약일, 수신자 이름, 버튼 정보, 실패시 대체문자 {전송여부/제목/내용}, 테스트 모드 적용 여부(기본N)
#
# -------------------------------------------------------------------------------------------------
# BUTTON
#
# name: 버튼명,
# linkType: 버튼 링크타입(DS:배송조회, WL:웹링크, AL:앱링크, BK:봇키워드, MD:메시지전달),
# linkTypeName : 버튼 링크 타입네임, ( 배송조회, 웹링크, 앱링크, 봇키워드, 메시지전달 중에서 1개)
# linkM: 모바일 웹링크주소(WL일 때 필수), linkP: PC웹링크 주소(WL일 때 필수),
# linkI: IOS앱링크 주소(AL일 때 필수), linkA: Android앱링크 주소(AL일 때 필수)
button_info = {'button': [{'name':'name', # 버튼명
'linkType':'WL', # DS, WL, AL, BK, MD
'linkTypeName' : '웹링크', # 배송조회, 웹링크, 앱링크, 봇키워드, 메시지전달 중에서 1개
#'linkM':'mobile link', # WL일 때 필수
#'linkP':'pc link', # WL일 때 필수
#'linkI': 'IOS app link', # AL일 때 필수
#'linkA': 'Android app link' # AL일 때 필수
}]}
''' 만약 button이 여러개이면, 'button'key의 value list에 버튼 개수만큼 dict를 추가해주시면 됩니다.
button_info = {'button': [{'name':'1번버튼', ~}, {'name':'2번버튼', ~}, {'name':~}]} '''
button_info = json.dumps(button_info) # button의 타입은 JSON 이어야 합니다.
sms_data={'apikey': 'xxxxxxxxxxxx', #api key
'userid': 'xxxxxxxxxxxx', # 알리고 사이트 아이디
'token': 'xxxxxxxxxxxx', # 생성한 토큰
'senderkey': 'xxxxxxxxxxxx', # 발신프로파일 키
'tpl_code': 'xxxxxxxxxxxx', # 템플릿 코드
'sender' : '01000000000', # 발신자 연락처,
#'senddate': '19000131120130', # YYYYMMDDHHmmss
'receiver_1': '01000000000', # 수신자 연락처
#'recvname_1': '홍길동1', # 수신자 이름
'subject_1': '알림톡 제목', # 알림톡 제목 - 수신자에게는 표기X
'message_1': '알림톡 내용', # 알림톡 내용 - 등록한 템플릿이랑 개행문자 포함 동일하게 입력.
'button_1': button_info, # 버튼 정보
#'failover': 'Y or N', # 실패시 대체문자 전송 여부(템플릿 신청시 대체문자 발송으로 설정하였더라도 Y로 입력해야합니다.)
#'fsubject_1': '대체문자 제목', # 실패시 대체문자 제목
#'fmessage_1': '대체문자 내용', # 실패시 대체문자 내용
#'testMode': 'Y or N' # 테스트 모드 적용여부(기본N), 실제 발송 X
}
alimtalk_send_response = requests.post(basic_send_url, data=sms_data)
print(alimtalk_send_response.json())
복잡해 보이지만 대부분 이런 방식으로 알림톡의 허가 받은 내용을 입력하여 보내도록 되어 있습니다. 전화번호는 [ ] 리스트 형태로 만들어 보내기만 하면 되죠.
알리고 이외에도 솔라피의 경우에는 웹 대시보드에서 바로 발송할 수 있는 구조로 되어 있기도 합니다.