곽원석

Update app.js

Delete app_mother_legacy.js
...@@ -7,6 +7,7 @@ var request = require('request'); ...@@ -7,6 +7,7 @@ var request = require('request');
7 // api로 받아올 데이터포맷이 xml이므로 json으로 파싱할 필요가 있음 7 // api로 받아올 데이터포맷이 xml이므로 json으로 파싱할 필요가 있음
8 var convert = require('xml-js'); 8 var convert = require('xml-js');
9 const bodyParser = require('body-parser'); 9 const bodyParser = require('body-parser');
10 +var moment = require('moment');
10 11
11 // 라인 메신져 12 // 라인 메신져
12 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' 13 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
...@@ -18,7 +19,6 @@ const SERVICE_KEY = 'DMUPOq6b%2B%2F1gqfLEXQ6bnhgoTO73BfPprA6HVNcV%2F6vHMGG%2Bgiw ...@@ -18,7 +19,6 @@ const SERVICE_KEY = 'DMUPOq6b%2B%2F1gqfLEXQ6bnhgoTO73BfPprA6HVNcV%2F6vHMGG%2Bgiw
18 queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + SERVICE_KEY; // Service Key 19 queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + SERVICE_KEY; // Service Key
19 queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1'); 20 queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1');
20 queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('4'); 21 queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('4');
21 -var date;
22 var menu = 0; 22 var menu = 0;
23 var start_checker = false; 23 var start_checker = false;
24 24
...@@ -60,11 +60,11 @@ app.post('/hook', function (req, res) { ...@@ -60,11 +60,11 @@ app.post('/hook', function (req, res) {
60 "messages":[ 60 "messages":[
61 { 61 {
62 "type":"text", 62 "type":"text",
63 - "text":"명령어 : /코로나 or /corona 로 코로나 19 bot을 시작하셨습니다." 63 + "text":"명령어 : " + message.text + " 로 코로나 19 bot을 시작하셨습니다."
64 }, 64 },
65 { 65 {
66 "type":"text", 66 "type":"text",
67 - "text":"명령어 :\n1. 확진자 수 :\t/확진자\n2. 격리해제 수 :\t/격리해제\n3. 검사진행 수 :\t/검사진행\n4. 사망자 수 :\t/사망자\n5. 치료중 환자 수 :\t/치료중\n6. 결과음성 수 :\t/결과음성\n7. 누적검사 수 :\t/누적검사\n8. 누적 확진률 :\t/누적확진\n" 67 + "text":"명령어 :\n1. 확진자 수 :\t\t\t\t\t\t\t/확진자\n2. 격리해제 수 :\t\t/격리해제\n3. 검사진행 수 :\t\t/검사진행\n4. 사망자 수 :\t\t\t\t\t\t\t/사망자\n5. 치료중 환자 수 :\t/치료중\n6. 결과음성 수 :\t\t/결과음성\n7. 누적검사 수 :\t\t/누적검사\n8. 누적 확진률 :\t\t/누적확진\n"
68 } 68 }
69 ] 69 ]
70 } 70 }
...@@ -92,7 +92,7 @@ app.post('/hook', function (req, res) { ...@@ -92,7 +92,7 @@ app.post('/hook', function (req, res) {
92 }, 92 },
93 { 93 {
94 "type":"text", 94 "type":"text",
95 - "text":"예시) 20201209" 95 + "text":"포맷) YYYYMMDD"
96 } 96 }
97 ] 97 ]
98 } 98 }
...@@ -119,7 +119,7 @@ app.post('/hook', function (req, res) { ...@@ -119,7 +119,7 @@ app.post('/hook', function (req, res) {
119 }, 119 },
120 { 120 {
121 "type":"text", 121 "type":"text",
122 - "text":"예시) 20201209" 122 + "text":"포맷) YYYYMMDD"
123 } 123 }
124 ] 124 ]
125 } 125 }
...@@ -146,7 +146,7 @@ app.post('/hook', function (req, res) { ...@@ -146,7 +146,7 @@ app.post('/hook', function (req, res) {
146 }, 146 },
147 { 147 {
148 "type":"text", 148 "type":"text",
149 - "text":"예시) 20201209" 149 + "text":"포맷) YYYYMMDD"
150 } 150 }
151 ] 151 ]
152 } 152 }
...@@ -173,7 +173,7 @@ app.post('/hook', function (req, res) { ...@@ -173,7 +173,7 @@ app.post('/hook', function (req, res) {
173 }, 173 },
174 { 174 {
175 "type":"text", 175 "type":"text",
176 - "text":"예시) 20201209" 176 + "text":"포맷) YYYYMMDD"
177 } 177 }
178 ] 178 ]
179 } 179 }
...@@ -200,7 +200,7 @@ app.post('/hook', function (req, res) { ...@@ -200,7 +200,7 @@ app.post('/hook', function (req, res) {
200 }, 200 },
201 { 201 {
202 "type":"text", 202 "type":"text",
203 - "text":"예시) 20201209" 203 + "text":"포맷) YYYYMMDD"
204 } 204 }
205 ] 205 ]
206 } 206 }
...@@ -227,7 +227,7 @@ app.post('/hook', function (req, res) { ...@@ -227,7 +227,7 @@ app.post('/hook', function (req, res) {
227 }, 227 },
228 { 228 {
229 "type":"text", 229 "type":"text",
230 - "text":"예시) 20201209" 230 + "text":"포맷) YYYYMMDD"
231 } 231 }
232 ] 232 ]
233 } 233 }
...@@ -254,7 +254,7 @@ app.post('/hook', function (req, res) { ...@@ -254,7 +254,7 @@ app.post('/hook', function (req, res) {
254 }, 254 },
255 { 255 {
256 "type":"text", 256 "type":"text",
257 - "text":"예시) 20201209" 257 + "text":"포맷) YYYYMMDD"
258 } 258 }
259 ] 259 ]
260 } 260 }
...@@ -277,11 +277,11 @@ app.post('/hook', function (req, res) { ...@@ -277,11 +277,11 @@ app.post('/hook', function (req, res) {
277 "messages":[ 277 "messages":[
278 { 278 {
279 "type":"text", 279 "type":"text",
280 - "text":"확인하고 싶으신 일자를 적어주세요." 280 + "text":"확인하고 싶으신 일자를 적어주세요.\n포맷 : YYYYMMDD 입니다."
281 }, 281 },
282 { 282 {
283 "type":"text", 283 "type":"text",
284 - "text":"예시) 20201209" 284 + "text":"포맷) YYYYMMDD"
285 } 285 }
286 ] 286 ]
287 } 287 }
...@@ -303,7 +303,7 @@ app.post('/hook', function (req, res) { ...@@ -303,7 +303,7 @@ app.post('/hook', function (req, res) {
303 "messages":[ 303 "messages":[
304 { 304 {
305 "type":"text", 305 "type":"text",
306 - "text":"선택하신 정보가 정확하지 않거나 없습니다.\\n처음부터 다시 진행해주세요." 306 + "text":"선택하신 정보가 정확하지 않거나 없습니다.\n처음부터 다시 진행해주세요."
307 }, 307 },
308 ] 308 ]
309 } 309 }
...@@ -314,10 +314,9 @@ app.post('/hook', function (req, res) { ...@@ -314,10 +314,9 @@ app.post('/hook', function (req, res) {
314 return; 314 return;
315 } 315 }
316 316
317 - if((menu != 0) && (message.text)){ 317 + if((menu != 0) && moment(message.text).isAfter(20200301)){
318 - date = message.text; 318 + today = message.text;
319 - queryParams += '&' + encodeURIComponent('startCreateDt') + '=' + encodeURIComponent(date); 319 + queryParams += '&' + encodeURIComponent('endCreateDt') + '=' + encodeURIComponent(today);
320 - queryParams += '&' + encodeURIComponent('endCreateDt') + '=' + encodeURIComponent(date);
321 switch(menu){ 320 switch(menu){
322 case 1: 321 case 1:
323 bot_reply_1(eventObj.replyToken, message); 322 bot_reply_1(eventObj.replyToken, message);
...@@ -367,6 +366,27 @@ app.post('/hook', function (req, res) { ...@@ -367,6 +366,27 @@ app.post('/hook', function (req, res) {
367 console.log(body) 366 console.log(body)
368 }); 367 });
369 } 368 }
369 + else{
370 + request.post(
371 + {
372 + url: TARGET_URL,
373 + headers: {
374 + 'Authorization': `Bearer ${TOKEN}`
375 + },
376 + json: {
377 + "replyToken":eventObj.replyToken,
378 + "messages":[
379 + {
380 + "type":"text",
381 + "text":"바른 날짜를 입력해주세요.."
382 + }
383 + ]
384 + }
385 + },(error, response, body) => {
386 + console.log(body)
387 + });
388 + }
389 +
370 390
371 res.sendStatus(200); 391 res.sendStatus(200);
372 }); 392 });
...@@ -383,7 +403,8 @@ function bot_reply_1(replyToken, message) { ...@@ -383,7 +403,8 @@ function bot_reply_1(replyToken, message) {
383 const jsonData = JSON.parse(xmlToJson); // json text -> json object 403 const jsonData = JSON.parse(xmlToJson); // json text -> json object
384 console.log('Reponse received', xmlToJson); // json text 404 console.log('Reponse received', xmlToJson); // json text
385 405
386 - var resultMessage = jsonData.response.body.items.item; 406 + var resultMessage1 = jsonData.response.body.items.item[1];
407 + var resultMessage2 = jsonData.response.body.items.item[0];
387 408
388 request.post( 409 request.post(
389 { 410 {
...@@ -400,11 +421,11 @@ function bot_reply_1(replyToken, message) { ...@@ -400,11 +421,11 @@ function bot_reply_1(replyToken, message) {
400 }, 421 },
401 { 422 {
402 "type":"text", 423 "type":"text",
403 - "text": "확진자 수 : " + resultMessage.decideCnt._text 424 + "text": "확진자 수 : " + (parseInt(resultMessage2.decideCnt._text)-parseInt(resultMessage1.decideCnt._text))
404 }, 425 },
405 { 426 {
406 "type":"text", 427 "type":"text",
407 - "text": "등록일시분초 : " + resultMessage.createDt._text 428 + "text": "등록일시분초 : " + resultMessage2.createDt._text
408 } 429 }
409 ] 430 ]
410 } 431 }
...@@ -426,8 +447,8 @@ function bot_reply_2(replyToken, message) { ...@@ -426,8 +447,8 @@ function bot_reply_2(replyToken, message) {
426 const jsonData = JSON.parse(xmlToJson); // json text -> json object 447 const jsonData = JSON.parse(xmlToJson); // json text -> json object
427 console.log('Reponse received', xmlToJson); // json text 448 console.log('Reponse received', xmlToJson); // json text
428 449
429 - var resultMessage = jsonData.response.body.items.item; 450 + var resultMessage1 = jsonData.response.body.items.item[1];
430 - 451 + var resultMessage2 = jsonData.response.body.items.item[0];
431 request.post( 452 request.post(
432 { 453 {
433 url: TARGET_URL, 454 url: TARGET_URL,
...@@ -443,11 +464,11 @@ function bot_reply_2(replyToken, message) { ...@@ -443,11 +464,11 @@ function bot_reply_2(replyToken, message) {
443 }, 464 },
444 { 465 {
445 "type":"text", 466 "type":"text",
446 - "text": "격리해제 수 : " + resultMessage.clearCnt._text 467 + "text": "격리해제 수 : " + (parseInt(resultMessage2.clearCnt._text)-parseInt(resultMessage1.clearCnt._text))
447 }, 468 },
448 { 469 {
449 "type":"text", 470 "type":"text",
450 - "text": "등록일시분초 : " + resultMessage.createDt._text 471 + "text": "등록일시분초 : " + resultMessage2.createDt._text
451 } 472 }
452 ] 473 ]
453 } 474 }
...@@ -469,8 +490,8 @@ function bot_reply_3(replyToken, message) { ...@@ -469,8 +490,8 @@ function bot_reply_3(replyToken, message) {
469 const jsonData = JSON.parse(xmlToJson); // json text -> json object 490 const jsonData = JSON.parse(xmlToJson); // json text -> json object
470 console.log('Reponse received', xmlToJson); // json text 491 console.log('Reponse received', xmlToJson); // json text
471 492
472 - var resultMessage = jsonData.response.body.items.item; 493 + var resultMessage1 = jsonData.response.body.items.item[1];
473 - 494 + var resultMessage2 = jsonData.response.body.items.item[0];
474 request.post( 495 request.post(
475 { 496 {
476 url: TARGET_URL, 497 url: TARGET_URL,
...@@ -486,11 +507,11 @@ function bot_reply_3(replyToken, message) { ...@@ -486,11 +507,11 @@ function bot_reply_3(replyToken, message) {
486 }, 507 },
487 { 508 {
488 "type":"text", 509 "type":"text",
489 - "text": "검사진행 수 : " + resultMessage.examCnt._text 510 + "text": "검사진행 수 : " + (parseInt(resultMessage2.examCnt._text)-parseInt(resultMessage1.examCnt._text))
490 }, 511 },
491 { 512 {
492 "type":"text", 513 "type":"text",
493 - "text": "등록일시분초 : " + resultMessage.createDt._text 514 + "text": "등록일시분초 : " + resultMessage2.createDt._text
494 } 515 }
495 ] 516 ]
496 } 517 }
...@@ -512,8 +533,8 @@ function bot_reply_4(replyToken, message) { ...@@ -512,8 +533,8 @@ function bot_reply_4(replyToken, message) {
512 const jsonData = JSON.parse(xmlToJson); // json text -> json object 533 const jsonData = JSON.parse(xmlToJson); // json text -> json object
513 console.log('Reponse received', xmlToJson); // json text 534 console.log('Reponse received', xmlToJson); // json text
514 535
515 - var resultMessage = jsonData.response.body.items.item; 536 + var resultMessage1 = jsonData.response.body.items.item[1];
516 - 537 + var resultMessage2 = jsonData.response.body.items.item[0];
517 request.post( 538 request.post(
518 { 539 {
519 url: TARGET_URL, 540 url: TARGET_URL,
...@@ -529,11 +550,11 @@ function bot_reply_4(replyToken, message) { ...@@ -529,11 +550,11 @@ function bot_reply_4(replyToken, message) {
529 }, 550 },
530 { 551 {
531 "type":"text", 552 "type":"text",
532 - "text": "사망자 수 : " + resultMessage.deathCnt._text 553 + "text": "사망자 수 : " + (parseInt(resultMessage2.deathCnt._text)-parseInt(resultMessage1.deathCnt._text))
533 }, 554 },
534 { 555 {
535 "type":"text", 556 "type":"text",
536 - "text": "등록일시분초 : " + resultMessage.createDt._text 557 + "text": "등록일시분초 : " + resultMessage2.createDt._text
537 } 558 }
538 ] 559 ]
539 } 560 }
...@@ -555,8 +576,8 @@ function bot_reply_5(replyToken, message) { ...@@ -555,8 +576,8 @@ function bot_reply_5(replyToken, message) {
555 const jsonData = JSON.parse(xmlToJson); // json text -> json object 576 const jsonData = JSON.parse(xmlToJson); // json text -> json object
556 console.log('Reponse received', xmlToJson); // json text 577 console.log('Reponse received', xmlToJson); // json text
557 578
558 - var resultMessage = jsonData.response.body.items.item; 579 + var resultMessage1 = jsonData.response.body.items.item[1];
559 - 580 + var resultMessage2 = jsonData.response.body.items.item[0];
560 request.post( 581 request.post(
561 { 582 {
562 url: TARGET_URL, 583 url: TARGET_URL,
...@@ -572,11 +593,11 @@ function bot_reply_5(replyToken, message) { ...@@ -572,11 +593,11 @@ function bot_reply_5(replyToken, message) {
572 }, 593 },
573 { 594 {
574 "type":"text", 595 "type":"text",
575 - "text": "치료중 환자 수 : " + resultMessage.careCnt._text 596 + "text": "치료중 환자 수 : " + (parseInt(resultMessage2.careCnt._text)-parseInt(resultMessage1.careCnt._text))
576 }, 597 },
577 { 598 {
578 "type":"text", 599 "type":"text",
579 - "text": "등록일시분초 : " + resultMessage.createDt._text 600 + "text": "등록일시분초 : " + resultMessage2.createDt._text
580 } 601 }
581 ] 602 ]
582 } 603 }
...@@ -598,8 +619,8 @@ function bot_reply_6(replyToken, message) { ...@@ -598,8 +619,8 @@ function bot_reply_6(replyToken, message) {
598 const jsonData = JSON.parse(xmlToJson); // json text -> json object 619 const jsonData = JSON.parse(xmlToJson); // json text -> json object
599 console.log('Reponse received', xmlToJson); // json text 620 console.log('Reponse received', xmlToJson); // json text
600 621
601 - var resultMessage = jsonData.response.body.items.item; 622 + var resultMessage1 = jsonData.response.body.items.item[1];
602 - 623 + var resultMessage2 = jsonData.response.body.items.item[0];
603 request.post( 624 request.post(
604 { 625 {
605 url: TARGET_URL, 626 url: TARGET_URL,
...@@ -615,11 +636,11 @@ function bot_reply_6(replyToken, message) { ...@@ -615,11 +636,11 @@ function bot_reply_6(replyToken, message) {
615 }, 636 },
616 { 637 {
617 "type":"text", 638 "type":"text",
618 - "text": "결과 음성 수 : " + resultMessage.resutlNegCnt._text 639 + "text": "결과 음성 수 : " + (parseInt(resultMessage2.resutlNegCnt._text)-parseInt(resultMessage1.resutlNegCnt._text))
619 }, 640 },
620 { 641 {
621 "type":"text", 642 "type":"text",
622 - "text": "등록일시분초 : " + resultMessage.createDt._text 643 + "text": "등록일시분초 : " + resultMessage2.createDt._text
623 } 644 }
624 ] 645 ]
625 } 646 }
......
1 -var express = require('express');
2 -var app = express();
3 -const line = require('@line/bot-sdk');
4 -
5 -
6 -//papago api
7 -var request = require('request');
8 -
9 -//번역 api_url
10 -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt';
11 -
12 -//언어감지 api_url
13 -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs'
14 -
15 -// Naver Auth Key
16 -//새로 발급받은 naver papago api id, pw 입력
17 -var client_id = 'xZMx34y7uru1v8lywZ2d';
18 -var client_secret = 'p6L7M7WsH9';
19 -
20 -const config = {
21 - channelAccessToken: 'mnny0MJSezgBXzR9C3Ddcc1Csdb7Y9jkvy2nqV5saOmvR2YOJ1/kj/2M0CNsLA+57B2qDpdUQ7WbCTtIKx/LAJ6Kwfop4tX3up7EM8H9EZK1td6GMbhhCb6wvUFVdb1PcTO4joCv8mspd3ubo8a+gAdB04t89/1O/w1cDnyilFU=',
22 - channelSecret: 'bde77633a16fc5bfbd532d5990c6170e',
23 -};
24 -
25 -
26 -// create LINE SDK client
27 -const client = new line.Client(config);
28 -
29 -// create Express app
30 -// about Express itself: https://expressjs.com/
31 -
32 -// register a webhook handler with middleware
33 -// about the middleware, please refer to doc
34 -app.post('/webhook', line.middleware(config), (req, res) => {
35 - Promise
36 - .all(req.body.events.map(handleEvent))
37 - .then((result) => res.json(result))
38 - .catch((err) => {
39 - console.error(err);
40 - res.status(200).end();
41 - });
42 -});
43 -
44 -// event handler
45 -function handleEvent(event) {
46 - if (event.type !== 'message' || event.message.type !== 'text') {
47 - // ignore non-text-message event
48 - return Promise.resolve(null);
49 - }
50 - return new Promise(function(resolve, reject) {
51 - //언어 감지 option
52 - var detect_options = {
53 - url : languagedetect_api_url,
54 - form : {'query': event.message.text},
55 - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
56 - };
57 -
58 - //papago 언어 감지
59 - request.post(detect_options,function(error,response,body){
60 - console.log(response.statusCode);
61 - if(!error && response.statusCode == 200){
62 - var detect_body = JSON.parse(response.body);
63 - var source = '';
64 - var target = '';
65 - var result = { type: 'text', text:''};
66 -
67 - //언어 감지가 제대로 됐는지 확인
68 - console.log(detect_body.langCode);
69 -
70 -
71 - //번역은 한국어->영어 / 영어->한국어만 지원
72 - if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){
73 - source = detect_body.langCode == 'ko' ? 'ko':'en';
74 - target = source == 'ko' ? 'en':'ko';
75 - //papago 번역 option
76 - var options = {
77 - url: translate_api_url,
78 - // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
79 - form: {'source':source, 'target':target, 'text':event.message.text},
80 - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
81 - };
82 -
83 - // Naver Post API
84 - request.post(options, function(error, response, body){
85 - // Translate API Sucess
86 - if(!error && response.statusCode == 200){
87 - // JSON
88 - var objBody = JSON.parse(response.body);
89 - // Message 잘 찍히는지 확인
90 -
91 - result.text = objBody.message.result.translatedText;
92 - console.log(result.text);
93 - //번역된 문장 보내기
94 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
95 - }
96 - });
97 - }
98 - // 메시지의 언어가 영어 또는 한국어가 아닐 경우
99 - else{
100 - result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.';
101 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
102 - }
103 -
104 - }
105 -
106 - });
107 -
108 - });
109 - }
110 -
111 -app.listen(3000, function () {
112 - console.log('Linebot listening on port 3000!');
113 -});