개발자 포럼

필독사항1 : 질문을 올릴 경우 답변자는 뛰어난 분석학자나 심리학자가 아님을 유의하세요. 
필독사항2 : 반드시 구체적인 설명과 코드 그리고 오류 메시지 및 캡처 이미지를 함께 올려주세요. 

 

Node.js 에서  Promise 를 사용하여 간단히 MMS 문자를 보내는 예제입니다. 

 

첨부파일 coolsms-sms-tester.zip

 

사용방법 

- 첨부파일을 다운받으신후, 압축을 푸신다음 config.js 에 api 정보 및 messages 데이터를 입력후

- 터미널에서 node send.js 를 치시면 실행됩니다. 

 

유의사항

- 코드에 대한 사용/수정/배포는 자유입니다.

- 이 예제 코드는 쿨에스엠에스에서 제공하는 공식 문서나 예제가 아닙니다. (조금이나만 개발에 어려움을 겪으시는 분들을 위해 도움이 될까 싶어 올리는 팁입니다.)

- 사용에 따른 불이익이나 추가 및 수정을 요구하실수 없습니다. 

 

config.js

module.exports = {
  "apikey": "",
  "apisecret": "",
  "messages": [
    {
      to: "",
      from: "",
      image: "./test_image1.png"
    },
    {
      to: "",
      from: "",
      image: "./test_image2.png"
    }
  ]
}

 

 

send.js

// 사용된 라이브러리
var request = require('request')
var uniqid = require('uniqid')
var crypto = require('crypto')
var fs = require('fs')
// API URL
var api_url = "http://api.coolsms.co.kr/sms/1.6/send"

// API 인증키 + 전송할 메시지가 담긴 config
var config = require('./config.js')
module.exports.handler = (event, context, callback) => {
  var msgs = []

  // config 에 있는 messages를 사용하여 전송할 메시지를 만듭니다.
  for(var i = 0; i < 2; i++) {
    msgs.push(createMsg(config, i))
  }

  // Promise 객체 생성
  var jobs = msgs.map(process_msg)

  // Promise 실행
  Promise.all(jobs)
  .then(function(res) {
    // Promise의 모든 job 이 끝나면 호출
    console.log("all jobs finished : ", res) 
    callback(null, "all jobs finished succcessfully")
  })
  .catch(function(err) {
    // Promise의 job 실행중 에러발생시 호출
    console.log("error : ", err)
    callback(err)
  })
}

// 메시지 전송 
function process_msg(msg) {
  console.log("process_msg : ", msg)
  return new Promise(function(ok, fail) {
    request.post({
        url:api_url, 
        formData: msg
      },
      function(err, res, body) {
        if(err) {
          return fail(err)
        }

        if(!err && res.statusCode == '200') {
            console.log("body:", body);
            return ok(body)
        }
      })
  })
}

// 메시지 작성 
function createMsg(payload, index) {
  var timestamp = Math.floor(new Date().getTime() / 1000);
  var salt = uniqid();
  var signature = crypto.createHmac("md5", payload.apisecret).update(timestamp + salt).digest('hex');
  return {
    api_key: payload.apikey,
    timestamp : timestamp,
    salt : salt,
    signature : signature,
    to: payload.messages[index].to,
    from: payload.messages[index].from,
    text: payload.messages[index].text,
    type: payload.messages[index].type,
    image: {
      value: fs.createReadStream(payload.messages[index].image),
      options: {
          filename: payload.messages[index].image,
          contentType: 'image/jpg'
      }
    }
  }
}

// terminal 에서 > node send.js 로 실행하면 됩니다 
this.handler()

 

List of Articles

오픈TIP NodeJS 에서 Promise 를 사용하여 MMS 문자 발송예제 file

오픈TIP NodeJs 에서 간단히 REST API 1.x버전 문자보내기

오픈TIP [Python] UTF-8 한글 자르기

오픈TIP 닷넷에서 coolSMS 인증코드 만들기 [1]

오픈TIP 구글독스 스프레드시트 문자발송 애드온 만들기 file

오픈TIP C# Sohot 연동 방법 공유 [2]

오픈TIP XE 새글, 댓글 알림 애드온 만들기 file

오픈TIP [JAVA] 톰캣 JSP에서 사용시 한글 깨지는 문제 해결하기

오픈TIP CTM-PHP v2.3 에서 미국, 일본, 중국 등 해외문자 보내기

오픈TIP VisualStudio 2008 에서 SoHot SMS 컴포넌트를 MFC프로젝트에 적용하기

오픈TIP 오라클 10g 에서 Open Agent 빌드할 때 stdc++라이브러리 버젼에 따른 링크오류 해결하기 file

오픈TIP 안드로이드폰에서 쿨에스엠에스 문자 보내기 file

오픈TIP [PHP] UTF-8 유니코드 한글 자르기