조현아

added eng translation

Showing 1 changed file with 95 additions and 46 deletions
...@@ -24,6 +24,7 @@ var voice = false; ...@@ -24,6 +24,7 @@ var voice = false;
24 24
25 //eng grammar check 25 //eng grammar check
26 var EnGrammarCheck_api_url = 'https://api.textgears.com/check.php'; 26 var EnGrammarCheck_api_url = 'https://api.textgears.com/check.php';
27 +var grammarcheck = false;
27 28
28 // create LINE SDK client 29 // create LINE SDK client
29 const client = new line.Client(config.line_config); 30 const client = new line.Client(config.line_config);
...@@ -39,12 +40,6 @@ const voice_client = LineClient.connect({ ...@@ -39,12 +40,6 @@ const voice_client = LineClient.connect({
39 // serve static files 40 // serve static files
40 app.use(express.static('public')); 41 app.use(express.static('public'));
41 42
42 -// create Express app
43 -// about Express itself: https://expressjs.com/
44 -app.get("/upload", function (req, res) {
45 - res.render("upload");
46 -});
47 -
48 43
49 app.post("/webhook", line.middleware(config.line_config), (req, res) => { 44 app.post("/webhook", line.middleware(config.line_config), (req, res) => {
50 // res.status(200).end(); 45 // res.status(200).end();
...@@ -82,7 +77,7 @@ function handleEvent(event) { ...@@ -82,7 +77,7 @@ function handleEvent(event) {
82 switch (event.message.text) { 77 switch (event.message.text) {
83 case "영어": 78 case "영어":
84 if (detect_body.langCode == "ko" || detect_body.langCode == "en") { 79 if (detect_body.langCode == "ko" || detect_body.langCode == "en") {
85 - language = "ja"; 80 + language = "en";
86 source = detect_body.langCode == "ko" ? "ko" : "en"; 81 source = detect_body.langCode == "ko" ? "ko" : "en";
87 target = source == "ko" ? "en" : "ko"; 82 target = source == "ko" ? "en" : "ko";
88 //papago 번역 option 83 //papago 번역 option
...@@ -556,48 +551,24 @@ function handleEvent(event) { ...@@ -556,48 +551,24 @@ function handleEvent(event) {
556 551
557 break; 552 break;
558 553
559 - case '[문법을 검사합니다]': 554 + case '[영문법을 검사합니다]':
560 - 555 + var message = {type: 'text', text: ''};
556 + if (grammarcheck) {
557 + grammarcheck = false;
558 + message.text = '영어 문법 검사를 종료합니다.'
559 + } else {
560 + grammarcheck = true;
561 + message.text = '영어 문장을 입력해주세요.'
562 + }
563 + client
564 + .replyMessage(event.replyToken, message)
565 + .then(resolve)
566 + .catch(reject);
561 break; 567 break;
562 568
563 569
564 - default: //영어로 번역 570 + default:
565 - if (!voice) { 571 + if (voice)//음성 듣기 on
566 - if (detect_body.langCode == "ko" || detect_body.langCode == language) {
567 - source = detect_body.langCode == "ko" ? "ko" : language;
568 - target = source == "ko" ? language : "ko";
569 - //papago 번역 option
570 - var options = {
571 - url: translate_api_url,
572 - // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
573 - form: {source: source, target: target, text: event.message.text},
574 - headers: config.naver_header
575 -
576 - };
577 - request.post(options, function (error, response, body) {
578 - if (!error && response.statusCode == 200) {
579 - // JSON
580 - var objBody = JSON.parse(response.body);
581 - // Message 잘 찍히는지 확인
582 -
583 - result.text = objBody.message.result.translatedText;
584 - console.log(result.text);
585 - //번역된 문장 보내기
586 - client
587 - .replyMessage(event.replyToken, result)
588 - .then(resolve)
589 - .catch(reject);
590 - }
591 - });
592 - } else {
593 - result.text =
594 - "언어를 감지할 수 없습니다.";
595 - client
596 - .replyMessage(event.replyToken, result)
597 - .then(resolve)
598 - .catch(reject);
599 - }
600 - } else //음성 듣기 on
601 { 572 {
602 if (detect_body.langCode == "en") { 573 if (detect_body.langCode == "en") {
603 let params = { 574 let params = {
...@@ -643,6 +614,84 @@ function handleEvent(event) { ...@@ -643,6 +614,84 @@ function handleEvent(event) {
643 .then(resolve) 614 .then(resolve)
644 .catch(reject); 615 .catch(reject);
645 } 616 }
617 + } else if (grammarcheck) {
618 + if (detect_body.langCode = 'en') {
619 + var grammar = {
620 + url: EnGrammarCheck_api_url,
621 + form: {key: '9WUGcY6ZayYMphG7', text: event.message.text},
622 + }
623 + request.post(grammar, function (error, response, body) {
624 + if (!error && response.statusCode == 200) {
625 + // JSON
626 + var objBody = JSON.parse(response.body);
627 + // Message 잘 찍히는지 확인
628 + console.log("obj");
629 + var temp="";
630 + var start_offset=0;
631 +
632 + for (var i = 0; i < Object.keys(objBody.errors).length; i++) {
633 + temp += event.message.text.substring(start_offset, objBody.errors[i]['offset']);
634 + temp += objBody.errors[i]['better'][0];
635 + if(i != Object.keys(objBody.errors).length -1) {
636 + temp += " ";
637 + }
638 + start_offset = objBody.errors[i]['offset'] + objBody.errors[i]['length']+1;
639 + }
640 + result.text = temp;
641 +
642 + var last_index = Object.keys(objBody.errors).length -1;
643 + result.text += event.message.text.substring(objBody.errors[last_index]['offset'] + objBody.errors[last_index]['length'], event.message.text.length);
644 +
645 + //번역된 문장 보내기
646 + client
647 + .replyMessage(event.replyToken, result)
648 + .then(resolve)
649 + .catch(reject);
650 + }
651 + });
652 + } else {
653 + result.text =
654 + "언어를 감지할 수 없습니다.";
655 + client
656 + .replyMessage(event.replyToken, result)
657 + .then(resolve)
658 + .catch(reject);
659 + }
660 + } else {//영어로 번역
661 + if (detect_body.langCode == "ko" || detect_body.langCode == language) {
662 + source = detect_body.langCode == "ko" ? "ko" : language;
663 + target = source == "ko" ? language : "ko";
664 + //papago 번역 option
665 + var options = {
666 + url: translate_api_url,
667 + // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
668 + form: {source: source, target: target, text: event.message.text},
669 + headers: config.naver_header
670 +
671 + };
672 + request.post(options, function (error, response, body) {
673 + if (!error && response.statusCode == 200) {
674 + // JSON
675 + var objBody = JSON.parse(response.body);
676 + // Message 잘 찍히는지 확인
677 +
678 + result.text = objBody.message.result.translatedText;
679 + console.log(result.text);
680 + //번역된 문장 보내기
681 + client
682 + .replyMessage(event.replyToken, result)
683 + .then(resolve)
684 + .catch(reject);
685 + }
686 + });
687 + } else {
688 + result.text =
689 + "언어를 감지할 수 없습니다.";
690 + client
691 + .replyMessage(event.replyToken, result)
692 + .then(resolve)
693 + .catch(reject);
694 + }
646 } 695 }
647 break; 696 break;
648 } 697 }
......