reply.js 2.95 KB
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'zVAczqoJ+L9oykqhEj7HoP7f6Nyb+R3T1TntHXQhYihI+KIxH4SZDGpKu0jKsMXMHKBVXpmbybA+oaV8u/dfLppKe3NHXU9AdBVypy9NgfWiFPLlcwm3GdkVPAZGoS4nvOCXWDKUb+ixPKWjlbnChAdB04t89/1O/w1cDnyilFU='
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2019102226.osschatbot2022.ml"
const sslport = 23023;



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(), '======================');
    
    // mwsql
    var mysql = require('mysql');
    var db = mysql.createConnection({
        host: 'chatbot.c7fzgftc3yrm.us-east-1.rds.amazonaws.com',
        user: 'chatbot',
        password: '11111111',
        database: 'chatbot',
        port: '3306'
    });

    db.connect();

    db.query('SELECT * FROM data', function (error, results, fields) {
        if (error) {
            console.log(error);
        }
        for (var i = 0; i < results.length; i++)
            if (results[i].ingredients === message.text) {
                request.post(
                    {
                        url: TARGET_URL,
                        headers: {
                            'Authorization': `Bearer ${TOKEN}`
                        },
                        json: {
                            "replyToken": eventObj.replyToken,
                            "messages": [
                                {
                                    "type": "text",
                                    "text": `메뉴는 "${results[i].menu}" 입니다.`
                                },
                                {
                                    "type": "text",
                                    "text": `레시피\n${results[i].recipe}`
                                }
                            ]
                        }
                    }, (error, response, body) => {
                        console.log(body)
                    });
            }
    });

    db.end();
    res.sendStatus(200);
});

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