곽원석

Update app.js and divide legacy files

1 var express = require('express'); 1 var express = require('express');
2 var app = express(); 2 var app = express();
3 -const line = require('@line/bot-sdk');
4 3
5 4
6 -//papago api 5 +// 공공보건포털_API
7 var request = require('request'); 6 var request = require('request');
8 - 7 +// 파싱할 URL
9 -//번역 api_url 8 +var url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson';
10 -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; 9 +var queryParams = '?' + encodeURIComponent('ServiceKey') + '=서비스키'; /* Service Key*/
11 - 10 +queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1'); /* */
12 -//언어감지 api_url 11 +queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('10'); /* */
13 -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' 12 +queryParams += '&' + encodeURIComponent('startCreateDt') + '=' + encodeURIComponent('20200310'); /* */
14 - 13 +queryParams += '&' + encodeURIComponent('endCreateDt') + '=' + encodeURIComponent('20200315'); /* */
15 -// Naver Auth Key 14 +
16 -//새로 발급받은 naver papago api id, pw 입력 15 +request({
17 -var client_id = 'xZMx34y7uru1v8lywZ2d'; 16 + url: url + queryParams,
18 -var client_secret = 'p6L7M7WsH9'; 17 + method: 'GET'
19 - 18 +}, function (error, response, body) {
20 -const config = { 19 + //console.log('Status', response.statusCode);
21 - channelAccessToken: 'mnny0MJSezgBXzR9C3Ddcc1Csdb7Y9jkvy2nqV5saOmvR2YOJ1/kj/2M0CNsLA+57B2qDpdUQ7WbCTtIKx/LAJ6Kwfop4tX3up7EM8H9EZK1td6GMbhhCb6wvUFVdb1PcTO4joCv8mspd3ubo8a+gAdB04t89/1O/w1cDnyilFU=', 20 + //console.log('Headers', JSON.stringify(response.headers));
22 - channelSecret: 'bde77633a16fc5bfbd532d5990c6170e', 21 + //console.log('Reponse received', body);
23 -}; 22 +});
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 -});
...\ No newline at end of file ...\ No newline at end of file
......
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 +});
1 { 1 {
2 - "name": "linebot", 2 + "name": "corona_bot",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "description": "", 4 "description": "",
5 "main": "app.js", 5 "main": "app.js",
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 "test": "echo \"Error: no test specified\" && exit 1", 7 "test": "echo \"Error: no test specified\" && exit 1",
8 "start": "node server.js" 8 "start": "node server.js"
9 }, 9 },
10 - "author": "강수인", 10 + "author": "KwakWonseok",
11 "license": "MIT", 11 "license": "MIT",
12 "dependencies": { 12 "dependencies": {
13 "@line/bot-sdk": "^6.4.0", 13 "@line/bot-sdk": "^6.4.0",
......