Showing
1 changed file
with
146 additions
and
85 deletions
1 | var express = require('express'); | 1 | var express = require('express'); |
2 | const request = require('request'); | 2 | const request = require('request'); |
3 | const bodyParser = require('body-parser'); | 3 | const bodyParser = require('body-parser'); |
4 | +var app = express(); | ||
4 | var static = require('serve-static'); | 5 | var static = require('serve-static'); |
5 | 6 | ||
6 | const fs = require('fs'); | 7 | const fs = require('fs'); |
... | @@ -14,13 +15,12 @@ const TOKEN = 'sqNjA99TptppqvcoVFAnU7Kawsl+s7l+JgnZ7r2is97qrFQraIn0sLQ6mTsIPvXLG | ... | @@ -14,13 +15,12 @@ const TOKEN = 'sqNjA99TptppqvcoVFAnU7Kawsl+s7l+JgnZ7r2is97qrFQraIn0sLQ6mTsIPvXLG |
14 | 15 | ||
15 | const domain = "www.chyoss.tk" | 16 | const domain = "www.chyoss.tk" |
16 | const sslport = 23023; | 17 | const sslport = 23023; |
17 | -var app = express(); | ||
18 | 18 | ||
19 | app.use(bodyParser.json()); | 19 | app.use(bodyParser.json()); |
20 | - | ||
21 | -var isstart = true; | ||
22 | //전역변수 선언 | 20 | //전역변수 선언 |
23 | - | 21 | +var isstart; |
22 | +var isforecast = 0; | ||
23 | +var jsonForforecast; | ||
24 | // body-parser를 이용해 application/x-www-form-urlencoded 파싱 | 24 | // body-parser를 이용해 application/x-www-form-urlencoded 파싱 |
25 | app.use(bodyParser.urlencoded({ extended: false })) | 25 | app.use(bodyParser.urlencoded({ extended: false })) |
26 | 26 | ||
... | @@ -54,8 +54,53 @@ router.route('/process/mapcctv').get(function(req, res){ | ... | @@ -54,8 +54,53 @@ router.route('/process/mapcctv').get(function(req, res){ |
54 | }); | 54 | }); |
55 | 55 | ||
56 | 56 | ||
57 | + | ||
58 | +function jsonforecast(callback){ | ||
59 | + var url2 = 'http://data.ex.co.kr/openapi/safeDriving/forecast'; | ||
60 | + var queryParams2 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ||
61 | + queryParams2 += '&' + encodeURIComponent('type') + '=' + encodeURIComponent('json'); /* */ | ||
62 | + var obj | ||
63 | + request( | ||
64 | + { | ||
65 | + url: url2 + queryParams2, | ||
66 | + method: 'GET' | ||
67 | + }, function (error, response, body) { | ||
68 | + console.log('Status', response.statusCode); | ||
69 | + console.log('Headers', JSON.stringify(response.headers)); | ||
70 | + console.log('Reponse received', body); | ||
71 | + obj = JSON.parse(body); | ||
72 | + console.log(obj); | ||
73 | + callback(obj); | ||
74 | + }); | ||
75 | + | ||
76 | +}; | ||
77 | + | ||
78 | + | ||
79 | + | ||
57 | app.use('/', router); | 80 | app.use('/', router); |
58 | 81 | ||
82 | + | ||
83 | +function ishello(istext){ | ||
84 | + if (istext == '종료'){ | ||
85 | + return false; | ||
86 | + } | ||
87 | + if(istext == '안녕'){ | ||
88 | + return true; | ||
89 | + } | ||
90 | +} | ||
91 | + | ||
92 | +function firstforecast(isforecast, eventObj){ | ||
93 | + if(isforecast == '1'){ | ||
94 | + return 1; | ||
95 | + } | ||
96 | + else if(isforecast == '2'){ | ||
97 | + return 2; | ||
98 | + } | ||
99 | + else{ | ||
100 | + helloworld(eventObj); | ||
101 | + return; | ||
102 | + } | ||
103 | +} | ||
59 | app.post('/hook', function (req, res) { | 104 | app.post('/hook', function (req, res) { |
60 | 105 | ||
61 | var eventObj = req.body.events[0]; | 106 | var eventObj = req.body.events[0]; |
... | @@ -66,11 +111,37 @@ app.post('/hook', function (req, res) { | ... | @@ -66,11 +111,37 @@ app.post('/hook', function (req, res) { |
66 | console.log('[request]', req.body); | 111 | console.log('[request]', req.body); |
67 | console.log('[request source] ', source); | 112 | console.log('[request source] ', source); |
68 | console.log('[request message]', message); | 113 | console.log('[request message]', message); |
69 | - helloworld(isstart, eventObj); | 114 | + |
115 | + isstart = ishello(message.text); | ||
116 | + isforecast = firstforecast(message.text, eventObj); | ||
117 | + | ||
118 | + if(isstart == true){ | ||
119 | + console.log('[request hello] ', message); | ||
120 | + //console.log(count); | ||
121 | + helloworld(eventObj ); | ||
122 | + isstart = false; | ||
123 | + } | ||
124 | + if(isstart == false){ | ||
125 | + console.log('사용자가 종료를 입력했습니다.'); | ||
126 | + isforecast = null; | ||
127 | + } | ||
128 | + | ||
129 | + if(isforecast == 1){ | ||
130 | + console.log('[request Order] ', message); | ||
131 | + findroad(eventObj); | ||
132 | + } | ||
133 | + else if (isforecast == 2){ | ||
134 | + console.log('[request Order] ', message); | ||
135 | + viewhtml(eventObj); | ||
136 | + } | ||
137 | + | ||
138 | + | ||
139 | + | ||
140 | + | ||
70 | res.sendStatus(200); | 141 | res.sendStatus(200); |
71 | }); | 142 | }); |
72 | 143 | ||
73 | -function helloworld(isstart, eventObj){ | 144 | +function helloworld(eventObj){ |
74 | request.post( | 145 | request.post( |
75 | { | 146 | { |
76 | url: TARGET_URL, | 147 | url: TARGET_URL, |
... | @@ -90,7 +161,36 @@ function helloworld(isstart, eventObj){ | ... | @@ -90,7 +161,36 @@ function helloworld(isstart, eventObj){ |
90 | }, | 161 | }, |
91 | { | 162 | { |
92 | "type":"text", | 163 | "type":"text", |
164 | + "text":"현재 교통 예보가 궁금하시다면 1번을, 실시간 교통혼잡 상황을 보실려면 2번을 눌러주세요" | ||
165 | + } | ||
166 | + ] | ||
167 | + } | ||
168 | + },(error, response, body) => { | ||
169 | + console.log(body) | ||
170 | + }); | ||
171 | +} | ||
172 | + | ||
173 | +function viewhtml(eventObj){ | ||
174 | + request.post( | ||
175 | + { | ||
176 | + url: TARGET_URL, | ||
177 | + headers: { | ||
178 | + 'Authorization': `Bearer ${TOKEN}` | ||
179 | + }, | ||
180 | + json: { | ||
181 | + "replyToken":eventObj.replyToken, | ||
182 | + "messages":[ | ||
183 | + { | ||
184 | + "type":"text", | ||
185 | + "text":"실시간 교통상황 웹페이지로 안내합니다." | ||
186 | + }, | ||
187 | + { | ||
188 | + "type":"text", | ||
93 | "text":"https://www.chyoss.tk:23023/public/maprealtime.html" | 189 | "text":"https://www.chyoss.tk:23023/public/maprealtime.html" |
190 | + }, | ||
191 | + { | ||
192 | + "type":"text", | ||
193 | + "text":"종료를 입력하시면 종료됩니다." | ||
94 | } | 194 | } |
95 | ] | 195 | ] |
96 | } | 196 | } |
... | @@ -101,71 +201,47 @@ function helloworld(isstart, eventObj){ | ... | @@ -101,71 +201,47 @@ function helloworld(isstart, eventObj){ |
101 | 201 | ||
102 | 202 | ||
103 | 203 | ||
204 | +function findroad(eventObj){ | ||
205 | + jsonforecast(function(object){ | ||
206 | + var obj = object; | ||
207 | + jsonForforecast = obj; | ||
208 | + console.log(jsonForforecast); | ||
209 | + request.post( | ||
210 | + { | ||
211 | + url: TARGET_URL, | ||
212 | + headers: { | ||
213 | + 'Authorization': `Bearer ${TOKEN}` | ||
214 | + }, | ||
215 | + json: { | ||
216 | + "replyToken":eventObj.replyToken, | ||
217 | + "messages":[ | ||
218 | + { | ||
219 | + "type":"text", | ||
220 | + "text":"교통예보를 시작합니다." | ||
221 | + }, | ||
222 | + { | ||
223 | + "type":"text", | ||
224 | + "text":jsonForforecast.list[0].sdate+ ', ' + jsonForforecast.list[0].stime + '기준입니다.' | ||
225 | + }, | ||
226 | + { | ||
227 | + "type":"text", | ||
228 | + "text": '현재 전국 교통량은 ' + jsonForforecast.list[0].cjunkook + '대 이며, 지방방향 교통량은 ' + jsonForforecast.list[0].cjibangDir + '대, 서울방향 교통량은 ' + jsonForforecast.list[0].cseoulDir + '대입니다.' | ||
229 | + }, | ||
230 | + { | ||
231 | + "type":"text", | ||
232 | + "text":"버스기준으로 보시겠습니까 아니면 일반 승용차 기준으로 보시겠습니까? 버스기준으로 보실려면 1번을, 일반 승용차 기준으로 보실려면 2번을 입력해 주세요." | ||
233 | + } | ||
234 | + ] | ||
235 | + } | ||
236 | + },(error, response, body) => { | ||
237 | + console.log(body) | ||
238 | + }); | ||
239 | + }); | ||
240 | + | ||
241 | +} | ||
242 | + | ||
243 | + | ||
104 | 244 | ||
105 | -// function selectlan(language){ | ||
106 | -// if( language == '일본어'){ | ||
107 | - | ||
108 | -// return 'target=ja'; | ||
109 | -// } | ||
110 | -// else if (language == '영어'){ | ||
111 | - | ||
112 | -// return 'target=en'; | ||
113 | -// } | ||
114 | -// else if (language == '프랑스어'){ | ||
115 | - | ||
116 | -// return 'target=fr'; | ||
117 | -// } | ||
118 | -// } | ||
119 | - | ||
120 | -// function is(lantext){ | ||
121 | -// if (lantext == '일본어' || lantext == '영어' || lantext == '프랑스어'){ | ||
122 | -// return true; | ||
123 | -// }else{ | ||
124 | -// return false; | ||
125 | -// } | ||
126 | -// } | ||
127 | - | ||
128 | - | ||
129 | - | ||
130 | -// function trans(replyToken, selectinput ,message) { | ||
131 | -// //var select = selectlan(lan); | ||
132 | -// var selectin = selectinput | ||
133 | -// request.post( | ||
134 | -// { | ||
135 | -// url: PAPAGO_URL, | ||
136 | -// headers: { | ||
137 | -// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
138 | -// 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
139 | -// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
140 | -// }, | ||
141 | -// body: selectin + message, | ||
142 | -// json:true | ||
143 | -// },(error, response, body) => { | ||
144 | -// if(!error && response.statusCode == 200) { | ||
145 | -// console.log(body.message); | ||
146 | -// var transMessage = body.message.result.translatedText; | ||
147 | -// request.post( | ||
148 | -// { | ||
149 | -// url: TARGET_URL, | ||
150 | -// headers: { | ||
151 | -// 'Authorization': `Bearer ${TOKEN}` | ||
152 | -// }, | ||
153 | -// json: { | ||
154 | -// "replyToken":replyToken, | ||
155 | -// "messages":[ | ||
156 | -// { | ||
157 | -// "type":"text", | ||
158 | -// "text":transMessage | ||
159 | -// } | ||
160 | -// ] | ||
161 | -// } | ||
162 | -// },(error, response, body) => { | ||
163 | -// console.log(body) | ||
164 | -// }); | ||
165 | -// } | ||
166 | -// }); | ||
167 | - | ||
168 | -// } | ||
169 | 245 | ||
170 | 246 | ||
171 | // var url1 = 'http://data.ex.co.kr/openapi/odtraffic/trafficAmountByCongest'; | 247 | // var url1 = 'http://data.ex.co.kr/openapi/odtraffic/trafficAmountByCongest'; |
... | @@ -186,21 +262,6 @@ function helloworld(isstart, eventObj){ | ... | @@ -186,21 +262,6 @@ function helloworld(isstart, eventObj){ |
186 | 262 | ||
187 | 263 | ||
188 | 264 | ||
189 | -// var url2 = 'http://data.ex.co.kr/openapi/safeDriving/forecast'; | ||
190 | -// var queryParams2 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ||
191 | -// queryParams2 += '&' + encodeURIComponent('type') + '=' + encodeURIComponent('json'); /* */ | ||
192 | - | ||
193 | -// request({ | ||
194 | -// url: url2 + queryParams2, | ||
195 | -// method: 'GET' | ||
196 | -// }, function (error, response, body) { | ||
197 | -// console.log('Status', response.statusCode); | ||
198 | -// console.log('Headers', JSON.stringify(response.headers)); | ||
199 | -// console.log('Reponse received', body); | ||
200 | -// var obj = JSON.parse(body); | ||
201 | -// console.log(obj); | ||
202 | -// console.log(obj.list[0]) | ||
203 | -// }); | ||
204 | 265 | ||
205 | // var url3 = 'http://data.ex.co.kr/openapi/trafficapi/trafficAll'; | 266 | // var url3 = 'http://data.ex.co.kr/openapi/trafficapi/trafficAll'; |
206 | // var queryParams3 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | 267 | // var queryParams3 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ... | ... |
-
Please register or login to post a comment