read_csv.js 7.67 KB
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'MNiReWsDC5DyJeehZ2gHoqlEVjPsno4ScaswBgXNz0lAVW3v2JizZzhF97DPKxe23jduB+YCcBum+KredegXZnxnrovFVt4fEmgeivWgxOzt/AEJ292DZfPn3uW7xrWfBZrlGXDLaL1AMIBlmwSCcwdB04t89/1O/w1cDnyilFU='
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2021105581.osschatbot2022.tk"
const sslport = 23023;

var first = false; //첫 시도인지
var second = false; //첫번째 분류 선택했는지
var destCar = "";

const bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
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);


    if (first == false && eventObj.message.text == "처음") {
        request.post(
            {
                url: TARGET_URL,
                headers: {
                    'Authorization': `Bearer ${TOKEN}`
                },
                json: {
                    "replyToken": eventObj.replyToken,
                    "messages": [
                        {
                            "type": "text",
                            "text": "카테고리를 선택해주세요.\n1. 식사\n2. 카페\n3. 술\n4. 놀거리\n(숫자만 입력해주세요)"
                        }
                    ]
                },
            }, (error, response, body) => {
                console.log(body)
            });
        first = true;
    }

    else if (first == true && second == false) {

        if (eventObj.message.text == 1) { //식사 선택
            request.post(
                {
                    url: TARGET_URL, headers: { 'Authorization': `Bearer ${TOKEN}` }, json: {
                        "replyToken": eventObj.replyToken,
                        "messages": [{ "type": "text", "text": "[식사] 키워드를 선택해주세요\n1. 양식\n2. 한식\n3. 중식\n4. 일식\n5. 기타 " }]
                    }
                }, (error, response, body) => {
                    console.log(body)
                });
                destCar = "meal";
            } else if (eventObj.message.text == 2) { //카페 선택
            request.post(
                {
                    url: TARGET_URL, headers: { 'Authorization': `Bearer ${TOKEN}` }, json: {
                        "replyToken": eventObj.replyToken,
                        "messages": [{ "type": "text", "text": "[카페] 키워드를 선택해주세요\n1. 감성\n2. 카공\n3. 디저트" }]
                    }
                }, (error, response, body) => {
                    console.log(body)
                });
                destCar = "cafe";
        } else if (eventObj.message.text == 3) { //술 선택
            request.post(
                {
                    url: TARGET_URL, headers: { 'Authorization': `Bearer ${TOKEN}` }, json: {
                        "replyToken": eventObj.replyToken,
                        "messages": [{ "type": "text", "text": "[술] 키워드를 선택해주세요\n1. 소주\n2. 이자카야\n3. 막걸리\n4. 맥주" }]
                    }
                }, (error, response, body) => {
                    console.log(body)
                });
                destCar = "bar"
        } else if (eventObj.message.text == 4) { //놀거리 선택
            request.post(
                {
                    url: TARGET_URL, headers: { 'Authorization': `Bearer ${TOKEN}` }, json: {
                        "replyToken": eventObj.replyToken,
                        "messages": [{ "type": "text", "text": "[놀거리] 키워드를 선택해주세요\n1. 노래방\n2. 피시방\n3. 기타" }]
                    }
                }, (error, response, body) => {
                    console.log(body)
                });
                destCar = "play"
        }

        second = true;
        
    }

    else if (first == true && second == true) {
        if (destCar == "meal") {
            if (eventObj.message.text == 1) { destination = "western"; console.log(destination) }
            else if (eventObj.message.text == 2) { destination = "korean"; console.log(destination)}
            else if (eventObj.message.text == 3) { destination = "chinese"; console.log(destination)}
            else if (eventObj.message.text == 4) { destination = "japanese"; console.log(destination)}
            else if (eventObj.message.text == 5) { destination = "meal_etc"; console.log(destination) }
        }
        else if (destCar == "cafe") {
            if (eventObj.message.text == 1) { destination = "sns"; console.log(destination) }
            else if (eventObj.message.text == 2) { destination = "study"; console.log(destination)}
            else if (eventObj.message.text == 3) { destination = "dessert"; console.log(destination)}
        }
        else if (destCar == "bar") {
            if (eventObj.message.text == 1) { destination = "soju"; console.log(destination) }
            else if (eventObj.message.text == 2) { destination = "izakaya"; console.log(destination)}
            else if (eventObj.message.text == 3) { destination = "makgeolli"; console.log(destination)}
            else if (eventObj.message.text == 4) { destination = "beer"; console.log(destination)}
        }
        else if (destCar == "play") {
            if (eventObj.message.text == 1) { destination = "karaoke"; console.log(destination) }
            else if (eventObj.message.text == 2) { destination = "izakaya"; console.log(destination)}
            else if (eventObj.message.text == 3) { destination = "play_etc"; console.log(destination)}
        }
    }
    res.sendStatus(200);

    chooseFile = function () {
        if (destCar == "cafe") {
          fs.createReadStream('cafe_list.csv')
            .pipe(csv())
            .on('data', (data) => results.push(data))
            .on('end', () => {
              console.log(results);
            });
        }
        else if (destCar == "meal") {
          fs.createReadStream('meal_list.csv')
            .pipe(csv())
            .on('data', (data) => results.push(data))
            .on('end', () => {
              console.log(results);
            });
        }
        else if (destCar == "play") {
          fs.createReadStream('play_list.csv')
            .pipe(csv())
            .on('data', (data) => results.push(data))
            .on('end', () => {
              console.log(results);
            });
        }
        else if (destCar == "bar") {
          fs.createReadStream('bar_list.csv')
            .pipe(csv())
            .on('data', (data) => results.push(data))
            .on('end', () => {
              console.log(results);
            });
        }
      }
      
      chooseFile();

      
});

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);
}

const csv = require('csv-parser')
const results = [];