taegwon

make chatbot to work to starting msg

Showing 1 changed file with 284 additions and 197 deletions
var end = false;
var end = 'not';
var count = 0;
var n = 1;
var choosen = new Array();
var opt_1 = ['Korean cuisine', 'Chinese food', 'Japanese food', 'Western food', 'Guitar'];
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 TARGET_URL = '라인 URL'
const TOKEN = '라인 토큰'
const PAPAGO_URL = '파파고 API URL'
const PAPAGO_ID = '파파고 ID'
const PAPAGO_SECRET = '파파고 시크릿'
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2021105602.osschatbot2022.tk"
const domain = "도메인"
const sslport = 23023;
const bodyParser = require('body-parser');
var choosen = [];
const res = require('express/lib/response');
var app = express();
do{
app.use(bodyParser.json());
app.post('/hook', function (req, res) {
app.use(bodyParser.json());
app.post('/hook', function (req, res) {
n=1;
var eventObj = req.body.events[0];
var source = eventObj.source;
var message = eventObj.message;
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);
// switch (count) {
// case 0:
if (eventObj.message.text == 'start') {
// request log
console.log('======================', new Date() ,'======================');
console.log('[request]', req.body);
console.log('[request source] ', eventObj.source);
console.log('[request message]', eventObj.message);
count++;
start_msg(eventObj.replyToken, eventObj.message.text);
var msg = eventObj.message.text;
if(eventObj.message.text == 'start')
sleep(5000);
for(var i = 0; i<5; i++)
{
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)
option(eventObj.replyToken, opt_1[i]);
console.log(opt_1[i]);
n++;
sleep(5000);
}
}
// break;
// case 1:
// if (eventObj.message.text === '1' || eventObj.message.text === '2' || eventObj.message.text === '3' || eventObj.message.text == '4' || eventObj.message.texts == '5') {
// q_1(eventObj.replyToken, eventObj.message.text);
// } 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)
// });
// }
// break;
// case 2:
// if (eventObj.message.text === '1' || eventObj.message.text === '2' || eventObj.message.text === '3') {
// q_2(eventObj.replyToken, eventObj.message.text);
// } 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)
// });
// }
// break;
// case 3:
// if (eventObj.message.text === '1' || eventObj.message.text === '2' || eventObj.message.text === '3') {
// q_2(eventObj.replyToken, eventObj.message.text);
// } 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)
// });
// }
// break;
// case 4:
// if (eventObj.message.text === '1' || eventObj.message.text === '2') {
// q_4(eventObj.replyToken, eventObj.message.text);
// } 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)
// });
// }
// break;
// case 5:
// end = 'end';
// break;
// default:
// break;
// }
res.sendStatus(200);
});
function start_msg(replyToken, message) {
request.post(
{
if(msg == '1' | msg == '2' | msg == '3' | msg == '4' | msg == '5')
{
choosen.push(msg);
count++;
url: PAPAGO_URL,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Naver-Client-Id': `${PAPAGO_ID}`,
'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
},
body: 'source=en&target=ko&text=' + "Hi This is Menu recommend Chatbot! If you follow the instructions, I will recommend the menu",
json: true
}, (error, response, body) => {
if (!error && response.statusCode == 200) {
console.log(body.message);
var transMessage = body.message.result.translatedText;
request.post(
{
url: TARGET_URL,
......@@ -66,43 +177,38 @@ do{
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
"replyToken": replyToken,
"messages": [
{
"type":"text",
"text":"Choose a number\n1. 고기\n2. 해산물\n3. 기타"
"type": "text",
"text": transMessage
}
]
}
},(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) => {
}, (error, response, body) => {
console.log(body)
});
}
}else if(count == 2 & !end)
});
sleep(5000);
}
function option(replyToken, message)
{
request.post(
{
if(msg == 1 | msg == 2 | msg==3)
{
choosen.push(msg);
count++;
url: PAPAGO_URL,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Naver-Client-Id': `${PAPAGO_ID}`,
'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
},
body: 'source=en&target=ko&text=' + n + "." + message,
json: true
}, (error, response, body) => {
if (!error && response.statusCode == 200) {
console.log(body.message);
var transMessage = body.message.result.translatedText;
request.post(
{
url: TARGET_URL,
......@@ -110,149 +216,130 @@ do{
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
"replyToken": replyToken,
"messages": [
{
"type":"text",
"text":"Choose a number\n1. 뜨거운 음식\n2. 찬 음식"
"type": "text",
"text": transMessage
}
]
}
},(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) => {
}, (error, response, body) => {
console.log(body)
});
}
}else if(count == 3 & !end)
});
sleep(5000);
}
function q_1(replyToken, msg) {
count++;
choosen.push(msg);
request.post(
{
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": replyToken,
"messages": [
{
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)
});
"type": "text",
"text": "Choose a number\n1. 고기\n2. 해산물\n3. 기타"
}
]
}
}else if(count == 4 & !end)
}, (error, response, body) => {
console.log(body)
});
}
function q_2(replyToken, msg) {
count++;
choosen.push(msg);
request.post(
{
if(msg == 1 | msg == 2)
{
choosen.push(msg);
count++;
request.post(
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken": replyToken,
"messages": [
{
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(
"type": "text",
"text": "Choose a number\n1. 뜨거운 음식\n2. 찬 음식"
}
]
}
}, (error, response, body) => {
console.log(body)
});
}
function q_3(replyToken, msg) {
count++;
choosen.push(msg);
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken": replyToken,
"messages": [
{
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)
});
"type": "text",
"text": "Choose a number\n1. 국물\n2. 국물 없는 음식"
}
]
}
}
}, (error, response, body) => {
console.log(body)
});
}
if(count == 5)
function q_4(replyToken, msg) {
count++;
choosen.push(msg);
request.post(
{
end == true;
}
res.sendStatus(200);
});
}while(!end);
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken": replyToken,
"messages": [
{
"type": "text",
"text": "Choose a number\n1. 매운 음식\n2. 안매운 음식"
}
]
}
}, (error, response, body) => {
console.log(body)
});
}
function sleep(ms) {
const wakeUpTime = Date.now() + ms;
while (Date.now() < wakeUpTime) {}
}
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(),
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}`);
console.log(`[HTTPS] Server is started on port ${sslport}`);
});
} catch (error) {
} catch (error) {
console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
console.log(error);
}
\ No newline at end of file
}
......