index_Temp.js 12.2 KB
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'Kb1/rQYz4MUhF8XyKQv7z9x0MxVQ5bX/XO8S/yt/1qQEJVAbsEFAaMvXKEOx9Umr7KhivfyDPfZHRRLFPngR0O4ZGWV2VFses8ufPE7uAdvYr4G6keBNAU69nBz5IC71HfbIrUHxXYqD7GfhVwXzpwdB04t89/1O/w1cDnyilFU='
const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
const PAPAGO_ID = 'kwoxKGTi6azBaW9aSVxe'
const PAPAGO_SECRET = 'svB_MM61oD'
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2020105631.oss2021.tk"
const sslport = 23023;
const bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());

var { google } = require('googleapis');

/// ----


app.post('/hook', function (req, res) {

    var eventObj = req.body.events[0];
    var source = eventObj.source;
    var message = eventObj.message;

    // request log
    console.log('======================', new Date(), '======================');
    console.log('[request]', req.body);
    console.log('[request source] ', eventObj.source);
    console.log('[request message]', eventObj.message);

    trans(eventObj.replyToken, eventObj.message.text);


    res.sendStatus(200);
});
function trans(replyToken, message) {

    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=en&text=' + message,
            json: true
        },

        (error, response, body) => {
            if (!error && response.statusCode == 200) {
                // message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다.
                // 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요.
                // (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.)
                //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                // var sendMessage;

                // --------
                if (message == "노래 추천해줘") {
                    sendMessage = "아이유의 노래를 추천드립니다.";
                    console.log(typeof (sendMessage));
                    console.log(sendMessage);

                    request.post(
                        {
                            url: TARGET_URL,
                            headers: {
                                'Authorization': `Bearer ${TOKEN}`
                            },
                            json: {
                                "replyToken": replyToken,
                                "messages": [
                                    {
                                        "type": "text",
                                        "text": sendMessage
                                    }
                                ]
                            }
                        }, (error, response, body) => {
                            console.log(body)
                        });

                }
                else {
                    // var sendMessage = "무슨 말인지 못알아먹겠습니다";

                    // --------
                    var service = google.youtube('v3');
                    service.videos.list({
                        key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
                        part: 'snippet,statistics',
                        id: 'p5iu1V30myk', // 동영상 Id
                        fields: 'items(snippet(title))'
                    }, function (err, response) {
                        if (err) {
                            console.log('The API returned an error: ', err);
                            return;
                        }

                        var video = response.data.items;
                        if (video.length == 0) {
                            console.log('검색된 동영상이 없습니다.');
                        } else {
                            // var sendMessage ="123";
                            // console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력
                            // console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력
                            // console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력
                            // console.log(JSON.stringify(response.data));// 콘솔에 출력


                            var sendMessage = JSON.stringify(response.data.items[0].snippet.title);
                            // sendMessage = response.data.items[0].snippet.title;
                            console.log(sendMessage);
                            console.log(typeof (sendMessage));
                        }
                        request.post(
                            {
                                url: TARGET_URL,
                                headers: {
                                    'Authorization': `Bearer ${TOKEN}`
                                },
                                json: {
                                    "replyToken": replyToken,
                                    "messages": [
                                        {
                                            "type": "text",
                                            "text": sendMessage
                                        }
                                    ]
                                }
                            }, (error, response, body) => {
                                console.log(body)
                            });
                    })
                    // // --------
                }

            }
        });
}
// function trans(replyToken, message) {
//     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=en&text=' + message,
//             json:true
//         },

//        (error, response, body) => {
//             if(!error && response.statusCode == 200)
//             {
//                 // message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다.
//                 // 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요.
//                 // (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.)
//                 //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓



//                 var sendMessage;
//                     // --------
//                 if (message=="노래 추천해줘")
//                 {
//                     sendMessage = "아이유의 노래를 추천드립니다.";
//                     console.log(typeof(sendMessage));
//                     console.log(sendMessage);


//                     console.log("11111");
//                     console.log(body.message);
//                     console.log("11111");
//                     // console.log(typeof(response.data.items[0].snippet.title));

//                     request.post(
//                         {
//                             url: TARGET_URL,
//                             headers: {
//                                 'Authorization': `Bearer ${TOKEN}`
//                             },
//                             json: {
//                                 "replyToken": replyToken,
//                                 "messages": [
//                                     {
//                                         "type": "text",
//                                         "text": sendMessage
//                                     }
//                                 ]
//                             }
//                         }, (error, response, body) => {
//                             console.log(body)
//                     });
//                 }
//                 else
//                 {
//                     // var sendMessage = "무슨 말인지 못알아먹겠습니다";
//                     // --------
//                     var service = google.youtube('v3');

//                     service.videos.list({
//                         key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
//                         part: 'snippet,statistics',
//                         id: 'p5iu1V30myk', // 동영상 Id
//                         fields: 'items(snippet(title))'
//                     }, function (err, response) {
//                         if (err) {
//                             console.log('The API returned an error: ', err);
//                             return;
//                         }

//                         var video = response.data.items;
//                         if (video.length == 0) {
//                             console.log('검색된 동영상이 없습니다.');
//                         } else {
//                             // var sendMessage ="123";
//                             // console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력
//                             // console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력
//                             // console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력
//                             // console.log(JSON.stringify(response.data));// 콘솔에 출력

//                             sendMessage = JSON.stringify(response.data.items[0].snippet.title);
//                             // sendMessage = response.data.items[0].snippet.title;
//                             console.log(sendMessage);
//                             console.log(typeof (sendMessage));
//                         }
//                         //console.log(sendMessage);
//                     })
//                     //console.log(sendMessage);
//                     // // --------
//                     /// ----


//                     console.log("11111");
//                     console.log(body.message);
//                     console.log("11111");
//                     // console.log(typeof(response.data.items[0].snippet.title));

//                     request.post(
//                         {
//                             url: TARGET_URL,
//                             headers: {
//                                 'Authorization': `Bearer ${TOKEN}`
//                             },
//                             json: {
//                                 "replyToken": replyToken,
//                                 "messages": [
//                                     {
//                                         "type": "text",
//                                         "text": sendMessage
//                                     }
//                                 ]
//                             }
//                         }, (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);
}