정민혁

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;
22 res.json({ 28 res.json({
23 "message": { 29 "message": {
24 "text": "언어를 설정합니다" 30 "text": "언어를 설정합니다"
25 - }, "keyboard":{ 31 + },
32 + "keyboard": {
26 "type": "buttons", 33 "type": "buttons",
27 "buttons":["한-영", "영-한"] 34 "buttons":["한-영", "영-한"]
28 - } 35 + },
29 }); 36 });
30 - 37 + }else if (_obj.content == '번역'){
31 - 38 + translate = true;
32 - break; 39 + option = false;
33 - case '번역': 40 + dictionary = false;
34 res.json({ 41 res.json({
35 "message": { 42 "message": {
36 - "text": "번역할 문장을 적어주세요" 43 + "text": "입력한 텍스트를 번역해드리겠습니다. 자 시작!"
37 - }, "keyboard":{ 44 + },
45 + "keyboard": {
38 "type": "text" 46 "type": "text"
39 } 47 }
40 }); 48 });
41 - 49 + }else if (_obj.content == '사전'){
42 - var query = req.body.content; 50 + dictionary = true;
43 - app.get('/translate', function (req, res) { 51 + option = false;
44 - var api_url = 'https://openapi.naver.com/v1/language/translate'; 52 + translate = false;
53 + res.json({
54 + "message":{
55 + "text": "백과사전 검색을 시작합니다. 키워드를 입력해주세요."
56 + },
57 + "keyboard": {
58 + "type": "text"
59 + }
60 + });
61 + }
62 + else if (translate)
63 + {
64 + // Naver Papago Translate
45 var options = { 65 var options = {
46 url: api_url, 66 url: api_url,
47 - form: {'source':'ko', 'target':'en', 'text':query}, 67 + // (source : 번역할 대상), (target: 번역후 언어), 카톡에서 받는 메시지(text)
48 - headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret} 68 + form: {'source':'ko', 'target':'en', 'text':req.body.content},
69 + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
49 }; 70 };
50 - request.post(options, function (error, response, body) { 71 + // Naver Post API
51 - if (!error && response.statusCode == 200) { 72 + request.post(options, function(error, response, body){
52 - var translated = JSON.parse(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);
53 79
54 - let message = { 80 + // Kakao Message API
81 + let massage = {
55 "message": { 82 "message": {
56 - "text": translated.message.result.translatedText 83 + // Naver API Translate 결과를 Kakao Message
57 - }, 84 + "text": objBody.message.result.translatedText
85 + }
58 }; 86 };
59 - res.set({
60 - 'content-type': 'applcation/json'
61 - }).send(JSON.stringify(message));
62 87
63 - } else { 88 + // Kakao Message API 전송
89 + res.set({
90 + 'content-type': 'application/json'
91 + }).send(JSON.stringify(massage));
92 + }
93 + else{
94 + // Naver Message Error 발생
64 res.status(response.statusCode).end(); 95 res.status(response.statusCode).end();
65 console.log('error = ' + response.statusCode); 96 console.log('error = ' + response.statusCode);
66 - }
67 97
68 - }); 98 + let massage = {
69 - });
70 -
71 - break;
72 - case '사전':
73 - res.json({
74 "message": { 99 "message": {
75 - "text": "검색할 단어를 적어주세요" 100 + "text": response.statusCode
101 + },
102 + };
103 +
104 + // Kakao에 Error Message
105 + res.set({
106 + 'content-type': 'application/json'
107 + }).send(JSON.stringify(massage));
76 } 108 }
77 }); 109 });
110 + }
111 + else if (dictionary)
112 + {
78 113
79 - break;
80 } 114 }
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;
......