Showing
1 changed file
with
43 additions
and
35 deletions
| 1 | -var express = require('express'); | 1 | +var express = require("express"); |
| 2 | -var app = express(); | 2 | +var app = express(); |
| 3 | const line = require('@line/bot-sdk'); | 3 | const line = require('@line/bot-sdk'); |
| 4 | +var request = require('request'); | ||
| 4 | var https=require('https'); | 5 | var https=require('https'); |
| 5 | -const fs = require('fs'); | 6 | +var http=require('http'); |
| 6 | - | 7 | +const lex = require('greenlock-express').create({ |
| 7 | -var key = fs.readFileSync('/etc/letsencrypt/live/oss.chatbot.bu.to/privkey.pem'); | 8 | + version: 'draft-11', // 버전2 |
| 8 | -var cert = fs.readFileSync('/etc/letsencrypt/live/oss.chatbot.bu.to/cert.pem'); | 9 | + store: require('greenlock-store-fs'), |
| 9 | -var ca = fs.readFileSync('/etc/letsencrypt/live/oss.chatbot.bu.to/fullchain.pem'); | 10 | + configDir: '/etc/letsencrypt', // 또는 ~/letsencrypt/etc |
| 10 | - | 11 | + approveDomains: (opts, certs, cb) => { |
| 11 | -https.createServer({ | 12 | + if (certs) { |
| 12 | -key: key, | 13 | + opts.domains = ['oss.chatbot.bu.to', 'oss.chatbot.bu.to']; |
| 13 | -cert: cert, | 14 | + } else { |
| 14 | -ca: ca | 15 | + opts.email = 'sweun1@naver.com'; |
| 15 | -}, app).listen(80,()=>{ | 16 | + opts.agreeTos = true; |
| 16 | - console.log('server on 80'); | 17 | + } |
| 18 | + cb(null, { options: opts, certs }); | ||
| 19 | + | ||
| 20 | + }, | ||
| 21 | + renewWithin: 81 * 24 * 60 * 60 * 1000, | ||
| 22 | + renewBy: 80 * 24 * 60 * 60 * 1000, | ||
| 23 | +});//papago api | ||
| 24 | + | ||
| 25 | + | ||
| 26 | +https.createServer(lex.httpsOptions, lex.middleware(app)).listen((process.env.SSL_PORT || 443),()=>{ | ||
| 27 | + console.log("server on 443"); | ||
| 28 | +}); | ||
| 29 | +http.createServer(lex.middleware(require('redirect-https')())).listen(process.env.PORT || 80,()=>{ | ||
| 30 | + console.log("server on 80"); | ||
| 17 | }); | 31 | }); |
| 18 | - | ||
| 19 | -https.createServer({ | ||
| 20 | - key: key, | ||
| 21 | - cert: cert, | ||
| 22 | - ca: ca | ||
| 23 | - }, app).listen(443,()=>{ | ||
| 24 | - console.log('server on 443'); | ||
| 25 | - }); | ||
| 26 | - | ||
| 27 | -//papago api | ||
| 28 | -var request = require('request'); | ||
| 29 | - | ||
| 30 | //번역 api_url | 32 | //번역 api_url |
| 31 | var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; | 33 | var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; |
| 32 | 34 | ||
| ... | @@ -44,7 +46,6 @@ const config = { | ... | @@ -44,7 +46,6 @@ const config = { |
| 44 | 46 | ||
| 45 | }; | 47 | }; |
| 46 | 48 | ||
| 47 | - | ||
| 48 | // create LINE SDK client | 49 | // create LINE SDK client |
| 49 | const client = new line.Client(config); | 50 | const client = new line.Client(config); |
| 50 | // create Express app | 51 | // create Express app |
| ... | @@ -52,15 +53,20 @@ const client = new line.Client(config); | ... | @@ -52,15 +53,20 @@ const client = new line.Client(config); |
| 52 | 53 | ||
| 53 | // register a webhook handler with middleware | 54 | // register a webhook handler with middleware |
| 54 | // about the middleware, please refer to doc | 55 | // about the middleware, please refer to doc |
| 56 | + | ||
| 57 | + | ||
| 55 | app.post('/webhook', line.middleware(config), (req, res) => { | 58 | app.post('/webhook', line.middleware(config), (req, res) => { |
| 56 | - console.log("webhook"); | 59 | +console.log(res.statusCode); |
| 57 | Promise | 60 | Promise |
| 58 | .all(req.body.events.map(handleEvent)) | 61 | .all(req.body.events.map(handleEvent)) |
| 59 | .then((result) => res.json(result)) | 62 | .then((result) => res.json(result)) |
| 63 | + .catch((err)=>{console.log(err); | ||
| 64 | + console.log(err.originalError.response) | ||
| 65 | + }) | ||
| 60 | }); | 66 | }); |
| 61 | // event handler | 67 | // event handler |
| 62 | function handleEvent(event) { | 68 | function handleEvent(event) { |
| 63 | - console.log("handleevent"); | 69 | + console.log(event.message); |
| 64 | if (event.type !== 'message' || event.message.type !== 'text') { | 70 | if (event.type !== 'message' || event.message.type !== 'text') { |
| 65 | // ignore non-text-message event | 71 | // ignore non-text-message event |
| 66 | return Promise.resolve(null); | 72 | return Promise.resolve(null); |
| ... | @@ -72,11 +78,10 @@ function handleEvent(event) { | ... | @@ -72,11 +78,10 @@ function handleEvent(event) { |
| 72 | form : {'query': event.message.text}, | 78 | form : {'query': event.message.text}, |
| 73 | headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | 79 | headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} |
| 74 | }; | 80 | }; |
| 75 | - console.log("1"); | ||
| 76 | //papago 언어 감지 | 81 | //papago 언어 감지 |
| 77 | - request.post(detect_options,function(error,response,body){ | 82 | + request.post(detect_options,async (error,response,body)=>{ |
| 78 | - console.log(response.statusCode); | ||
| 79 | if(!error && response.statusCode == 200){ | 83 | if(!error && response.statusCode == 200){ |
| 84 | + console.log(response.body); | ||
| 80 | var detect_body = JSON.parse(response.body); | 85 | var detect_body = JSON.parse(response.body); |
| 81 | var source = ''; | 86 | var source = ''; |
| 82 | var target = ''; | 87 | var target = ''; |
| ... | @@ -95,11 +100,11 @@ function handleEvent(event) { | ... | @@ -95,11 +100,11 @@ function handleEvent(event) { |
| 95 | url: translate_api_url, | 100 | url: translate_api_url, |
| 96 | // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) | 101 | // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) |
| 97 | form: {'source':source, 'target':target, 'text':event.message.text}, | 102 | form: {'source':source, 'target':target, 'text':event.message.text}, |
| 98 | - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | 103 | + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret,"Content-Type": "application/x-www-form-urlencoded"} |
| 99 | }; | 104 | }; |
| 100 | 105 | ||
| 101 | // Naver Post API | 106 | // Naver Post API |
| 102 | - request.post(options, function(error, response, body){ | 107 | + await request.post(options, function(error, response, body){ |
| 103 | // Translate API Sucess | 108 | // Translate API Sucess |
| 104 | if(!error && response.statusCode == 200){ | 109 | if(!error && response.statusCode == 200){ |
| 105 | // JSON | 110 | // JSON |
| ... | @@ -107,7 +112,7 @@ function handleEvent(event) { | ... | @@ -107,7 +112,7 @@ function handleEvent(event) { |
| 107 | // Message 잘 찍히는지 확인 | 112 | // Message 잘 찍히는지 확인 |
| 108 | 113 | ||
| 109 | result.text = objBody.message.result.translatedText; | 114 | result.text = objBody.message.result.translatedText; |
| 110 | - console.log(result.text); | 115 | + console.log(result); |
| 111 | //번역된 문장 보내기 | 116 | //번역된 문장 보내기 |
| 112 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | 117 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); |
| 113 | } | 118 | } |
| ... | @@ -120,6 +125,9 @@ function handleEvent(event) { | ... | @@ -120,6 +125,9 @@ function handleEvent(event) { |
| 120 | } | 125 | } |
| 121 | 126 | ||
| 122 | } | 127 | } |
| 128 | + else{ | ||
| 129 | + console.log("status code is not 200"); | ||
| 130 | + } | ||
| 123 | 131 | ||
| 124 | }); | 132 | }); |
| 125 | 133 | ... | ... |
-
Please register or login to post a comment