정민혁

fixed message.js, 번역기능 구현

1 var express = require('express'); 1 var express = require('express');
2 -var router = express.Router();
3 -var bodyparser = require('body-parser');
4 var request = require('request'); 2 var request = require('request');
3 +var app = express.Router();
5 4
5 +// Naver Auth Key // to do)) get a new Auth key
6 var client_id = 'is216aNtQ6QLNkWW03bc'; 6 var client_id = 'is216aNtQ6QLNkWW03bc';
7 var client_secret = 'Ot0BMdWXOJ'; 7 var client_secret = 'Ot0BMdWXOJ';
8 8
9 -router.use(bodyparser.urlencoded({extended: true})); 9 +// Naver API URL
10 -router.use(bodyparser.json()); 10 +var api_url = 'https://openapi.naver.com/v1/language/translate';
11 11
12 -router.post('/', function(req, res, next) { 12 +//what kind of task to do
13 - const _obj = { 13 +var translate = false;
14 +var dictionary = false;
15 +var option = false;
16 +// Kakao Message API
17 +app.post('/', function(req, res) {
18 + var _obj = {
14 user_key: req.body.user_key, 19 user_key: req.body.user_key,
15 type: req.body.type, 20 type: req.body.type,
16 content: req.body.content 21 content: req.body.content
17 }; 22 };
18 -//응답 23 +
19 - var choice = _obj.content; 24 + if(_obj.content == '설정'){
20 - switch (choice) { 25 + option = true;
21 - case '설정': 26 + translate = false;
27 + dictionary = false;
28 + res.json({
29 + "message": {
30 + "text": "언어를 설정합니다"
31 + },
32 + "keyboard": {
33 + "type": "buttons",
34 + "buttons":["한-영", "영-한"]
35 + },
36 + });
37 + }else if (_obj.content == '번역'){
38 + translate = true;
39 + option = false;
40 + dictionary = false;
22 res.json({ 41 res.json({
23 "message": { 42 "message": {
24 - "text": "언어를 설정합니다" 43 + "text": "입력한 텍스트를 번역해드리겠습니다. 자 시작!"
25 - }, "keyboard":{ 44 + },
26 - "type": "buttons", 45 + "keyboard": {
27 - "buttons":["한-영", "영-한"] 46 + "type": "text"
28 } 47 }
29 }); 48 });
30 - 49 + }else if (_obj.content == '사전'){
31 - 50 + dictionary = true;
32 - break; 51 + option = false;
33 - case '번역': 52 + translate = false;
34 res.json({ 53 res.json({
35 - "message": { 54 + "message":{
36 - "text": "번역할 문장을 적어주세요" 55 + "text": "백과사전 검색을 시작합니다. 키워드를 입력해주세요."
37 - }, "keyboard":{ 56 + },
57 + "keyboard": {
38 "type": "text" 58 "type": "text"
39 } 59 }
40 }); 60 });
61 + }
62 + else if (translate)
63 + {
64 + // Naver Papago Translate
65 + var options = {
66 + url: api_url,
67 + // (source : 번역할 대상), (target: 번역후 언어), 카톡에서 받는 메시지(text)
68 + form: {'source':'ko', 'target':'en', 'text':req.body.content},
69 + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
70 + };
71 + // Naver Post API
72 + request.post(options, function(error, response, body){
73 + // Translate API Sucess
74 + if(!error && response.statusCode == 200){
75 + // JSON
76 + var objBody = JSON.parse(response.body);
77 + // Message 잘 찍히는지 확인
78 + console.log(objBody.message.result.translatedText);
41 79
42 - var query = req.body.content; 80 + // Kakao Message API
43 - app.get('/translate', function (req, res) { 81 + let massage = {
44 - var api_url = 'https://openapi.naver.com/v1/language/translate'; 82 + "message": {
45 - var options = { 83 + // Naver API Translate 결과를 Kakao Message
46 - url: api_url, 84 + "text": objBody.message.result.translatedText
47 - form: {'source':'ko', 'target':'en', 'text':query}, 85 + }
48 - headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret} 86 + };
49 - };
50 - request.post(options, function (error, response, body) {
51 - if (!error && response.statusCode == 200) {
52 - var translated = JSON.parse(response.body);
53 -
54 - let message = {
55 - "message": {
56 - "text": translated.message.result.translatedText
57 - },
58 - };
59 - res.set({
60 - 'content-type': 'applcation/json'
61 - }).send(JSON.stringify(message));
62 87
63 - } else { 88 + // Kakao Message API 전송
64 - res.status(response.statusCode).end(); 89 + res.set({
65 - console.log('error = ' + response.statusCode); 90 + 'content-type': 'application/json'
66 - } 91 + }).send(JSON.stringify(massage));
92 + }
93 + else{
94 + // Naver Message Error 발생
95 + res.status(response.statusCode).end();
96 + console.log('error = ' + response.statusCode);
67 97
68 - }); 98 + let massage = {
69 - }); 99 + "message": {
100 + "text": response.statusCode
101 + },
102 + };
70 103
71 - break; 104 + // Kakao에 Error Message
72 - case '사전': 105 + res.set({
73 - res.json({ 106 + 'content-type': 'application/json'
74 - "message": { 107 + }).send(JSON.stringify(massage));
75 - "text": "검색할 단어를 적어주세요"
76 } 108 }
77 }); 109 });
110 + }
111 + else if (dictionary)
112 + {
78 113
79 - break; 114 + }
80 - }
81 -<<<<<<< HEAD
82 -=======
83 - res.json(msg);
84 ->>>>>>> ae1136a7f2944d983ded52428ee21aad50aed1d9
85 }); 115 });
86 116
87 -module.exports = router; 117 +
118 +function choiceLanguage(str) {
119 + if (str == "영어")
120 + return "en";
121 + else if (str == "한국어") {
122 + console.log(str);
123 + return "ko";
124 + }
125 + else if (str == "일본어")
126 + return "ja";
127 + else if (str == "중국어(간체)")
128 + return "zh-CN";
129 + else
130 + return "ko";
131 +}
132 +module.exports = app;
......