[Node.js] NCP SENS 문자 발송 API

2021. 5. 29. 23:18Web_Programming/Node.js

 

이번 포스팅에서는 node js에서 네이버 클라우드 플랫폼 (NCP)에서 제공하는 문자발송 API를 사용하는 법에 대해서 간단하게 적어보려 합니다 👻

 

저는 식당 대기 예약 웹서비스를 개발해보면서 사용하게 된 부분인데요.

생각보다 문자 발송 API를 적용하는데 설명도 부족하고 서버에 대한 개념이 부족해서 많이 고생했던 것 같아요..ㅎ

이제 바로 설명해보겠습니다.


사전작업(인증키 발급)

먼저 아래 NCP사이트에서 회원가입 후 서비스 이용 신청을 해줍니다.

https://www.ncloud.com/product/applicationService/sens

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

 

그다음, 콘솔로 이동하여 오른쪽 상단 마이페이지 > 계정관리 메뉴로 들어가 줍니다.

여기서 비밀번호 입력후 인증키 관리로 들어가

 

1. Access Key ID Secret Key를 복사해둡니다.

그다음 Simple & Easy Notification Service > SMS 메뉴로 들어가

 

2. 프로젝트를 생성해줍니다.

3. 여기서 형광펜으로 칠해진 서비스 ID 또한 복사해 둡니다.

 

그리고 마지막 사전작업으로 Simple & Easy Notification Service > SMS > Calling Number 메뉴에서

4. 발송할 때 사용할 번호를 등록해주면 됩니다.

 

 

자그럼 위 과정을 통해 얻은 키 3가지를 이용하여 시그니처 코드를 작성해보겠습니다.

  • Access Key ID
  • Secret Key
  • 서비스 ID

 


코드 작성

코드는 아래와 같습니다.

function send_message(phone) {
  const user_phone_number = phone;//수신 전화번호 기입
  let resultCode = 404;
  const date = Date.now().toString();
  const uri = process.env.SERVICE_ID; //서비스 ID
  const secretKey = process.env.NCP_SECRET_KEY;// Secret Key
  const accessKey = process.env.NCP_KEY;//Access Key
  const method = "POST";
  const space = " ";
  const newLine = "\n";
  const url = `https://sens.apigw.ntruss.com/sms/v2/services/${uri}/messages`;
  const url2 = `/sms/v2/services/${uri}/messages`;
  const hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);
  hmac.update(method);
  hmac.update(space);
  hmac.update(url2);
  hmac.update(newLine);
  hmac.update(date);
  hmac.update(newLine);
  hmac.update(accessKey);
  const hash = hmac.finalize();
  const signature = hash.toString(CryptoJS.enc.Base64);
  request({
    method: method,
    json: true,
    uri: url,
    headers: {
      "Contenc-type": "application/json; charset=utf-8",
      "x-ncp-iam-access-key": accessKey,
      "x-ncp-apigw-timestamp": date,
      "x-ncp-apigw-signature-v2": signature,
    },
    body: {
      type: "SMS",
      countryCode: "82",
      from: //"발신번호기입",
      content: //문자내용 기입,
      messages: [
        { to: `${user_phone_number}`, },],
    },
  },
    function (err, res, html) {
      if (err) console.error(err);
      else { resultCode = 200; }
    }
  );
  return resultCode;
}

위 코드에서 주석으로 기입된 부분만 바꿔주면 되는데요,

앞서 살펴본 key들과 request의 body 부분에 발송될 문자에 대한 정보를 기입해주면 됩니다.

 

 

 

 

마지막으로 client 요청시, send_message를 수행시켜 문자를 전송시키면 끝입니다.

app.get('/sms/:phone', (req, res) => {
  const paramObj = req.params;
  send_message(paramObj.phone);
  res.send("complete!");
});

 

 

 

반응형

'Web_Programming > Node.js' 카테고리의 다른 글

[Node.js] 카카오 로그인&JWT  (0) 2021.09.17