카카오톡 알림톡을 활용한 고객센터 운영
알림톡은 유저가 카카오톡에 가입만 되어 있다면 발송됩니다. 비즈니스 채널을 친구 추가했는지의 여부는 상관없이 강제로 메세지를 발송합니다. 때문에 정보성 메세지만 전송 가능합니다.
보통 카카오톡 문의 => 알림톡 => 친구 추천을 유도 => 친구톡 순서로 유도합니다.
1. 우선 사업자 등록 먼저 하십쇼
우선 개인 사업자, 혹은 법인을 설립한 뒤, 채널 회원가입, 채널개설, 비즈니스 인증를 다 받아놓고
비즈 메세지를 제공해줄 업체와 컨택해야 합니다.
저희는 BIZTALK이란 업체와 계약했습니다.
2. 업체에서 제공한 문서를 참고하여 테스트 요청을 날려봅시다.
각 업체마다 엔드포인트를 제공할테니 날려보면 되겠습니다.
보통 ip를 등록한 환경에서만 사용 가능하므로 서비스하는 서버에 접속하여 cURL을 날려보면서 살펴보고 코딩을 하면 되시겠습니다.
주의할 점으론 cURL을 쓸 때마다 느끼는 거지만 리눅스 상의 ', "와 맥/윈도우 상의 ', "가 달라서 고생하는 경우가 있습니다.
외부에서 작성한 다음 복붙하지 마시고 리눅스 상에서 작성하시는게 마음이 편합니다.
3. 토큰 어케 저장하고 어떻게 날릴거임? => cron ㄱㄱ
(1) node-cron으로 6시간 간격으로 토큰을 받아오는 요청을 날려 DB에 저장한다.(DB가 싫다면 로컬 환경에 그냥 저장해도 된다)
뭐 시간은 업체에서 만료 시간을 얼마나 주는지, 혹은 보안을 위해 어느 간격으로 만료 시키는지에 따라 다르긴 합니다.
중요한 점은 토큰 만료 시간보다 재확인 부분을 짧게 가져가야 토큰이 만료되어 메세지 전송이 실패하는 경우를 방지할 수 있습니다.
(2) 특정 이벤트에 의하여 알림톡이 트리거 되면 DB에서 토큰을 받아와 파라미터로 넘겨 알림톡 전송을 수행하면 되겠습니다.
private kakaoBizMsgGetTokenCron() {
// 우선 한 번 실행하고
axios.post('yourdomain end point');
// 다음부터 cronjob을 실행함
cron.schedule('0 */6 * * *', async () => {
axios.post('yourdomain end point');
});
}
근데 아무리봐도 토큰을 프론트에서 저장하는 건 보안상 미친짓이고, 서버 사이드에서만 다루는 것은 확실히 맞습니다.
딱히 저장해둘 곳이 DB밖에 없어서 여기에 저장해두긴했습니다만, 생각해보면 일반 file 처럼 저장한 후에 읽어와서 사용해도 될 것 같긴 합니다. 그런데 매번 메시지 보낼때마다 적긴 하지만 file read를 해야 한다?
글쎄용... DB 조회와 file Read의 비용이 얼마나 차이가 나는지 알아야 답할 수 있는 문제같습니다.
혹시 더 좋은 방법 있으시면 알려주세요.