개발자 포럼
필독사항1 : | 질문을 올릴 경우 답변자는 뛰어난 분석학자나 심리학자가 아님을 유의하세요. |
---|---|
필독사항2 : | 반드시 구체적인 설명과 코드 그리고 오류 메시지 및 캡처 이미지를 함께 올려주세요. |
Node.js 에서 Promise 를 사용하여 간단히 MMS 문자를 보내는 예제입니다.
사용방법
- 첨부파일을 다운받으신후, 압축을 푸신다음 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()