app.js 4.08 KB
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'm79m/yBsTVzZeC9pYqSLzEL00Hp0HqsVE/0ZsZxW2HNAwdnb9TwDgBcOyCn3/aJASXsE8ekpyGg4Gts/4r8LO72OTZec9Np5Mh9g1vrgyDj5theWv4g2miE5F1Cqax4X3waj1aIzDGHcUZdHD6fQvAdB04t89/1O/w1cDnyilFU='
const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
const PAPAGO_ID = 'tA41WEd_nbzy0nZcUQks'
const PAPAGO_SECRET = '6DHwov9gg2'
// const fs = require('fs');
// const path = require('path');
// const HTTPS = require('https');
// const domain = "www.theia17.tk"
// const sslport = 23023;
const bodyParser = require('body-parser');
var app = express();

var ln = 'en'; //default value en
var lnDetec = new Array();
lnDetec[0] =
{
    "InLn" : '영어',
    "PaLn" : 'en'
}
lnDetec[1] =
{
    "InLn" : '일본어',
    "PaLn" : 'ja'
}
lnDetec[2] =
{
    "InLn" : '프랑스어',
    "PaLn" : 'fr'
}

app.use(bodyParser.json());
app.post('/hook', function (req, res) {

    var eventObj = req.body.events[0];
    var source = eventObj.source;
    var message = eventObj.message;
    var Inln = message.text; // input message
    var LnCh = 1; // Language change attempt => value 0;

    // request log
    // console.log('======================', new Date() ,'======================');
    // console.log('[request]', req.body);
    // console.log('[request source] ', eventObj.source);
    console.log('userId? ', eventObj.source.userId);
    // console.log('[request message]', eventObj.message);
    // console.log('my meesage: ', message.text);
    // console.log('my ip check: ', req.ip);
    
    for(var i in lnDetec) // Detect Language change 
    {
        if (Inln == lnDetec[i].InLn)
        {
            ln = lnDetec[i].PaLn;
            LnCh = 0;
        }
    }
    if(LnCh) // if there is no attempt to change language then call trans() operator
        trans(eventObj.replyToken, eventObj.message.text, ln);

    res.sendStatus(200);
});

function trans(replyToken, message, ln) {

    request.post(
        {
            url: PAPAGO_URL,
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                'X-Naver-Client-Id': `${PAPAGO_ID}`,
                'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
            },
            body: 'source=ko&target='+ln+'&text=' + message,
            //body: 'source=ko&target=en&text=' + message,
            json:true
        },(error, response, body) => {
            if(!error && response.statusCode == 200) {
                console.log(body.message);
                var transMessage = body.message.result.translatedText;
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":transMessage
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }
        });

}

// try {
//     const option = {
//       ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
//       key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
//       cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
//     };
  
//     HTTPS.createServer(option, app).listen(sslport, () => {
//       console.log(`[HTTPS] Server is started on port ${sslport}`);
//     });
//   } catch (error) {
//     console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
//     console.log(error);
//   }
  
  app.listen(3000, function () {
    console.log('Linebot listening on port 3000!');
  });