Showing
1 changed file
with
139 additions
and
70 deletions
1 | -var express = require("express"); | 1 | +// var express = require('express'); |
2 | - | 2 | +// const request = require('request'); |
3 | -var http = require("http"); | 3 | +// const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' |
4 | - | 4 | +// const TOKEN = 'Lei+CfpMSJB1lms9gmNi6kakwT2Zz5bv1E/vxXoewtNMoAaxoBEyQnniunTw19fCGl9KXU7UnVQE7IXAPgN0FyeG/bhBPvpdV0fEgpYBXM0PNiRoLsN8oMAlY99pXvq8QZ1KXefuTcr1WTBerglnagdB04t89/1O/w1cDnyilFU=' |
5 | -var bodyParser = require("body-parser"); | 5 | +// const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast' |
6 | - | 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'); | ||
7 | var app = express(); | 29 | var app = express(); |
8 | 30 | ||
9 | -app.get("/Personal_color_chatbot", function (req, res) { | 31 | +request.post( |
10 | - var data = { | 32 | + { |
11 | - type: "buttons", | 33 | + url: BROAD_TARGET_URL, |
12 | - buttons: ["퍼스널 컬러 진단하기", "봄웜", "여름쿨", "가을웜", "겨울쿨"], | 34 | + headers: { |
13 | - }; | 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 | + }); | ||
14 | 56 | ||
15 | - res.json(data); | ||
16 | -}); | ||
17 | 57 | ||
18 | -app.use(bodyParser.urlencoded({ extended: false })); | ||
19 | app.use(bodyParser.json()); | 58 | app.use(bodyParser.json()); |
59 | +app.post('/hook', function (req, res) { | ||
20 | 60 | ||
21 | -app.post("/message", function (req, res) { | 61 | + var eventObj = req.body.events[0]; |
22 | - var msg = req.body.content; | 62 | + var source = eventObj.source; |
23 | - console.log("전달받은 메세지: " + msg); | 63 | + var message = eventObj.message; |
24 | - | ||
25 | - var send = {}; | ||
26 | - | ||
27 | - switch (msg) { | ||
28 | - case "퍼스널 컬러 진단하기": | ||
29 | - send = { | ||
30 | - message: { | ||
31 | - text: "퍼스널 컬러 진단하기 선택", | ||
32 | - }, | ||
33 | - }; | ||
34 | - break; | ||
35 | - | ||
36 | - case "봄웜": | ||
37 | - send = { | ||
38 | - message: { | ||
39 | - text: "봄웜 선택", | ||
40 | - }, | ||
41 | - }; | ||
42 | - break; | ||
43 | - | ||
44 | - case "여름쿨": | ||
45 | - send = { | ||
46 | - message: { | ||
47 | - text: "여름쿨 선택", | ||
48 | - }, | ||
49 | - }; | ||
50 | - break; | ||
51 | 64 | ||
52 | - case "가을웜": | ||
53 | - send = { | ||
54 | - message: { | ||
55 | - text: "가을웜 선택", | ||
56 | - }, | ||
57 | - }; | ||
58 | - break; | ||
59 | 65 | ||
60 | - case "겨울쿨": | 66 | + start(eventObj.replyToken, eventObj.message.text); |
61 | - send = { | 67 | + test1(eventObj.replyToken, eventObj.message.text); |
62 | - message: { | ||
63 | - text: "겨을쿨 선택", | ||
64 | - }, | ||
65 | - }; | ||
66 | - break; | ||
67 | 68 | ||
68 | - default: | ||
69 | - send = { | ||
70 | - message: { | ||
71 | - text: "알 수 없는 명령입니다.", | ||
72 | - }, | ||
73 | - }; | ||
74 | - break; | ||
75 | - } | ||
76 | 69 | ||
77 | - res.json(send); | 70 | + res.sendStatus(200); |
78 | }); | 71 | }); |
79 | 72 | ||
80 | -http.createServer(app).listen(9090, function () { | 73 | +function start(replyToken, message) { |
81 | - console.log("서버실행중.."); | 74 | + if (message == "Y") { |
82 | -}); | 75 | + request.post( |
76 | + { | ||
77 | + url: TARGET_URL, | ||
78 | + headers: { | ||
79 | + 'Authorization': `Bearer ${TOKEN}` | ||
80 | + }, | ||
81 | + json: { | ||
82 | + "replyToken": replyToken, | ||
83 | + "messages": [ | ||
84 | + { | ||
85 | + "type": "image", | ||
86 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", | ||
87 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", | ||
88 | + }, | ||
89 | + { | ||
90 | + "type": "image", | ||
91 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", | ||
92 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", | ||
93 | + }, | ||
94 | + { | ||
95 | + "type": "image", | ||
96 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", | ||
97 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", | ||
98 | + }, | ||
99 | + { | ||
100 | + "type": "image", | ||
101 | + "originalContentUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/img.png", | ||
102 | + "previewImageUrl": "https://blog.kakaocdn.net/dn/bf78xb/btqGzYCfgcc/QNj0SdL6KP6Ww89Mtgrmh1/preview.png", | ||
103 | + }, | ||
104 | + ], | ||
105 | + | ||
106 | + } | ||
107 | + }, (error, response, body) => { | ||
108 | + console.log(body) | ||
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}` | ||
120 | + }, | ||
121 | + json: { | ||
122 | + "replyToken": replyToken, | ||
123 | + "messages": [ | ||
124 | + { | ||
125 | + "type": "text", | ||
126 | + "text": "네가지 사진 중 자신의 피부와 가장 잘 어울리는 색을 골라주세요" | ||
127 | + } | ||
128 | + ] | ||
129 | + } | ||
130 | + }, (error, response, body) => { | ||
131 | + console.log(body) | ||
132 | + }); | ||
133 | + } | ||
134 | +} | ||
135 | + | ||
136 | + | ||
137 | + | ||
138 | +try { | ||
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