Showing
1 changed file
with
94 additions
and
45 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: ''}; |
| 561 | - break; | 556 | + if (grammarcheck) { |
| 562 | - | 557 | + grammarcheck = false; |
| 563 | - | 558 | + message.text = '영어 문법 검사를 종료합니다.' |
| 564 | - default: //영어로 번역 | ||
| 565 | - if (!voice) { | ||
| 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 { | 559 | } else { |
| 593 | - result.text = | 560 | + grammarcheck = true; |
| 594 | - "언어를 감지할 수 없습니다."; | 561 | + message.text = '영어 문장을 입력해주세요.' |
| 562 | + } | ||
| 595 | client | 563 | client |
| 596 | - .replyMessage(event.replyToken, result) | 564 | + .replyMessage(event.replyToken, message) |
| 597 | .then(resolve) | 565 | .then(resolve) |
| 598 | .catch(reject); | 566 | .catch(reject); |
| 599 | - } | 567 | + break; |
| 600 | - } else //음성 듣기 on | 568 | + |
| 569 | + | ||
| 570 | + default: | ||
| 571 | + if (voice)//음성 듣기 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 | } | ... | ... |
-
Please register or login to post a comment