끄적이는 개발노트

NestJS - 알림톡 전송 (SOLAPI) 본문

JavaScript/NestJS

NestJS - 알림톡 전송 (SOLAPI)

크런키스틱 2023. 6. 22. 17:00
728x90

이번 포스트에서는 카카오톡 알림톡을 전송해주는 API인 솔라피 사용법에 대해 정리한다.

솔라피를 활용하면 SMS, LMS 등의 서비스도 이용가능하며, 사용법이 매우 간편하다.

 

1. 사전준비

- 솔라피 회원가입

https://solapi.com/

 

세상에서 가장 쉬운 알림톡 문자메시지 플랫폼 - 솔라피

3중 보안으로 안전보장 기존 아이디/비밀번호 방식의 로그인에 더해서 2차 인증 도입으로 해킹 사고로 부터 안전합니다. 발송량에 따라 일일 발송량 제한이 자동으로 조정되어 클라이언트 프로

solapi.com

- 카카오톡 채널 개설 및 비즈니스 채널 신청

https://guide.solapi.com/alimtalk/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%EC%B1%84%EB%84%90-%EB%A7%8C%EB%93%A4%EA%B8%B0/

 

카카오톡 채널 만들기 | 솔라피 가이드 문서

카카오톡채널 관리페이지로 이동하여 카카오계정으로 로그인입니다.

guide.solapi.com

- 채널 연동 및 템플릿 등록

https://solapi.zendesk.com/hc/ko/articles/360021019954-%EC%95%8C%EB%A6%BC%ED%86%A1-%ED%85%9C%ED%94%8C%EB%A6%BF-%EB%93%B1%EB%A1%9D-%EB%B0%A9%EB%B2%95

 

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