yangjisu

코드 정리

Showing 1 changed file with 91 additions and 90 deletions
1 -var express = require('express'); 1 +const express = require('express');
2 -var app = express(); 2 +const app = express();
3 const line = require('@line/bot-sdk'); 3 const line = require('@line/bot-sdk');
4 const config = require('./config'); 4 const config = require('./config');
5 5
6 +const bodyParser = require('body-parser');
7 +
8 +app.use(bodyParser.urlencoded({extended:false}));
9 +app.use(bodyParser.json());
6 //papago api 10 //papago api
7 -var request = require('request'); 11 +const request = require('request');
8 12
9 //번역 api_url 13 //번역 api_url
10 -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; 14 +const translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt';
11 15
12 //언어감지 api_url 16 //언어감지 api_url
13 -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs'; 17 +const languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs';
14 18
15 //eng grammar check 19 //eng grammar check
16 - 20 +const textgears =require('textgears');
17 -var EnGrammarCheck_api_url = 'https://api.textgears.com/check.php';
18 -
19 -
20 21
21 // create LINE SDK client 22 // create LINE SDK client
22 const client = new line.Client(config.line_config); 23 const client = new line.Client(config.line_config);
...@@ -25,93 +26,93 @@ const client = new line.Client(config.line_config); ...@@ -25,93 +26,93 @@ const client = new line.Client(config.line_config);
25 // about Express itself: https://expressjs.com/ 26 // about Express itself: https://expressjs.com/
26 27
27 // register a webhook handler with middleware 28 // register a webhook handler with middleware
29 +
28 // about the middleware, please refer to doc 30 // about the middleware, please refer to doc
29 -app.post('/webhook', line.middleware(config.line_config), (req, res) => { 31 +app.post("/webhook", line.middleware(config.line_config), (req, res) => {
30 - Promise 32 + // res.status(200).end();
31 - .all(req.body.events.map(handleEvent)) 33 + Promise.all(req.body.events.map(handleEvent)).then(result =>
32 - .then((result) => res.json(result)) 34 + res.json(result)
33 - .catch((err) => { 35 + );
34 - console.error(err); res.status(200).end();
35 - });
36 }); 36 });
37 37
38 -function handleEvent(event) { 38 +const message ={
39 - if (event.type !== 'message' || event.message.type !== 'text' ) { 39 + type: 'text',
40 - // ignore non-text-message event 40 + text:'메뉴를 선택해 주세요 \t 1.번역 \t 2. 문법'
41 - return Promise.resolve(null);
42 - }
43 - return new Promise(function(resolve, reject) {
44 - //언어 감지 option
45 - var detect_options = {
46 - url : languagedetect_api_url,
47 - form : {'query': event.message.text},
48 - headers: config.naver_header
49 - };
50 - //papago 언어 감지
51 - request.post(detect_options,function(error,response,body){
52 - console.log(response.statusCode);
53 - if(!error && response.statusCode == 200){
54 - var detect_body = JSON.parse(response.body);
55 - var source = '';
56 - var target = '';
57 - var result = { type: 'text', text:''};
58 -
59 - //언어 감지가 제대로 됐는지 확인
60 - console.log(detect_body.langCode);
61 -
62 -
63 -app.post('/message',function(req,res){ var msg = req.body.content;
64 - console.log('전달받은 메시지: ' +msg);
65 -
66 - var sent ={};
67 -
68 - switch(msg)
69 - {
70 - case '번역':
71 - case '1':
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: config.naver_header
81 - };
82 - request.post(options, function(error, response, body){
83 - // Translate API Sucess
84 - if(!error && response.statusCode == 200){
85 - // JSON
86 - var objBody = JSON.parse(response.body);
87 - // Message 잘 찍히는지 확인
88 -
89 - result.text = objBody.message.result.translatedText;
90 - //console.log(result.text);
91 - //번역된 문장 보내기
92 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
93 - }
94 - });
95 } 41 }
96 - send={
97 - 'message':{
98 - 'text': result.text
99 - }
100 - }
101 - break;
102 - case '문법':
103 - case '문법체크':
104 - case '2':
105 -
106 - break;
107 -
108 - }
109 -
110 -
111 42
43 +function handleEvent(event) {
112 44
45 + if (event.type !== 'message' || event.message.type !== 'text' ) {
46 + // ignore non-text-message event
47 + return Promise.resolve(null);
48 + }
49 + return client.replyMessage(event.replyToken,message);
50 +app.post('/message/reply',function(req,res){
51 + const msg = req.body;
52 +
53 + switch(msg) {
54 + case '번역':
55 + case '1':
56 +
57 + return new Promise(function(resolve, reject) {
58 + //언어 감지 option
59 + var detect_options = {
60 + url : languagedetect_api_url,
61 + form : {'query': event.message.text},
62 + headers: config.naver_header
63 + };
64 + //papago 언어 감지
65 + request.post(detect_options,function(error,response,body){
66 + console.log(response.statusCode);
67 + if(!error && response.statusCode == 200) {
68 + var detect_body = JSON.parse(response.body);
69 + var source = '';
70 + var target = '';
71 + var result = {type: 'text', text: ''};
72 +
73 + //언어 감지가 제대로 됐는지 확인
74 + console.log(detect_body.langCode);
75 + if (detect_body.langCode == 'ko' || detect_body.langCode == 'en') {
76 + source = detect_body.langCode == 'ko' ? 'ko' : 'en';
77 + target = source == 'ko' ? 'en' : 'ko';
78 + //papago 번역 option
79 + var options = {
80 + url: translate_api_url,
81 + // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
82 + form: {'source': source, 'target': target, 'text': event.message.text},
83 + headers: config.naver_header
84 + };
85 + request.post(options, function (error, response, body) {
86 + // Translate API Sucess
87 + if (!error && response.statusCode == 200) {
88 + // JSON
89 + var objBody = JSON.parse(response.body);
90 + // Message 잘 찍히는지 확인
91 +
92 + result.text = objBody.message.result.translatedText;
93 + //console.log(result.text);
94 + //번역된 문장 보내기
95 + client.replyMessage(event.replyToken, result).then(resolve).catch(reject);
96 + }
97 + });
98 + }
99 + }});
100 + });
101 + break;
102 + case '문법':
103 + textgears({
104 + key: '9WUGcY6ZayYMphG7',
105 + text: event.message.text,
106 + }).then(res => {
107 + for (const error of res.errors) {
108 + console.log('Bad: %s. Better: %s', error.bad, error.better.join(', '));
109 + }
110 + });
111 + break;
112 + }
113 }); 113 });
114 -
115 } 114 }
116 -});
117 115
116 +app.listen(3000, function () {
117 + console.log('Linebot listening on port 3000!');
118 +})
......