최현영

whereur

...@@ -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';
......