app.js
3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
const Address = require('./Address.js');
const express = require('express');
const request = require('request');
require("dotenv").config( {path: "/home/ec2-user/OSS/Experiments/messenger/chat/custom_modules/.env"} );
// const KAKAO_KEY = process.env.KAKAO_KEY;
const TOKEN = process.env.CHANNEL_ACCESS_TOKEN;
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = process.env.MY_DOMAIN;
const sslport = 23023;
const bodyParser = require('body-parser');
const app = express();
var event_time =1
function main(eventObj,res){
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`,
},
json: {
"replyToken":eventObj.replyToken, //eventObj.replyToken
"messages":[
{
"type": "text", // ①
"text": "응급 상황인가요?"},
{"type": "text",
"text": "현재있는 위치의 주소나 보이는 곳을 입력하세요."},
],
}
},(error, response, body) => {
});
res.sendStatus(200);
}
function find_current(eventObj,res){ //Two
console.log(Address.getAddress(eventObj.message.text))
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`,
},
json: {
"replyToken":eventObj.replyToken, //eventObj.replyToken
"messages":[
{
"type": "location",
"title": "현재위치",
"address": "경기 안산시 단원구 석수동길",
"latitude": 37.3446767467006,
"longitude": 126.807581282114
},
{
"type": "template",
"altText": "This is a buttons template",
"template": {
"type": "buttons",
"text": "이곳이 맞나요?",
"defaultAction": {
"type": "uri",
"label": "View detail",
"uri": "http://example.com/page/123"
},
"actions": [
{
"type": "postback",
"label": "네",
"data": "action=buy&itemid=123"
},
{
"type": "postback",
"label": "아니요",
"data": "action=add&itemid=123"
},
]
}
}
],
}
},(error, response, body) => {
});
res.sendStatus(200);
}
app.use(bodyParser.json());
app.post('/hook', function (req, res) {
var eventObj = req.body.events[0];
var headers = req.headers;
console.log('======================', new Date() ,'======================');
if(event_time==1){
main(eventObj,res)
event_time=2
}
else if (event_time ==2){
find_current(eventObj,res)
event_time =3
}
else if (event_time ==3){
}
});
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);
}