EC2 Default User

EDIT : Improve reply.js

Showing 1 changed file with 136 additions and 83 deletions
...@@ -11,6 +11,9 @@ const sslport = 23023; ...@@ -11,6 +11,9 @@ const sslport = 23023;
11 var client_id = 'YOUR_CLIENT_ID'; 11 var client_id = 'YOUR_CLIENT_ID';
12 var client_secret = 'YOUR_CLIENT_SECRET'; 12 var client_secret = 'YOUR_CLIENT_SECRET';
13 13
14 +var newsOn = false;
15 +var newsOff = true;
16 +
14 const bodyParser = require('body-parser'); 17 const bodyParser = require('body-parser');
15 var app = express(); 18 var app = express();
16 app.use(bodyParser.json()); 19 app.use(bodyParser.json());
...@@ -20,95 +23,145 @@ app.post('/hook', function (req, res) { ...@@ -20,95 +23,145 @@ app.post('/hook', function (req, res) {
20 var source = eventObj.source; 23 var source = eventObj.source;
21 var message = eventObj.message; 24 var message = eventObj.message;
22 25
23 - // request log 26 + // request log
24 - console.log('======================', new Date() ,'======================'); 27 + console.log('======================', new Date() ,'======================');
25 - console.log('[request]', req.body); 28 + console.log('[request]', req.body);
26 - console.log('[request source] ', eventObj.source); 29 + console.log('[request source] ', eventObj.source);
27 - console.log('[request message]', eventObj.message); 30 + console.log('[request message]', eventObj.message);
31 +
32 + if (message.text == 'news on') {
33 + newsOn = true;
34 + newsOff = false;
35 + request.post(
36 + {
37 + url: TARGET_URL,
38 + headers: {
39 + 'Authorization': `Bearer ${TOKEN}`
40 + },
41 + json: {
42 + "replyToken":eventObj.replyToken,
43 + "messages":[
44 + {
45 + "type":"text",
46 + "text":"[news On] 키워드를 입력 하세요."
47 + }
48 + ]
49 + }
50 + },(error, response, body) => {
51 + console.log(body)
52 + });
53 + } else if ( message.text == 'news off') {
54 + newsOn = false;
55 + newsOff = true;
56 + request.post(
57 + {
58 + url: TARGET_URL,
59 + headers: {
60 + 'Authorization': `Bearer ${TOKEN}`
61 + },
62 + json: {
63 + "replyToken":eventObj.replyToken,
64 + "messages":[
65 + {
66 + "type":"text",
67 + "text":"[news Off] 뉴스를 종료합니다."
68 + }
69 + ]
70 + }
71 + },(error, response, body) => {
72 + console.log(body)
73 + });
74 + }
28 75
29 - if (true) { 76 + if (newsOn & message.text != 'help' & message.text != 'news on') {
30 - var api_url = 'https://openapi.naver.com/v1/search/news?query=' + encodeURI(message.text); // json 결과 77 + var api_url = 'https://openapi.naver.com/v1/search/news?query=' + encodeURI(message.text); // json 결과
31 - var options = { 78 + var options = {
32 - url: api_url, 79 + url: api_url,
33 - headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret} 80 + headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret}
34 - }; 81 + };
35 - request.get(options, function (error, response, body) { 82 + request.get(options, function (error, response, body) {
36 - const obj = JSON.parse(body); 83 + const obj = JSON.parse(body);
37 - const str = JSON.stringify(obj.items[0]); 84 + const str = JSON.stringify(obj.items[0]);
38 - const obj2 = JSON.parse(str); 85 + const obj2 = JSON.parse(str);
39 - if (!error && response.statusCode == 200) { 86 + if (!error && response.statusCode == 200) {
40 - request.post( 87 + request.post(
41 - { 88 + {
42 - url: TARGET_URL, 89 + url: TARGET_URL,
43 - headers: { 90 + headers: {
44 - 'Authorization': `Bearer ${TOKEN}` 91 + 'Authorization': `Bearer ${TOKEN}`
45 - }, 92 + },
46 - json: { 93 + json: {
47 - "replyToken":eventObj.replyToken, 94 + "replyToken":eventObj.replyToken,
48 - "messages": [ 95 + "messages": [
49 - { 96 + {
97 + "type":"text",
98 + "text": "<<<헤드라인>>>\n" + JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')
99 + },
100 + {
50 "type":"text", 101 "type":"text",
51 - "text": JSON.stringify(obj2.link) 102 + "text": "<<<주요문단>>>\n" + JSON.stringify(obj2.description).replace(/<[^>]*>?/g, '')
52 - }, 103 + },
53 - { 104 + {
54 "type":"text", 105 "type":"text",
55 - "text": JSON.stringify(obj2.description).replace(/<[^>]*>?/g, '') 106 + "text": "뉴스 바로가기\n" + JSON.stringify(obj2.link)
56 - } 107 + }
57 - ] 108 + ]
58 - } 109 + }
59 - },(error, response, body) => { 110 + },(error, response, body) => {
60 - console.log(body) 111 + console.log(body)
61 - } 112 + }
62 - ) 113 + )
63 - } else { 114 + } else {
64 - res.status(response.statusCode).end(); 115 + res.status(response.statusCode).end();
65 - console.log('error = ' + response.statusCode); 116 + console.log('error = ' + response.statusCode);
66 - } 117 + }
67 - }); 118 + });
68 119
69 - } 120 + }
70 121
71 - if (message.text == 'help') { 122 + if (message.text == 'help') {
72 - request.post( 123 + request.post(
73 - { 124 + {
74 - url: TARGET_URL, 125 + url: TARGET_URL,
75 - headers: { 126 + headers: {
76 - 'Authorization': `Bearer ${TOKEN}` 127 + 'Authorization': `Bearer ${TOKEN}`
77 - }, 128 + },
78 - json: { 129 + json: {
79 - "replyToken":eventObj.replyToken, 130 + "replyToken":eventObj.replyToken,
80 - "messages":[ 131 + "messages":[
81 - { 132 + {
82 - "type":"text", 133 + "type":"text",
83 - "text":"반갑습니다. 주식 알리미 입니다." 134 + "text":"*****************\
84 - }, 135 + \n반갑습니다. 주식 news 알리미 입니다.\
85 - { 136 + \n1. 뉴스 검색 기능 활성화\
86 - "type":"text", 137 + \n\'news on\' 입력\
87 - "text":"주식 관련 뉴스를 원하시면 \'뉴스\' 입력 후 원하는 종목을 검색하세요." 138 + \n2. 뉴스 검색 기능 비활성화\
88 - } 139 + \n\'news off\' 입력\
89 - ] 140 + \n*****************"
90 - } 141 + }
91 - },(error, response, body) => { 142 + ]
92 - console.log(body) 143 + }
93 - }); 144 + },(error, response, body) => {
94 - } 145 + console.log(body)
95 - 146 + });
147 + }
148 +
96 149
97 - res.sendStatus(200); 150 + res.sendStatus(200);
98 }); 151 });
99 152
100 try { 153 try {
101 - const option = { 154 + const option = {
102 - ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), 155 + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
103 - key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(), 156 + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
104 - cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(), 157 + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
105 - }; 158 + };
106 - 159 +
107 - HTTPS.createServer(option, app).listen(sslport, () => { 160 + HTTPS.createServer(option, app).listen(sslport, () => {
108 - console.log(`[HTTPS] Server is started on port ${sslport}`); 161 + console.log(`[HTTPS] Server is started on port ${sslport}`);
109 - }); 162 + });
110 - } catch (error) { 163 + } catch (error) {
111 - console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); 164 + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
112 - console.log(error); 165 + console.log(error);
113 - } 166 + }
114 - 167 +
......