끄적이는 개발노트
NestJS - 알림톡 전송 (SOLAPI) 본문
728x90
이번 포스트에서는 카카오톡 알림톡을 전송해주는 API인 솔라피 사용법에 대해 정리한다.
솔라피를 활용하면 SMS, LMS 등의 서비스도 이용가능하며, 사용법이 매우 간편하다.
1. 사전준비
- 솔라피 회원가입
세상에서 가장 쉬운 알림톡 문자메시지 플랫폼 - 솔라피
3중 보안으로 안전보장 기존 아이디/비밀번호 방식의 로그인에 더해서 2차 인증 도입으로 해킹 사고로 부터 안전합니다. 발송량에 따라 일일 발송량 제한이 자동으로 조정되어 클라이언트 프로
solapi.com
- 카카오톡 채널 개설 및 비즈니스 채널 신청
카카오톡 채널 만들기 | 솔라피 가이드 문서
카카오톡채널 관리페이지로 이동하여 카카오계정으로 로그인입니다.
guide.solapi.com
- 채널 연동 및 템플릿 등록
2. 설치
yarn add solapi
3. controller
@Post("/sms")
async sendSms(
@Body() smsInfo: SmsInfo,
): Promise<boolean> {
return await this.smsService.send(smsInfo);
}
위 코드처럼 컨트롤러를 생성한다.
body 데이터에 들어가는 정보는 이후 service에서 솔라피 api를 사용하기 위해 필요한 값들로 service에서 정리한다.
4. service
import {
SolapiMessageService,
Message,
} from 'solapi';
import * as dayjs from 'dayjs';
@Injectable()
export class SmsService {
private readonly messageService = new SolapiMessageService(
const_config.솔라피 API 키,
const_config.솔라피 API Sercet 키,
);
async send(smsInfo: SmsInfo): Promise<boolean> {
const date = dayjs().format("YYYY-MM-DD")
const messageData: Message = {
to: "01012345678",
from: "01011112222",
kakaoOptions: {
pfID: const_config.연동한 비즈니스 채널 pfID,
disableSms: false,
adFlag: false,
templateId: const_config.등록한 알림톡 템플릿 ID,
variables: {
"#{변수명}": date
}
}
}
const sendResult: SingleMessageSentResponse = await this.messageService
.sendOne(messageData)
.then((res) => res)
.catch((err) => {
throw new BadRequestException();
});
return true;
}
}
솔라피 서비스를 이용할 때 발급받은 API 키와 API Secret 키는 당연히 env 파일로 관리해야 한다.
메세지 데이터를 설명하면 다음과 같다.
- to : "수신번호"
- from : "계정에서 등록한 발신번호"
- kakaoOptions : Object
- pfId : "연동한 비즈니스 채널의 pfId"
- templateId : "등록한 알림톡 템플릿의 ID"
- disableSms : 대체 발송 여부 (false로 설정하면, 알림톡 발송 실패 시 SMS로 대체 발송)
- adFlag : 친구톡 광고 문자 여부
- variables : Object (변수가 있을 경우 / 없으면 빈 JSON)
5. 유의사항
- 계정에서 등록한 발신번호와 from의 발신번호는 일치해야 한다.
- 알림톡 템플릿에서 변수 사용 시 반드시 variables에 변수명이 일치하게끔 값을 넣어줘야 한다.
- 각 채널 ID와 템플릿 ID를 잘 살펴봐야 한다.
기존에 솔라피 서비스에서는 템플릿 내용을 그대로 입력해줘야 하는 번거로움과 한 글자라도 틀리면 템플릿과 불일치 오류로 인해 전송이 되지 않았었다.
하지만, 버전이 업데이트 되면서 변수만 잘 넣어주면 되고, 버튼도 따로 설정을 안해줘도 되게끔 사용이 편리해졌다.
문자 전송, 알림톡, 친구톡 전송에 있어서 이만큼 편리한 API는 없다는게 개인적인 생각이다.
728x90
'JavaScript > NestJS' 카테고리의 다른 글
NestJS - bcrypt (0) | 2023.06.23 |
---|---|
NestJS - JWT 토큰 기반 인증 구현 (2) (0) | 2023.06.19 |
NestJS - JWT 토큰 기반 인증 구현 (1) (0) | 2023.06.19 |
NestJS - Middleware (0) | 2021.11.03 |
NestJS와 MongoDB 연결하기(3) - CRUD (0) | 2021.10.08 |