Showing
1 changed file
with
364 additions
and
35 deletions
... | @@ -18,9 +18,8 @@ const sslport = 23023; | ... | @@ -18,9 +18,8 @@ const sslport = 23023; |
18 | 18 | ||
19 | app.use(bodyParser.json()); | 19 | app.use(bodyParser.json()); |
20 | //전역변수 선언 | 20 | //전역변수 선언 |
21 | -var isstart; | 21 | + |
22 | -var isforecast = 0; | 22 | +//var jsonForforecast; |
23 | -var jsonForforecast; | ||
24 | // body-parser를 이용해 application/x-www-form-urlencoded 파싱 | 23 | // body-parser를 이용해 application/x-www-form-urlencoded 파싱 |
25 | app.use(bodyParser.urlencoded({ extended: false })) | 24 | app.use(bodyParser.urlencoded({ extended: false })) |
26 | 25 | ||
... | @@ -81,62 +80,122 @@ app.use('/', router); | ... | @@ -81,62 +80,122 @@ app.use('/', router); |
81 | 80 | ||
82 | 81 | ||
83 | function ishello(istext){ | 82 | function ishello(istext){ |
84 | - if (istext == '종료'){ | ||
85 | - return false; | ||
86 | - } | ||
87 | if(istext == '안녕'){ | 83 | if(istext == '안녕'){ |
88 | return true; | 84 | return true; |
89 | } | 85 | } |
86 | + else{ | ||
87 | + return false; | ||
88 | + } | ||
90 | } | 89 | } |
91 | 90 | ||
92 | -function firstforecast(isforecast, eventObj){ | 91 | +function firstforecast(isforecast){ |
93 | if(isforecast == '1'){ | 92 | if(isforecast == '1'){ |
94 | - return 1; | 93 | + return true; |
95 | } | 94 | } |
96 | else if(isforecast == '2'){ | 95 | else if(isforecast == '2'){ |
97 | - return 2; | 96 | + return true; |
97 | + }else { | ||
98 | + return false; | ||
99 | + } | ||
100 | +} | ||
101 | + | ||
102 | +function selecttypeforecast(istype){ | ||
103 | + if(istype == '버스'){ | ||
104 | + return true; | ||
105 | + } | ||
106 | + else if (istype == '일반'){ | ||
107 | + return true; | ||
98 | } | 108 | } |
99 | else{ | 109 | else{ |
100 | - helloworld(eventObj); | 110 | + return false; |
101 | - return; | ||
102 | } | 111 | } |
103 | } | 112 | } |
104 | -app.post('/hook', function (req, res) { | ||
105 | 113 | ||
114 | +function typeforecast(typetext){ | ||
115 | + if(typetext == '버스서울'){ | ||
116 | + return true; | ||
117 | + } | ||
118 | + else if (typetext == '버스지방'){ | ||
119 | + return true; | ||
120 | + } | ||
121 | + else if (typetext== '일반서울'){ | ||
122 | + return true; | ||
123 | + } | ||
124 | + else if(typetext == '일반지방'){ | ||
125 | + return true; | ||
126 | + } | ||
127 | + else false; | ||
128 | +} | ||
129 | + | ||
130 | + | ||
131 | +app.post('/hook', function (req, res) { | ||
132 | + //console.log(jsonForforecast); | ||
133 | + | ||
134 | + var isstart; | ||
135 | + var isforecast; | ||
136 | + var isselecttypeforecast; | ||
137 | + var istypeforecast; | ||
106 | var eventObj = req.body.events[0]; | 138 | var eventObj = req.body.events[0]; |
107 | var source = eventObj.source; | 139 | var source = eventObj.source; |
108 | var message = eventObj.message; | 140 | var message = eventObj.message; |
141 | + | ||
109 | // request log | 142 | // request log |
110 | console.log('======================', new Date() ,'======================'); | 143 | console.log('======================', new Date() ,'======================'); |
111 | console.log('[request]', req.body); | 144 | console.log('[request]', req.body); |
112 | console.log('[request source] ', source); | 145 | console.log('[request source] ', source); |
113 | console.log('[request message]', message); | 146 | console.log('[request message]', message); |
114 | 147 | ||
148 | + | ||
115 | isstart = ishello(message.text); | 149 | isstart = ishello(message.text); |
116 | - isforecast = firstforecast(message.text, eventObj); | ||
117 | - | ||
118 | if(isstart == true){ | 150 | if(isstart == true){ |
119 | console.log('[request hello] ', message); | 151 | console.log('[request hello] ', message); |
120 | //console.log(count); | 152 | //console.log(count); |
121 | - helloworld(eventObj ); | 153 | + helloworld(eventObj); |
122 | - isstart = false; | ||
123 | - } | ||
124 | - if(isstart == false){ | ||
125 | - console.log('사용자가 종료를 입력했습니다.'); | ||
126 | - isforecast = null; | ||
127 | } | 154 | } |
128 | 155 | ||
129 | - if(isforecast == 1){ | 156 | + isforecast = firstforecast(message.text); |
130 | - console.log('[request Order] ', message); | 157 | + if(isforecast){ |
131 | - findroad(eventObj); | 158 | + if(message.text == '1'){ |
132 | - } | 159 | + console.log('[request Order] ', message); |
133 | - else if (isforecast == 2){ | 160 | + findroad(eventObj); |
134 | - console.log('[request Order] ', message); | 161 | + } |
135 | - viewhtml(eventObj); | 162 | + else if (message.text == '2'){ |
163 | + console.log('[request Order] ', message); | ||
164 | + viewhtml(eventObj); | ||
165 | + } | ||
136 | } | 166 | } |
137 | - | ||
138 | 167 | ||
168 | + isselecttypeforecast = selecttypeforecast(message.text); | ||
169 | + if(isselecttypeforecast == true){ | ||
170 | + if( message.text == '버스'){ | ||
171 | + console.log('버스에보') | ||
172 | + busforecast(eventObj); | ||
173 | + } | ||
174 | + else if(message.text == '일반'){ | ||
175 | + console.log('일반예보'); | ||
176 | + normalforecast(eventObj); | ||
177 | + } | ||
178 | + } | ||
139 | 179 | ||
180 | + istypeforecast = typeforecast(message.text); | ||
181 | + if(istypeforecast == true){ | ||
182 | + if( message.text == '버스서울'){ | ||
183 | + console.log('버스에보') | ||
184 | + busforecasttoS(eventObj); | ||
185 | + } | ||
186 | + else if(message.text == '버스지방'){ | ||
187 | + console.log('버스예보'); | ||
188 | + busforecasttoG(eventObj); | ||
189 | + } | ||
190 | + else if(message.text == '일반서울'){ | ||
191 | + console.log('일반예보') | ||
192 | + normalforecasttoS(eventObj, jsonForforecast); | ||
193 | + } | ||
194 | + else if(message.text == '일반지방'){ | ||
195 | + console.log('일반에보'); | ||
196 | + normalforecasttoG(eventObj, jsonForforecast); | ||
197 | + } | ||
198 | + } | ||
140 | 199 | ||
141 | res.sendStatus(200); | 200 | res.sendStatus(200); |
142 | }); | 201 | }); |
... | @@ -187,10 +246,82 @@ function viewhtml(eventObj){ | ... | @@ -187,10 +246,82 @@ function viewhtml(eventObj){ |
187 | { | 246 | { |
188 | "type":"text", | 247 | "type":"text", |
189 | "text":"https://www.chyoss.tk:23023/public/maprealtime.html" | 248 | "text":"https://www.chyoss.tk:23023/public/maprealtime.html" |
249 | + } | ||
250 | + ] | ||
251 | + } | ||
252 | + },(error, response, body) => { | ||
253 | + console.log(body) | ||
254 | + }); | ||
255 | +} | ||
256 | + | ||
257 | + | ||
258 | + | ||
259 | +function findroad(eventObj){ | ||
260 | + jsonforecast(function(object){ | ||
261 | + var obj = object; | ||
262 | + var jsonForforecast = obj; | ||
263 | + console.log(jsonForforecast); | ||
264 | + var year = jsonForforecast.list[0].sdate.substr(0,4); | ||
265 | + var month = jsonForforecast.list[0].sdate.substr(4,2); | ||
266 | + var day = jsonForforecast.list[0].sdate.substr(6,2); | ||
267 | + var hour = jsonForforecast.list[0].stime.substr(0,2); | ||
268 | + var min = jsonForforecast.list[0].stime.substr(2,2); | ||
269 | + request.post( | ||
270 | + { | ||
271 | + url: TARGET_URL, | ||
272 | + headers: { | ||
273 | + 'Authorization': `Bearer ${TOKEN}` | ||
274 | + }, | ||
275 | + json: { | ||
276 | + "replyToken":eventObj.replyToken, | ||
277 | + "messages":[ | ||
278 | + { | ||
279 | + "type":"text", | ||
280 | + "text":"교통예보를 시작합니다." | ||
281 | + }, | ||
282 | + { | ||
283 | + "type":"text", | ||
284 | + "text": year + '년 ' + month + "월 " + day + "일 " + hour + ":" + min + "기준입니다." | ||
285 | + }, | ||
286 | + { | ||
287 | + "type":"text", | ||
288 | + "text": '현재 전국 교통량은 대략' + jsonForforecast.list[0].cjunkook + '대 이며, 지방방향 교통량은 대략 ' + jsonForforecast.list[0].cjibangDir + '대, 서울방향 교통량은 대략 ' + jsonForforecast.list[0].cseoulDir + '대입니다.' | ||
289 | + }, | ||
290 | + { | ||
291 | + "type":"text", | ||
292 | + "text":"버스기준으로 보시겠습니까 아니면 일반 승용차 기준으로 보시겠습니까? 버스기준으로 보실려면 '버스'를, 일반 승용차 기준으로 보실려면 '일반'을 입력해 주세요." | ||
293 | + } | ||
294 | + ] | ||
295 | + } | ||
296 | + },(error, response, body) => { | ||
297 | + console.log(body) | ||
298 | + }); | ||
299 | + }); | ||
300 | + | ||
301 | +} | ||
302 | + | ||
303 | + | ||
304 | +function busforecast(eventObj){ | ||
305 | + request.post( | ||
306 | + { | ||
307 | + url: TARGET_URL, | ||
308 | + headers: { | ||
309 | + 'Authorization': `Bearer ${TOKEN}` | ||
310 | + }, | ||
311 | + json: { | ||
312 | + "replyToken":eventObj.replyToken, | ||
313 | + "messages":[ | ||
314 | + { | ||
315 | + "type":"text", | ||
316 | + "text":"버스 예보를 시작합니다." | ||
190 | }, | 317 | }, |
191 | { | 318 | { |
192 | "type":"text", | 319 | "type":"text", |
193 | - "text":"종료를 입력하시면 종료됩니다." | 320 | + "text":"'서울발 지방행' 교통예보는 '버스서울'을," |
321 | + }, | ||
322 | + { | ||
323 | + "type":"text", | ||
324 | + "text":"'지방발 서울행' 교통예보는 '버스지방'을 입력해주세요" | ||
194 | } | 325 | } |
195 | ] | 326 | ] |
196 | } | 327 | } |
... | @@ -201,10 +332,41 @@ function viewhtml(eventObj){ | ... | @@ -201,10 +332,41 @@ function viewhtml(eventObj){ |
201 | 332 | ||
202 | 333 | ||
203 | 334 | ||
204 | -function findroad(eventObj){ | 335 | +function normalforecast(eventObj){ |
336 | + request.post( | ||
337 | + { | ||
338 | + url: TARGET_URL, | ||
339 | + headers: { | ||
340 | + 'Authorization': `Bearer ${TOKEN}` | ||
341 | + }, | ||
342 | + json: { | ||
343 | + "replyToken":eventObj.replyToken, | ||
344 | + "messages":[ | ||
345 | + { | ||
346 | + "type":"text", | ||
347 | + "text":"일반 승용차 예보를 시작합니다." | ||
348 | + }, | ||
349 | + { | ||
350 | + "type":"text", | ||
351 | + "text":"'서울발 지방행' 교통예보는 '일반서울'을," | ||
352 | + }, | ||
353 | + { | ||
354 | + "type":"text", | ||
355 | + "text":"'지방발 서울행' 교통예보는 '일반지방'을 입력해주세요" | ||
356 | + } | ||
357 | + ] | ||
358 | + } | ||
359 | + },(error, response, body) => { | ||
360 | + console.log(body) | ||
361 | + }); | ||
362 | +} | ||
363 | + | ||
364 | + | ||
365 | + | ||
366 | +function busforecasttoS(eventObj){ | ||
205 | jsonforecast(function(object){ | 367 | jsonforecast(function(object){ |
206 | var obj = object; | 368 | var obj = object; |
207 | - jsonForforecast = obj; | 369 | + var jsonForforecast = obj; |
208 | console.log(jsonForforecast); | 370 | console.log(jsonForforecast); |
209 | request.post( | 371 | request.post( |
210 | { | 372 | { |
... | @@ -217,31 +379,198 @@ function findroad(eventObj){ | ... | @@ -217,31 +379,198 @@ function findroad(eventObj){ |
217 | "messages":[ | 379 | "messages":[ |
218 | { | 380 | { |
219 | "type":"text", | 381 | "type":"text", |
220 | - "text":"교통예보를 시작합니다." | 382 | + "text":"서울발 버스 소요 시간은 다음과 같습니다." |
383 | + }, | ||
384 | + { | ||
385 | + "type":"text", | ||
386 | + "text":'서울발 대전행 : 대략 ' + jsonForforecast.list[0].csudj_bus + '소요 예상 , ' + '서울발 대구행 : 대략 ' + jsonForforecast.list[0].csudg_bus + '소요 예상' | ||
221 | }, | 387 | }, |
222 | { | 388 | { |
223 | "type":"text", | 389 | "type":"text", |
224 | - "text":jsonForforecast.list[0].sdate+ ', ' + jsonForforecast.list[0].stime + '기준입니다.' | 390 | + "text":'서울발 울산행 : 대략 ' + jsonForforecast.list[0].csuus_bus + '소요 예상' + '서울발 부산행 : 대략 ' + jsonForforecast.list[0].csubs_bus + '소요 예상' |
225 | }, | 391 | }, |
226 | { | 392 | { |
227 | "type":"text", | 393 | "type":"text", |
228 | - "text": '현재 전국 교통량은 ' + jsonForforecast.list[0].cjunkook + '대 이며, 지방방향 교통량은 ' + jsonForforecast.list[0].cjibangDir + '대, 서울방향 교통량은 ' + jsonForforecast.list[0].cseoulDir + '대입니다.' | 394 | + "text":'서울발 목포행 : 대략 ' + jsonForforecast.list[0].csump_bus + '소요 예상' + '서울발 광주행 : 대략 ' + jsonForforecast.list[0].csugj_bus + '소요 예상' |
229 | }, | 395 | }, |
230 | { | 396 | { |
231 | "type":"text", | 397 | "type":"text", |
232 | - "text":"버스기준으로 보시겠습니까 아니면 일반 승용차 기준으로 보시겠습니까? 버스기준으로 보실려면 1번을, 일반 승용차 기준으로 보실려면 2번을 입력해 주세요." | 398 | + "text":'서울발 강릉행 : 대략 ' + jsonForforecast.list[0].csukr_bus + '소요 예상' |
233 | } | 399 | } |
400 | + | ||
234 | ] | 401 | ] |
235 | } | 402 | } |
236 | },(error, response, body) => { | 403 | },(error, response, body) => { |
237 | console.log(body) | 404 | console.log(body) |
238 | }); | 405 | }); |
406 | + | ||
239 | }); | 407 | }); |
240 | 408 | ||
241 | } | 409 | } |
410 | + | ||
411 | + | ||
412 | + | ||
413 | +function busforecasttoG(eventObj){ | ||
242 | 414 | ||
243 | 415 | ||
244 | 416 | ||
417 | + jsonforecast(function(object){ | ||
418 | + var obj = object; | ||
419 | + var jsonForforecast = obj; | ||
420 | + request.post( | ||
421 | + { | ||
422 | + url: TARGET_URL, | ||
423 | + headers: { | ||
424 | + 'Authorization': `Bearer ${TOKEN}` | ||
425 | + }, | ||
426 | + json: { | ||
427 | + "replyToken":eventObj.replyToken, | ||
428 | + "messages":[ | ||
429 | + { | ||
430 | + "type":"text", | ||
431 | + "text":"지방발 버스 소요 시간은 다음과 같습니다." | ||
432 | + }, | ||
433 | + { | ||
434 | + "type":"text", | ||
435 | + "text":"대전발 서울행 : 대략 " + jsonForforecast.list[0].cdjsu_bus + "소요 예상" | ||
436 | + }, | ||
437 | + { | ||
438 | + "type":"text", | ||
439 | + "text":"대구발 서울행 : 대략 " + jsonForforecast.list[0].cdgsu_bus + "소요 예상" | ||
440 | + }, | ||
441 | + { | ||
442 | + "type":"text", | ||
443 | + "text":"울산발 서울행 : 대략 " + jsonForforecast.list[0].cussu_bus + "소요 예상" | ||
444 | + }, | ||
445 | + { | ||
446 | + "type":"text", | ||
447 | + "text":"부산발 서울행 : 대략 " + jsonForforecast.list[0].cbssu_bus + "소요 예상" | ||
448 | + }, | ||
449 | + { | ||
450 | + "type":"text", | ||
451 | + "text":"목포발 서울행 : 대략 " + jsonForforecast.list[0].cmpsu_bus + "소요 예상" | ||
452 | + }, | ||
453 | + { | ||
454 | + "type":"text", | ||
455 | + "text":"광주발 서울행 : 대략 " + jsonForforecast.list[0].cgjsu_bus + "소요 예상" | ||
456 | + }, | ||
457 | + { | ||
458 | + "type":"text", | ||
459 | + "text":"강릉발 서울행 : 대략 " + jsonForforecast.list[0].ckrsu_bus + "소요 예상" | ||
460 | + } | ||
461 | + | ||
462 | + ] | ||
463 | + } | ||
464 | + },(error, response, body) => { | ||
465 | + console.log(body) | ||
466 | + }); | ||
467 | + | ||
468 | + }); | ||
469 | + | ||
470 | +} | ||
471 | + | ||
472 | +function normalforecasttoS(eventObj, json){ | ||
473 | + request.post( | ||
474 | + { | ||
475 | + url: TARGET_URL, | ||
476 | + headers: { | ||
477 | + 'Authorization': `Bearer ${TOKEN}` | ||
478 | + }, | ||
479 | + json: { | ||
480 | + "replyToken":eventObj.replyToken, | ||
481 | + "messages":[ | ||
482 | + { | ||
483 | + "type":"text", | ||
484 | + "text":"서울발 일반 자가용 소요 시간은 다음과 같습니다." | ||
485 | + }, | ||
486 | + { | ||
487 | + "type":"text", | ||
488 | + "text":"서울발 대전행 : 대략 " + json.list[0].csudj + "소요 예상" | ||
489 | + }, | ||
490 | + { | ||
491 | + "type":"text", | ||
492 | + "text":"서울발 대구행 : 대략 " + json.list[0].csudg+ "소요 예상" | ||
493 | + }, | ||
494 | + { | ||
495 | + "type":"text", | ||
496 | + "text":"서울발 울산행 : 대략 " + json.list[0].csuus + "소요 예상" | ||
497 | + }, | ||
498 | + { | ||
499 | + "type":"text", | ||
500 | + "text":"서울발 부산행 : 대략 " + json.list[0].csubs + "소요 예상" | ||
501 | + }, | ||
502 | + { | ||
503 | + "type":"text", | ||
504 | + "text":"서울발 목포행 : 대략 " + json.list[0].csump+ "소요 예상" | ||
505 | + }, | ||
506 | + { | ||
507 | + "type":"text", | ||
508 | + "text":"서울발 광주행 : 대략 " + json.list[0].csugj + "소요 예상" | ||
509 | + }, | ||
510 | + { | ||
511 | + "type":"text", | ||
512 | + "text":"서울발 강릉행 : 대략 " + json.list[0].csukr + "소요 예상" | ||
513 | + } | ||
514 | + | ||
515 | + ] | ||
516 | + } | ||
517 | + },(error, response, body) => { | ||
518 | + console.log(body) | ||
519 | + }); | ||
520 | +} | ||
521 | + | ||
522 | + | ||
523 | + | ||
524 | + | ||
525 | +function normalforecasttoG(eventObj, json){ | ||
526 | + request.post( | ||
527 | + { | ||
528 | + url: TARGET_URL, | ||
529 | + headers: { | ||
530 | + 'Authorization': `Bearer ${TOKEN}` | ||
531 | + }, | ||
532 | + json: { | ||
533 | + "replyToken":eventObj.replyToken, | ||
534 | + "messages":[ | ||
535 | + { | ||
536 | + "type":"text", | ||
537 | + "text":"지방발 일반 자가용 소요 시간은 다음과 같습니다." | ||
538 | + }, | ||
539 | + { | ||
540 | + "type":"text", | ||
541 | + "text":"대전발 서울행 : 대략 " + json.list[0].cdjsu + "소요 예상" | ||
542 | + }, | ||
543 | + { | ||
544 | + "type":"text", | ||
545 | + "text":"대구발 서울행 : 대략 " + json.list[0].cdgsu + "소요 예상" | ||
546 | + }, | ||
547 | + { | ||
548 | + "type":"text", | ||
549 | + "text":"울산발 서울행 : 대략 " + json.list[0].cussu + "소요 예상" | ||
550 | + }, | ||
551 | + { | ||
552 | + "type":"text", | ||
553 | + "text":"부산발 서울행 : 대략 " + json.list[0].cbssu + "소요 예상" | ||
554 | + }, | ||
555 | + { | ||
556 | + "type":"text", | ||
557 | + "text":"목포발 서울행 : 대략 " + json.list[0].cmpsu + "소요 예상" | ||
558 | + }, | ||
559 | + { | ||
560 | + "type":"text", | ||
561 | + "text":"광주발 서울행 : 대략 " + json.list[0].cgjsu + "소요 예상" | ||
562 | + }, | ||
563 | + { | ||
564 | + "type":"text", | ||
565 | + "text":"강릉발 서울행 : 대략 " + json.list[0].ckrsu + "소요 예상" | ||
566 | + } | ||
567 | + | ||
568 | + ] | ||
569 | + } | ||
570 | + },(error, response, body) => { | ||
571 | + console.log(body) | ||
572 | + }); | ||
573 | +} | ||
245 | 574 | ||
246 | 575 | ||
247 | // var url1 = 'http://data.ex.co.kr/openapi/odtraffic/trafficAmountByCongest'; | 576 | // var url1 = 'http://data.ex.co.kr/openapi/odtraffic/trafficAmountByCongest'; | ... | ... |
-
Please register or login to post a comment