YS's develop story

์•Œ๋ฆฌ๊ณ  ์นด์นด์˜ค ์•Œ๋ฆผํ†ก API ์—ฐ๋™ํ•˜๊ธฐ (with Node js) ๋ณธ๋ฌธ

๊ธฐํƒ€

์•Œ๋ฆฌ๊ณ  ์นด์นด์˜ค ์•Œ๋ฆผํ†ก API ์—ฐ๋™ํ•˜๊ธฐ (with Node js)

Yusang 2021. 8. 4. 20:23

๐Ÿ‘จ๐Ÿผ‍๐Ÿ’ป ์•Œ๋ฆฌ๊ณ  ์นด์นด์˜ค ์•Œ๋ฆผํ†ก API ์—ฐ๋™ํ•˜๊ธฐ (with Node js)

โŒ› Problem

ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ ํŠน์ • ์œ ์ €์—๊ฒŒ ์นด์นด์˜ค ์•Œ๋ฆผํ†ก์„ ์–ด๋–ป๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์„ ๊นŒ์š”? ๐Ÿ˜•
์•Œ๋ฆฌ๊ณ  ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ Node js๋กœ ์ด๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“œ Solution

 

์•Œ๋ฆฌ๊ณ 

์•Œ๋ฆฌ๊ณ  - ๊ตญ๋‚ด ์ตœ์ €๊ฐ€ ๋ฌธ์ž๋ฐœ์†ก ์•Œ๋ฆฌ๊ณ  ์Šค๋งˆํŠธ๋ฌธ์ž, ๋‹จ๋ฌธ8.4์› ์žฅ๋ฌธ25์› ๊ทธ๋ฆผ60์› ์•Œ๋ฆฌ๊ณ  ๋Œ€๋Ÿ‰๋ฌธ์ž/๋‹จ์ฒด๋ฌธ์ž/๋ฌธ์ž์‚ฌ์ดํŠธ/๋ฌธ์ž๋ฐœ์†ก

smartsms.aligo.in:443

์นด์นด์˜ค ์•Œ๋ฆผํ†ก์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์™€ ๊ฐ™์€ ์‚ฌ์ดํŠธ์— ๊ฐ€์ž…์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผํ†ก์„ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์€ ๊ฑด๋‹น 6์› ์ •๋„๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์œ ๋ฃŒ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

 

 

 

์•Œ๋ฆผํ†ก์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์นด์นด์˜ค ์ฑ„๋„์ด ๋“ฑ๋ก๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๋˜ํ•œ ์•Œ๋ฆผํ†ก์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์€ ๋ชจ๋‘ ์นด์นด์˜ค์—์„œ ๊ฒ€์ˆ˜ํ•˜์—ฌ ์Šน์ธ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๊ฒ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ…œํ”Œ๋ฆฟ์ด ์Šน์ธ ์™„๋ฃŒ๊ฐ€ ๋œ๋‹ค๋ฉด,

์ด์ œ ์นด์นด์˜ค ์•Œ๋ฆผํ†ก ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์‚ฌ์ดํŠธ์—์„œ API Key์™€ ๋ฐœ์†กํ•  ์„œ๋ฒ„์˜ IP๋ฅผ ๋“ฑ๋ก ํ•ด ์ค์‹œ๋‹ค.

 

 

 

์ด์ œ API ํ˜ธ์ถœ์„ ์œ„ํ•œ API ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

body๊ฐ’์œผ๋กœ apikey์™€ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜๋ฉด API ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(์ฐธ๊ณ ๋กœ ์ €๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ PC์—์„œ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•˜์ง€๋งŒ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ 

ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„ PC์—์„œ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

 

 

 

Postman์„ ํ™œ์šฉํ•˜์—ฌ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

 

 

 

 

aligoapi

To use aligo restful api in node js

www.npmjs.com

์œ„ ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•˜์—ฌ ์ข€ ๋” ์‰ฝ๊ฒŒ ์•Œ๋ฆผ ํ†ก ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•˜์—ฌ ์•Œ๋ฆผํ†ก ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

npm i aligoapi

์œ„ ๋ช…๋ น์œผ๋กœ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ด ์ค์‹œ๋‹ค.

 

 

let AuthData = {
  apikey: '<apikey>',
  // ์ด๊ณณ์— ๋ฐœ๊ธ‰๋ฐ›์œผ์‹  api key๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
  userid: '<userid>',
  // ์ด๊ณณ์— userid๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
  // token: ''
  // ์ด๊ณณ์— token api๋กœ ๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ์„ ์ž…๋ ฅํ•˜์„ธ์š”
}
// token์„ ์ œ์™ธํ•œ ์ธ์ฆ์šฉ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋“  API ํ˜ธ์ถœ์‹œ ํ•„์ˆ˜๊ฐ’์ž…๋‹ˆ๋‹ค.
// token์€ ํ† ํฐ์ƒ์„ฑ์„ ์ œ์™ธํ•œ ๋ชจ๋“  API ํ˜ธ์ถœ์‹œ ํ•„์ˆ˜๊ฐ’์ž…๋‹ˆ๋‹ค.

const alimtalkSend = (req, res) => {
 req.body = {
  senderkey: ๋ฐœ์‹ ํ”„๋กœํ•„ ํ‚ค
  tpl_code: ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ
  sender: ๋ฐœ์‹ ์ž ์—ฐ๋ฝ์ฒ˜
  receiver_1: ์ˆ˜์‹ ์ž ์—ฐ๋ฝ์ฒ˜
  subject_1: ์•Œ๋ฆผํ†ก ์ œ๋ชฉ
  message_1: ์•Œ๋ฆผํ†ก ๋‚ด์šฉ
}
  
  // senddate: ์˜ˆ์•ฝ์ผ // YYYYMMDDHHMMSS
  // recvname: ์ˆ˜์‹ ์ž ์ด๋ฆ„
  // button: ๋ฒ„ํŠผ ์ •๋ณด // JSON string
  // failover: ์‹คํŒจ์‹œ ๋Œ€์ฒด๋ฌธ์ž ์ „์†ก๊ธฐ๋Šฅ // Y or N
  // fsubject: ์‹คํŒจ์‹œ ๋Œ€์ฒด๋ฌธ์ž ์ œ๋ชฉ
  // fmessage: ์‹คํŒจ์‹œ ๋Œ€์ฒด๋ฌธ์ž ๋‚ด์šฉ
  // }
  // req.body ์š”์ฒญ๊ฐ’ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
  // _๋กœ ๋„˜๋ฒ„๋ง๋œ ์ตœ๋Œ€ 500๊ฐœ์˜ receiver, subject, message, button, fsubject, fmessage ๊ฐ’์„ ๋ณด๋‚ด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  // failover๊ฐ’์ด Y์ผ๋•Œ fsubject์™€ fmessage๊ฐ’์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

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

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

์ด๋•Œ ์•Œ๋ฆผํ†ก ๋‚ด์šฉ์€ ํ…œํ”Œ๋ฆฟ์˜ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ…œํ”Œ๋ฆฟ์˜ ๋ณ€์ˆ˜ ๋ถ€๋ถ„๋“ค์„ ex : #{์›”์ผ}, #{๊ฒฐ์ œ๊ธˆ์•ก}....

์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์–ด ์ค์‹œ๋‹ค.

 

 

ํŠน์ • API ์‹คํ–‰ ์‹œ ์œ„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค๋ฉด

receiver์— ๋“ฑ๋ก๋œ ๋ฒˆํ˜ธ๋กœ ์•Œ๋ฆผ ํ†ก์ด ์ž๋™ ๋ฐœ์†ก๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์•ฝ ์™„๋ฃŒ ์‹œ ์˜ˆ์•ฝ ์•Œ๋ฆผ ํ†ก์„ ๋ณด๋‚ด๊ฑฐ๋‚˜

 

๋ฐฐ์†ก ์ค€๋น„ ์™„๋ฃŒ ์‹œ ์ถœ๋ฐœ ์•Œ๋ฆผ ํ†ก์„ ๋ณด๋‚ด๋Š” ๋“ฑ 

API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”

Comments