개발자 포럼

필독사항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
번호 제목 글쓴이
562 REST API 알람톡 버튼 문의 secret [1] 주식회사어픽스
561 REST API 알림톡 발송 여러개 질문 입니다. secret [2] 렌카
560 수익쉐어 5월 SP정산 안내 coolsms_Eden
559 기타 리눅스환경 자바로 문자보내기 질문있습니다! secret [2] root
558 REST API 그룹 메세지의 message값에 배열로 추가했는데 하나만 날라옵니다.. secret [6] 비콘
» 오픈TIP NodeJS 에서 Promise 를 사용하여 MMS 문자 발송예제 file 빌리
556 REST API python으로 제작한 mms 서비스 이용시 399 에러입니다 secret [1] 스폰지밥
555 REST API 전송 개수 제한 문의 secret [1] 비콘
554 REST API 리눅스 환경에서 자바로 문자보내기 오류입니다 [2] root
553 REST API 발신번호 갱신관련 및 인증ARS번호 관련 문의. [1] 운동이땡길때
552 Classic API 파이썬 버전 호환 file [1] 진조
551 REST API button_url 길이 제한 secret [2] 아테나스랩
550 REST API php로 문자전송을 만드는중 문제가 발생합니다 secret [4] 주식회사핀스프레드
549 수익쉐어 4월 SP정산 안내 coolsms_Eden
548 Classic API 문자메시지 API v3.0 언제 나와요? [4] 파우더(pwdr)
547 오픈TIP NodeJs 에서 간단히 REST API 1.x버전 문자보내기 빌리
546 REST API MMS 이미지 전송시 NoImageInput 발생건 secret [6] 주식회사페타마이스
545 REST API 알림톡,친구톡 관련 질문입니다 secret [1] gemjung
544 기타 문자전송이 계속 실패합니다 secret [3] watchcam
543 REST API sms api 관련 secret [5] HNTU