Showing
1 changed file
with
104 additions
and
59 deletions
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; | ... | ... |
-
Please register or login to post a comment