IT's Jenna

알리고를 통한 문자 보내기 본문

Backend/외부 API 활용

알리고를 통한 문자 보내기

developer Jenna 2021. 10. 4. 09:48

서버에서 문자를 보내거나 카카오톡 알림을 보내기 위해선 이동 통신사와 연계되어 있는 '알리고'와 같은 공식 딜러사를 통해야 합니다. 이러한 딜러사는 알리고 외에도 다양하게 있지만 이번 포스팅에선 알리고를 통한 문자를 전송하는 방법을 알아보겠습니다.

 

문자 발송 관련 api document 및 예제 파일은 알리고 홈페이지에서 보실 수 있습니다.

https://smartsms.aligo.in/admin/api/spec.html

 

알리고

알리고 - 국내 최저가 문자발송 알리고 스마트문자, 단문8.4원 장문25원 그림60원 알리고 대량문자/단체문자/문자사이트/문자발송

smartsms.aligo.in:443


사실 알리고에서 API를 통해 문자 발송을 하는 방법은 굉장히 간단하고 쉽습니다!

실제 API를 사용하기전에 먼저 알리고에서 설정해주어야 하는 부분들을 살펴보겠습니다.

1. 알리고 홈페이지 문자 정보 설정

  • 담당자 추가하기 : 알리고 홈페이지에서 문자 API 페이지 신청/인증 탭으로 가면 담당자 정보를 추가할 수 있습니다. 해당 정보에 알리고 문자 발송에 대한 담당자명과 전화번호를 추가합니다. 아래 화면에선 이미 추가된 담당자 정보가 있고 '담당자 추가하기'를 클릭하여 여러 명의 다수의 담당자를 등록할 수 있습니다.

<담당자 추가하기>

  • API Key 발급받기 : 알리고 계정의 API key 발급이 필요합니다. API Key는 각 계정의 고유번호입니다. 알리고의 API를 사용할때마다 해당 정보를 보내서 계정 인증을 해야 API 기능을 사용할 수 있습니다. 아래 화면에서 API Key 발급 신청을 클릭하면 담당자 인증하기 모달 창이 뜹니다. 이전에 등록한 담당자 정보로 인증을 완료해야 API Key를 발급받을 수 있습니다.

<API Key>
<API Key 발급신청>

  • 발송 서버 IP 등록 : 아무 서버에서나 알리고 문자가 전송될 수 있게끔하면 안 되기 때문에 실제로 알리고 문자를 보낼 수 있는 서버 IP를 등록합니다. 아래 그림에서 빈칸에 번호를 입력하고 'IP 추가하기'를 누르면 IP 등록이 됩니다.

<발송 서버 IP 등록>

  • 발신 번호 등록 : 알리고 문자를 전송할때 발신번호를 등록해야 합니다. 문자는 해당 발신 번호로만 전송할 수 있으며 여러 개의 발신번호를 등록할 수 있습니다. '발신번호 추가하기'를 클릭하면 발신번호 관리 페이지로 이동합니다. 해당 페이지의 '발신번호 추가하기'에서 발신번호를 등록할 수 있습니다.

<추가된 발신번호>
<발신번호 관리>

이제 알리고 홈페이지에서 설정해주어야 하는 부분은 모두 끝났습니다. 그렇다면 API를 어떻게 활용하는지 한번 볼까요?

2. API 활용

  • 알리고 모듈 설치

우선 npm install을 이용하여 알리고 모듈을 설치합니다.

npm i aligoapi

 

  • 문자 보내기

알리고에서 제공하는 문자 발송 api 예제를 살펴보겠습니다.

const aligoapi = require('aligoapi');
// 해당 예제는 npm에서도 확인하실 수 있습니다
// npm i aligoapi
// https://www.npmjs.com/package/aligoapi

var AuthData = {
  key: '<apikey>',
  // 이곳에 발급받으신 api key를 입력하세요
  user_id: '<userid>',
  // 이곳에 userid를 입력하세요
}
// 인증용 데이터는 모든 API 호출시 필수값입니다.

// AuthData.testmode_yn = 'Y'
// test 모드를 사용하시려면 'Y'값으로 설정하세요

// form데이터를 포함한 request를 모두 보내시고 JSON data는 body pares를 사용하시기 바랍니다.

const send = (req, res) => {
  // 메시지 발송하기

  // req.body = {
  /*** 필수값입니다 ***/
  //   sender: 발신자 전화번호  // (최대 16bytes)
  //   receiver: 수신자 전화번호 // 컴마()분기 입력으로 최대 1천명
  //   msg: 메시지 내용	// (1~2,000Byte)
  /*** 필수값입니다 ***/
  //   msg_type: SMS(단문), LMS(장문), MMS(그림문자)
  //   title: 문자제목(LMS, MMS만 허용) // (1~44Byte)
  //   destination: %고객명% 치환용 입력
  //   rdate: 예약일(현재일이상) // YYYYMMDD
  //   rtime: 예약시간-현재시간기준 10분이후 // HHMM
  //   image: 첨부이미지 // JPEG, PNG, GIF
  // }
  // req.body 요청값 예시입니다.

  aligoapi.send(req, AuthData)
    .then((r) => {
      res.send(r)
    })
    .catch((e) => {
      res.send(e)
    })
}

알리고 문자 보내기 api는 aligoapi.send 입니다. 해당 api에는 req와 AuthData 두 가지 인수가 필요합니다.

 

AuthData

- 유저의 알리고 계정을 인증하기 위한 정보입니다.

- user_idx : 알리고 계정 id입니다.

- key : 위에서 발급받은 알리고 계정의 API Key입니다.

 

req

- req.body에 데이터를 입력합니다.

- 필수 데이터는 3가지입니다 : 발신자 번호, 수신자 번호, 문자 내용

 

이제 실제 활용 코드를 살펴보도록 하겠습니다.

module.exports.sendAligo = async(options,req) => {
  const AuthData = {
      key: '***********',
      // 이곳에 발급받으신 api key를 입력하세요
      user_id: '***********'
      // 이곳에 userid를 입력하세요
  }

  let message = ''
  if (!options || !options.template) return false
  switch (options.template) {
    case 1:
      message += `case 1 문자 내용`
      break
    case 2:
      message += `case 2 문자 내용`
      break
    case 3:
      message += `case 3 문자 내용`
      break
    default:
  }

  req.body = {
    sender: '0000-0000',  // (최대 16bytes)
    receiver: options.receiver, // 컴마()분기 입력으로 최대 1천명
    msg: message	// (1~2,000Byte)
  }

  console.log('req.body',req.body)

  const result = new Promise((resolve,reject)=>{
    if(true){
      aligoapi.send(req,AuthData)
      .then((r)=>{
        console.log('alligo',r)
        resolve(true)
      })
      .catch((e)=>{
        console.error('err',e)
        reject(false)
      })
    }else{
      // console.log(2)
      resolve(true)
    }
  })

  return result
  
}

- AuthData는 고정값으로 넣어줬습니다.

- req.body에서 수신 번호는 DB에서 받아옵니다.

- 문자를 보낼 때 경우에 따라서 다른 내용을 보낼 수 있도록 message 분기 처리를 해주었습니다.

- 문자 발송이 성공했을 때와 실패했을 때의 정보를 console 창에 나타날 수 있도록 했습니다. 실제 console 예시를 보겠습니다.

 

- 알리고 문자 전송을 등록하지 않은 서버에서 시도했을 때 아래와 같이 인증 오류 에러가 발생합니다. 에러가 발생했을 때는 에러 코드와 에러 메시지를 확인할 수 있습니다.

 

<IP 인증 실패>

- 알리고 문자 전송이 정상적으로 되면 아래와 같이 문자 관련 정보를 표시합니다. 성공 시 코드는 1이고 메시지는 'success'가 나옵니다.

 

<문자 전송 성공>


지금까지 알리고 문자 전송에 대하여 알아보았습니다. 다음 포스팅에서는 알리고 카카오 알림톡 연동에 대해 알아보도록 하겠습니다. 다음 링크를 확인해 주세요 :)

 

https://jungeunpyun.tistory.com/70

 

알리고를 통한 카카오 알림톡 연동하기

서버에서 문자를 보내거나 카카오톡 알림을 보내기 위해선 이동 통신사와 연계되어 있는 '알리고'와 같은 공식 딜러사를 통해야 합니다. 이러한 딜러사는 알리고 외에도 다양하게 있지만 이번

jungeunpyun.tistory.com

Comments