app.js 3.39 KB
const express = require('express');
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2020105107.osschatbot.cf"
const sslport = 23023;
const app = express();

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

app.post('/message', (req, res) => {
  const question = req.body.userRequest.utterance;
  const goMain = '처음으로';
  var data;
  
  if(question == "도움말"){
    data ={
      "version": "2.0",
      "template": {
        "outputs": [
          {
            "listCard": {
              "header": {
                "title": "KHU 학사정보 알리미를 소개합니다."
              },
              "items": [
                {
                  "title": "KHU 학사정보 알리미",
                  "description": "챗봇으로 손쉽게 알아보는 학사정보",
                  "imageUrl": "https://mblogthumb-phinf.pstatic.net/20140716_293/envicontest_1405437648963lV4y4_GIF/University_Seal.gif?type=w2",
                  "link": {
                    "web": ""
                  }
                },
                {
                  "title": "오늘의 학식이 궁금하세요?",
                  "description": "지금 바로 알아보세요.",
                  "imageUrl": "https://cdn-icons.flaticon.com/png/128/561/premium/561611.png?token=exp=1638429953~hmac=d25a53d3500363101c3364408df33e55",
                  "link": {
                    "web": ""
                  }
                },
                {
                  "title": "셔틀버스 정보 알아보기",
                  "description": "셔틀버스 정보 알아보기",
                  "imageUrl": "https://cdn-icons-png.flaticon.com/128/808/808375.png",
                  "link": {
                    "web": ""
                  }
                }
              ],
            }
          }
        ]
      }
    }
  }

  if (question == "서울캠퍼스") {
    data = {
      'version': '2.0',
      'template': {
	        'outputs': [{
	         'simpleImage': {
	          'imageUrl': "https://coop.khu.ac.kr/wp-content/uploads/2021/11/20211129-1301x2048.png",
            'altText' : "서울캠퍼스 식단입니다." 
	         } 
	       }],
	        'quickReplies': [{
	         'label': goMain,
	         'action': 'message',
	         'messageText': goMain
	       }]
      }
    }
  }else if (question == "국제캠퍼스") {
    data = {
      'version': '2.0',
      'template': {
	        'outputs': [{
	         'simpleImage': {
	          'imageUrl': "",
            'altText' : "국제캠퍼스 식단입니다." 
	         } 
	       }],
	        'quickReplies': [{
	         'label': goMain,
	         'action': 'message',
	         'messageText': goMain
	       }]
      }
    }
  }
  res.json(data);
});

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