이전 블로그에서 글 옮김
이번에 알림톡을 이용해서 휴대폰 인증번호를 보내는 기능을 구현하기 위해 찾아보다 네이버 NCP(Naver Cloud Platform)을 이용해 알림톡 보내기가 가능하다 해서 작업해봤습니다.
카카오 비즈니스에 따르면 알림톡 기능을 이용하기 위해서는 공식 딜러사를 통해 이용하도록 되어 있습니다.
저는 이 과정을 거치기엔 시간이 부족했기 때문에 바로 적용이 가능한 NCP를 이용했습니다.
NCP를 이용해서 알림톡을 보내기 위해서는 선행되어야 할 조건이 하나 있습니다.
회사의 카카오톡 비즈니스 채널 계정이 있어야 한다.
이 글은 이미 비즈니스 채널 계정이 존재한다는 가정하에 쓰는 것입니다.
먼저, NCP 가입을 한 다음 알림톡을 보내기 위해 Simple & Easy Notification Service
라는 서비스를 이용해야 합니다.
좌측 사이드바에 Products & Services
메뉴에서 찾아보실 수 있습니다.
Simple & Easy Notification Service
서비스에 들어가시면 먼저 해야할 것이 프로젝트 생성
입니다.
아래 이미지와 같이 카카오 알림톡 서비스를 이용하기 위한 서비스 Type은 Biz Message
를 선택하시고 프로젝트명을 적어주시면 됩니다.
프로젝트 생성이 완료되면 서비스의 ID와 Secret Key를 확인할 수 있습니다.
그리고 API 사용을 위해 API 키를 생성해야 합니다. API 키를 생성하기 위해선 오른쪽 상단의 프로필 아이콘 클릭 후 계정 관리 -> 인증키 관리에서 생성하실 수 있습니다.
API키 까지 생성하셨다면 다음으로 넘어가겠습니다.
두 번째, Biz Message
탭의 KakaoTalk Channel
메뉴로 이동합니다. 여기서 미리 만들어놓은 카카오 비즈니스 채널을 등록해야 합니다. 채널 등록은 어려운 부분이 없으니
넘어가도록 하겠습니다.
세 번째, 이제 템플릿을 등록해야 합니다. 알림톡은 등록된 템플릿을 기반으로 메세지를 보내게 되는데 이 부분이 조금 까다롭습니다. 템플릿을 등록한다고 바로 사용할 수 없고,
템플릿 검수 후에 사용할 수 있습니다. 템플릿 검수는 2일 ~ 3일정도 걸리는 것 같습니다. 템플릿 등록에서 중요한 부분은 템플릿 내용입니다.
여기서 우리는 템플릿 변수를 사용할 수 있습니다. placeholder
로도 확인 할 수 있지만, 변수를 사용하기 위해서는 다음과 같이 #{변수명}
의 형태로 사용할 수 있습니다.
// 템플릿 예시
인증번호는 #{변수명} 입니다.
한 가지 팁을 드리자면, 줄바꿈을 하기 위해서는 \n
의 형태로 등록해야 합니다. 그냥 엔터로 등록하면 줄바꿈이 적용되지 않습니다.
저 처럼 실수해서 템플릿 두 개 등록하지 마세요... ㅠㅠ
// 줄바꿈 예시
[줄바꿈 예시]\n\n인증번호는 #{변수명} 입니다.
예시와 같이 등록을 해야
위의 형태로 정상적으로 줄바꿈이 되어 메세지가 날아옵니다.
NCP에서는 Swagger 문서를 제공하기 때문에 쉽게 테스트를 해볼 수 있는데요, 테스트 하기전 API 가이드 문서를 보면 body에 필수로 들어가야하는 필드가 무엇인지 알 수 있습니다.
위 사진에서 Mandatory
라고 되어있는 값들이 필수로 들어가야하는 값들입니다.
참고로 failover 설정은 NCP에서 못하고 카카오 비즈니스 채널 관리 페이지에서 설정해야 합니다.
저처럼 인증번호용으로 사용하기 위해 버튼이 필요 없으신 분들은 messages.buttons
를 빈 배열([])
로 두시면 됩니다. 아 그리고 템플릿 검수가 통과하기 전엔 발송 테스트가 불가능합니다.
요청은 성공하지만 발송은 실패 상태로 나오게 되니 템플릿 검수가 통과하기 전에 테스트 해보고 싶으신 분들은 요청 상태만 보시면 되겠습니다.
저는 백엔드에서 알림톡 발송 API를 받기 때문에 별도로 발송 코드는 작성하지 않았습니다.
프론트단에서 직접 발송할 경우 등록한 템플릿과 띄어쓰기 줄바꿈 등등 모든 부분이 똑같아야 실패하지 않습니다. 이 부분 주의하시기 바랍니다.
백엔드에서 요청하는 경우 이유는 모르겠으나 줄바꿈 적용전 템플릿 코드로 요청을 보냈는데 백엔드단에서 별도의 메세지 형태로 보내니 줄바꿈이 적용되어 메세지가 발송되었습니다.
저희 회사 백엔드 기술 스택은 python(fastapi)
이니 참고하시기 바랍니다.
읽어주셔서 감사합니다.