app.js 9.44 KB
var end = false;
var count = 0;
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/push'
const TOKEN = 'Ur8nbk2bQAc9KavLSSJv0uzlKWCxCBnOJOKyqbRS1mMHWgJlEOPfb7v+X1DDEHocUmhU7KnPFN+KHt5S3SYd5QmF42aTeQpW2gDVTjyqty1Tn+p6QqEhI/uSz659PBHwczEYn0Plx+akfCNHDPJRpAdB04t89/1O/w1cDnyilFU='
const USER_ID = 'Ub5fa0ab321e4713638a85fbfa7ecc20b'
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2021105602.osschatbot2022.tk"
const sslport = 23023;
const bodyParser = require('body-parser');
var choosen = [];
var app = express();
do{
    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);

        var msg = eventObj.message.text;
        if(eventObj.message.text == 'start')
        {
            request.post(
                {
                    url: TARGET_URL,
                    headers: {
                        'Authorization': `Bearer ${TOKEN}`
                    },
                    json: {
                        "replyToken":eventObj.replyToken,
                        "messages":[
                            {
                                "type":"text",
                                "text":"Hi\nThis is Menu recommend Chatbot!\nIf you follow the instructions, I will recommend the menu!"
                            },
                            {
                                "type":"text",
                                "text":"Choose a number\n1. 한식\n2. 중식\n3. 일식\n4. 양식\n5. 기타"
                            }
                        ]
                    }
                },(error, response, body) => {
                    console.log(body)
                });
            count++;
        }else if(count == 1 & !end)
        {
            if(msg == '1' | msg == '2' | msg == '3' | msg == '4' | msg == '5')
            {
                choosen.push(msg);
                count++;
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Choose a number\n1. 고기\n2. 해산물\n3. 기타"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }else{
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Please choose a number between 1 to 5!"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }
        }else if(count == 2 & !end)
        {
            if(msg == 1 | msg == 2 | msg==3)
            {
                choosen.push(msg);
                count++;
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Choose a number\n1. 뜨거운 음식\n2. 찬 음식"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }else{
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Please choose a number between 1 to 3!"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }
        }else if(count == 3 & !end)
        {
            if(msg == 1 | msg == 2)
            {
                choosen.push(msg);
                count++;
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Choose a number\n1. 국물\n2. 국물 없는 음식"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }else{
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Please choose a number between 1 to 2!"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }
        }else if(count == 4 & !end)
        {
            if(msg == 1 | msg == 2)
            {
                choosen.push(msg);
                count++;
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Choose a number\n1. 매운 음식\n2. 안매운 음식"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }else{
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken":eventObj.replyToken,
                            "messages":[
                                {
                                    "type":"text",
                                    "text":"Please choose a number between 1 to 2!"
                                }
                            ]
                        }
                    },(error, response, body) => {
                        console.log(body)
                    });
            }
        }

        if(count == 5)
        {
            end == true;
        }
   
        res.sendStatus(200);
    });
}while(!end);


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