Showing
2 changed files
with
61 additions
and
75 deletions
1 | -var express = require('express'); | 1 | +var express = require("express"); |
2 | -var app = express(); | 2 | +const line = require("@line/bot-sdk"); |
3 | -const line = require('@line/bot-sdk'); | 3 | +var request = require("request"); |
4 | -const config = require('./config.js'); | ||
5 | - | ||
6 | - | ||
7 | -//papago api | ||
8 | -var request = require('request'); | ||
9 | - | ||
10 | -//번역 api_url | ||
11 | -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; | ||
12 | - | ||
13 | -//언어감지 api_url | ||
14 | -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' | ||
15 | - | ||
16 | 4 | ||
5 | +var app = express(); | ||
6 | +const config = require("./config.js"); | ||
17 | 7 | ||
18 | -// create LINE SDK client | 8 | +var translate_api_url = "https://openapi.naver.com/v1/papago/n2mt"; //번역 api_url |
19 | -const client = new line.Client(config.line_config); | 9 | +var languagedetect_api_url = "https://openapi.naver.com/v1/papago/detectLangs"; //언어감지 api_url |
20 | - | ||
21 | -// create Express app | ||
22 | -// about Express itself: https://expressjs.com/ | ||
23 | 10 | ||
24 | -// register a webhook handler with middleware | ||
25 | // about the middleware, please refer to doc | 11 | // about the middleware, please refer to doc |
12 | +app.get("/", function(req, res) { | ||
13 | + res.send("!"); | ||
14 | +}); | ||
26 | 15 | ||
27 | -const bodyParser = require('body-parser'); | 16 | +// register a webhook handler with middleware |
28 | -app.use(bodyParser.json()); | 17 | +app.post("/webhook", line.middleware(config.line_config), (req, res) => { |
29 | - | 18 | + // res.status(200).end(); |
30 | -app.post('/webhook', line.middleware(config.line_config), (req, res) => { | 19 | + Promise.all(req.body.events.map(handleEvent)).then(result => |
31 | - Promise | 20 | + res.json(result) |
32 | - .all(req.body.events.map(handleEvent)) | 21 | + ); |
33 | - .then((result) => res.json(result)) | ||
34 | - .catch((err) => { | ||
35 | - console.error(err); | ||
36 | - res.status(200).end(); | ||
37 | - }); | ||
38 | - console.log('[result]', req.json(result)); | ||
39 | - console.log('[request]', req.body); | ||
40 | - console.log('[request source]', req.body.events[0].source); | ||
41 | - console.log('[request message]', req.body.events[0].message); | ||
42 | }); | 22 | }); |
43 | 23 | ||
24 | +const client = new line.Client(config.line_config); | ||
44 | 25 | ||
45 | -// event handler | 26 | +//event handler |
46 | function handleEvent(event) { | 27 | function handleEvent(event) { |
47 | console.log("event.message.text"); | 28 | console.log("event.message.text"); |
48 | - if (event.type !== 'message' || event.message.type !== 'text') { | 29 | + if (event.type !== "message" || event.message.type !== "text") { |
49 | console.log("2"); | 30 | console.log("2"); |
50 | // ignore non-text-message event | 31 | // ignore non-text-message event |
51 | return Promise.resolve(null); | 32 | return Promise.resolve(null); |
... | @@ -54,66 +35,69 @@ function handleEvent(event) { | ... | @@ -54,66 +35,69 @@ function handleEvent(event) { |
54 | console.log("3"); | 35 | console.log("3"); |
55 | //언어 감지 option | 36 | //언어 감지 option |
56 | var detect_options = { | 37 | var detect_options = { |
57 | - url : languagedetect_api_url, | 38 | + url: languagedetect_api_url, |
58 | - form : {'query': event.message.text}, | 39 | + form: { query: event.message.text }, |
59 | headers: config.naver_header | 40 | headers: config.naver_header |
60 | }; | 41 | }; |
61 | 42 | ||
62 | //papago 언어 감지 | 43 | //papago 언어 감지 |
63 | - request.post(detect_options,function(error,response,body){ | 44 | + request.post(detect_options, function(error, response, body) { |
64 | console.log("4"); | 45 | console.log("4"); |
65 | console.log(response.statusCode); | 46 | console.log(response.statusCode); |
66 | - if(!error && response.statusCode == 200){ | 47 | + if (!error && response.statusCode == 200) { |
67 | var detect_body = JSON.parse(response.body); | 48 | var detect_body = JSON.parse(response.body); |
68 | - var source = ''; | 49 | + var source = ""; |
69 | - var target = ''; | 50 | + var target = ""; |
70 | - var result = { type: 'text', text:''}; | 51 | + var result = { type: "text", text: "" }; |
71 | 52 | ||
72 | //언어 감지가 제대로 됐는지 확인 | 53 | //언어 감지가 제대로 됐는지 확인 |
73 | console.log(detect_body.langCode); | 54 | console.log(detect_body.langCode); |
74 | - | ||
75 | 55 | ||
76 | //번역은 한국어->영어 / 영어->한국어만 지원 | 56 | //번역은 한국어->영어 / 영어->한국어만 지원 |
77 | - if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){ | 57 | + if (detect_body.langCode == "ko" || detect_body.langCode == "en") { |
78 | console.log("5"); | 58 | console.log("5"); |
79 | - source = detect_body.langCode == 'ko' ? 'ko':'en'; | 59 | + source = detect_body.langCode == "ko" ? "ko" : "en"; |
80 | - target = source == 'ko' ? 'en':'ko'; | 60 | + target = source == "ko" ? "en" : "ko"; |
81 | //papago 번역 option | 61 | //papago 번역 option |
82 | var options = { | 62 | var options = { |
83 | - url: translate_api_url, | 63 | + url: translate_api_url, |
84 | - // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) | 64 | + // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) |
85 | - form: {'source':source, 'target':target, 'text':event.message.text}, | 65 | + form: { source: source, target: target, text: event.message.text }, |
86 | - headers: config.naver_header | 66 | + headers: config.naver_header |
87 | }; | 67 | }; |
88 | 68 | ||
89 | // Naver Post API | 69 | // Naver Post API |
90 | - request.post(options, function(error, response, body){ | 70 | + request.post(options, function(error, response, body) { |
91 | - // Translate API Success | 71 | + // Translate API Success |
92 | - if(!error && response.statusCode == 200){ | 72 | + if (!error && response.statusCode == 200) { |
93 | - // JSON | 73 | + // JSON |
94 | - var objBody = JSON.parse(response.body); | 74 | + var objBody = JSON.parse(response.body); |
95 | - // Message 잘 찍히는지 확인 | 75 | + // Message 잘 찍히는지 확인 |
96 | - | 76 | + |
97 | - result.text = objBody.message.result.translatedText; | 77 | + result.text = objBody.message.result.translatedText; |
98 | - console.log(result.text); | 78 | + console.log(result.text); |
99 | - //번역된 문장 보내기 | 79 | + //번역된 문장 보내기 |
100 | - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | 80 | + client |
101 | - } | 81 | + .replyMessage(event.replyToken, result) |
82 | + .then(resolve) | ||
83 | + .catch(reject); | ||
84 | + } | ||
102 | }); | 85 | }); |
103 | } | 86 | } |
104 | // 메시지의 언어가 영어 또는 한국어가 아닐 경우 | 87 | // 메시지의 언어가 영어 또는 한국어가 아닐 경우 |
105 | - else{ | 88 | + else { |
106 | - result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; | 89 | + result.text = |
107 | - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | 90 | + "언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다."; |
91 | + client | ||
92 | + .replyMessage(event.replyToken, result) | ||
93 | + .then(resolve) | ||
94 | + .catch(reject); | ||
108 | } | 95 | } |
109 | - | ||
110 | } | 96 | } |
111 | - | ||
112 | }); | 97 | }); |
98 | + }); | ||
99 | +} | ||
113 | 100 | ||
114 | - }); | 101 | +app.listen(3000, function() { |
115 | - } | 102 | + console.log("Linebot listening on port 3000!"); |
116 | - | ||
117 | -app.listen(3000, function () { | ||
118 | - console.log('Linebot listening on port 3000!'); | ||
119 | }); | 103 | }); | ... | ... |
-
Please register or login to post a comment