Showing
1 changed file
with
132 additions
and
63 deletions
1 | -var express = require("express"); | 1 | +// var express = require('express'); |
2 | +// const request = require('request'); | ||
3 | +// const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
4 | +// const TOKEN = 'Lei+CfpMSJB1lms9gmNi6kakwT2Zz5bv1E/vxXoewtNMoAaxoBEyQnniunTw19fCGl9KXU7UnVQE7IXAPgN0FyeG/bhBPvpdV0fEgpYBXM0PNiRoLsN8oMAlY99pXvq8QZ1KXefuTcr1WTBerglnagdB04t89/1O/w1cDnyilFU=' | ||
5 | +// const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast' | ||
6 | +// const BROAD_TARGET_URL = 'https://api.line.me/v2/bot/message/broadcast' | ||
7 | +// const fs = require('fs'); | ||
8 | +// const path = require('path'); | ||
9 | +// const HTTPS = require('https'); | ||
10 | +// const domain = "2019102175.oss-2021.tk" | ||
11 | +// const sslport = 23023; | ||
12 | + | ||
13 | + | ||
14 | +var express = require('express'); | ||
15 | +const request = require('request'); | ||
16 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
17 | +const TOKEN = 'Lei+CfpMSJB1lms9gmNi6kakwT2Zz5bv1E/vxXoewtNMoAaxoBEyQnniunTw19fCGl9KXU7UnVQE7IXAPgN0FyeG/bhBPvpdV0fEgpYBXM0PNiRoLsN8oMAlY99pXvq8QZ1KXefuTcr1WTBerglnagdB04t89/1O/w1cDnyilFU=' | ||
18 | +const fs = require('fs'); | ||
19 | +const path = require('path'); | ||
20 | +const HTTPS = require('https'); | ||
21 | +const domain = "2019102175.oss-2021.tk" | ||
22 | +const sslport = 23023; | ||
23 | + | ||
24 | +const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast' | ||
25 | +const BROAD_TARGET_URL = 'https://api.line.me/v2/bot/message/broadcast' | ||
26 | +const USER_ID = 'Ub99bb2ebebbbc1e06efe715b76ec9fcd' | ||
27 | + | ||
28 | +const bodyParser = require('body-parser'); | ||
29 | +var app = express(); | ||
2 | 30 | ||
3 | -var http = require("http"); | 31 | +request.post( |
32 | + { | ||
33 | + url: BROAD_TARGET_URL, | ||
34 | + headers: { | ||
35 | + 'Authorization': `Bearer ${TOKEN}` | ||
36 | + }, | ||
37 | + json: { | ||
38 | + "messages": [ | ||
39 | + { | ||
40 | + "type": "text", | ||
41 | + "text": "안녕하세요! " | ||
42 | + }, | ||
43 | + { | ||
44 | + "type": "text", | ||
45 | + "text": "제시되는 4가지 사진 중 자신의 피부와 가장 잘 어울리는 사진의 번호를 입력하세요" | ||
46 | + }, | ||
47 | + { | ||
48 | + "type": "text", | ||
49 | + "text": "퍼스널 컬러 진단 테스트를 시작하시겠습니까? [Y/N]" | ||
50 | + } | ||
51 | + ] | ||
52 | + } | ||
53 | + }, (error, response, body) => { | ||
54 | + console.log(body) | ||
55 | + }); | ||
4 | 56 | ||
5 | -var bodyParser = require("body-parser"); | ||
6 | 57 | ||
7 | -var app = express(); | 58 | +app.use(bodyParser.json()); |
59 | +app.post('/hook', function (req, res) { | ||
8 | 60 | ||
9 | -app.get("/Personal_color_chatbot", function (req, res) { | 61 | + var eventObj = req.body.events[0]; |
10 | - var data = { | 62 | + var source = eventObj.source; |
11 | - type: "buttons", | 63 | + var message = eventObj.message; |
12 | - buttons: ["퍼스널 컬러 진단하기", "봄웜", "여름쿨", "가을웜", "겨울쿨"], | ||
13 | - }; | ||
14 | 64 | ||
15 | - res.json(data); | ||
16 | -}); | ||
17 | 65 | ||
18 | -app.use(bodyParser.urlencoded({ extended: false })); | 66 | + start(eventObj.replyToken, eventObj.message.text); |
19 | -app.use(bodyParser.json()); | 67 | + test1(eventObj.replyToken, eventObj.message.text); |
20 | 68 | ||
21 | -app.post("/message", function (req, res) { | ||
22 | - var msg = req.body.content; | ||
23 | - console.log("전달받은 메세지: " + msg); | ||
24 | 69 | ||
25 | - var send = {}; | 70 | + res.sendStatus(200); |
71 | +}); | ||
26 | 72 | ||
27 | - switch (msg) { | 73 | +function start(replyToken, message) { |
28 | - case "퍼스널 컬러 진단하기": | 74 | + if (message == "Y") { |
29 | - send = { | 75 | + request.post( |
30 | - message: { | 76 | + { |
31 | - text: "퍼스널 컬러 진단하기 선택", | 77 | + url: TARGET_URL, |
78 | + headers: { | ||
79 | + 'Authorization': `Bearer ${TOKEN}` | ||
32 | }, | 80 | }, |
33 | - }; | 81 | + json: { |
34 | - break; | 82 | + "replyToken": replyToken, |
35 | - | 83 | + "messages": [ |
36 | - case "봄웜": | 84 | + { |
37 | - send = { | 85 | + "type": "image", |
38 | - message: { | 86 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", |
39 | - text: "봄웜 선택", | 87 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", |
40 | }, | 88 | }, |
41 | - }; | 89 | + { |
42 | - break; | 90 | + "type": "image", |
43 | - | 91 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", |
44 | - case "여름쿨": | 92 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", |
45 | - send = { | ||
46 | - message: { | ||
47 | - text: "여름쿨 선택", | ||
48 | }, | 93 | }, |
49 | - }; | 94 | + { |
50 | - break; | 95 | + "type": "image", |
51 | - | 96 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", |
52 | - case "가을웜": | 97 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", |
53 | - send = { | ||
54 | - message: { | ||
55 | - text: "가을웜 선택", | ||
56 | }, | 98 | }, |
57 | - }; | 99 | + { |
58 | - break; | 100 | + "type": "image", |
59 | - | 101 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", |
60 | - case "겨울쿨": | 102 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", |
61 | - send = { | ||
62 | - message: { | ||
63 | - text: "겨을쿨 선택", | ||
64 | }, | 103 | }, |
65 | - }; | 104 | + ], |
66 | - break; | ||
67 | 105 | ||
68 | - default: | 106 | + } |
69 | - send = { | 107 | + }, (error, response, body) => { |
70 | - message: { | 108 | + console.log(body) |
71 | - text: "알 수 없는 명령입니다.", | 109 | + }); |
110 | + } | ||
111 | +} | ||
112 | + | ||
113 | +function test1(replyToken, message) { | ||
114 | + if (message == "네") { | ||
115 | + request.post( | ||
116 | + { | ||
117 | + url: TARGET_URL, | ||
118 | + headers: { | ||
119 | + 'Authorization': `Bearer ${TOKEN}` | ||
72 | }, | 120 | }, |
73 | - }; | 121 | + json: { |
74 | - break; | 122 | + "replyToken": replyToken, |
123 | + "messages": [ | ||
124 | + { | ||
125 | + "type": "text", | ||
126 | + "text": "네가지 사진 중 자신의 피부와 가장 잘 어울리는 색을 골라주세요" | ||
75 | } | 127 | } |
128 | + ] | ||
129 | + } | ||
130 | + }, (error, response, body) => { | ||
131 | + console.log(body) | ||
132 | + }); | ||
133 | + } | ||
134 | +} | ||
76 | 135 | ||
77 | - res.json(send); | ||
78 | -}); | ||
79 | 136 | ||
80 | -http.createServer(app).listen(9090, function () { | 137 | + |
81 | - console.log("서버실행중.."); | 138 | +try { |
82 | -}); | 139 | + const option = { |
140 | + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain + '/fullchain.pem'), | ||
141 | + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/privkey.pem'), 'utf8').toString(), | ||
142 | + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/cert.pem'), 'utf8').toString(), | ||
143 | + }; | ||
144 | + | ||
145 | + HTTPS.createServer(option, app).listen(sslport, () => { | ||
146 | + console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
147 | + }); | ||
148 | +} catch (error) { | ||
149 | + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | ||
150 | + console.log(error); | ||
151 | +} | ... | ... |
-
Please register or login to post a comment