ToLive
......@@ -8,8 +8,15 @@ const HTTPS = require('https');
const domain = "2015104206.oss-2021.tk"
const sslport = 23023;
const SERACH_URL = 'https://openapi.naver.com/v1/search/local.xml?query=%EC%A3%BC%EC%8B%9D&display=10&start=1&sort=random'
const SEARCH_ID = 'A9UHUOhOXDtai4Rszdjw'
const SEARCH_SECRET = 'ptmB9hKvCw'
const bodyParser = require('body-parser');
var app = express();
var stack = 0;
var meal, country, cold, spicy;
app.use(bodyParser.json());
app.post('/hook', function (req, res) {
......@@ -17,37 +24,43 @@ app.post('/hook', function (req, res) {
var source = eventObj.source;
var message = eventObj.message;
/*
아침 뭐먹지?
-> JSON에서 [아침]에 해당하는 meal 정보 가져옴
-> 한식, 중식, 일식, 양식 어떤게 좋으세요?(한,중,일,양,아무거나)
-> 따뜻한게 좋으세요, 차가운게 좋으세요?(따뜻한거, 차가운거, 아무거나)
-> 매운게 좋으세요, 안매운게 좋으세요?(매운거, 안매운거, 아무거나)
-> 빵, 밥, 면, 떡, 디저트 중에는요?
-> 그렇다면...이걸 드셔보세요! (사진 첨부)
JSON 구성요소
name : 음식 이름
meal : 아침/점심/저녁
contury : 한식/일식/양식/중식
cold : 따뜻/찬
carb : 빵/밥/면/떡/디저트
cold : hot/cold
spicy : yes/no
image : 해당 음식 이미지 넣을 방법 찾아주세요
API 어떤거 쓸건지? (교수님 보기 좋게 하나는 써야할거같음)
네이버 검색 API
https://developers.naver.com/docs/search/local/
검색해서 이미지 띄워주는건 어떨까?
*/
var morning = ['시리얼', '토스트', '']
// request log
console.log('======================', new Date() ,'======================');
console.log('[request]', req.body);
console.log('[request source] ', eventObj.source);
console.log('[request message]', eventObj.message);
if(eventObj.message.text == "아침")
if(eventObj.message.text.indexOf("아침") !== -1 ||eventObj.message.text.indexOf("점심") !== -1 ||eventObj.message.text.indexOf("저녁") !== -1 ) // "아침" 단어가 포함되어있으면
{
if(eventObj.message.text.indexOf("아침") !== -1) { meal = "morning"}
else if(eventObj.message.text.indexOf("점심") !== -1) { meal = "lunch"}
else if(eventObj.message.text.indexOf("저녁") !== -1) { meal = "dinner"}
stack = 1;
request.post(
{
url: TARGET_URL,
......@@ -59,19 +72,173 @@ API 어떤거 쓸건지? (교수님 보기 좋게 하나는 써야할거같음)
"messages":[
{
"type":"text",
"text":"Hello, user"
},
"text":"한식, 중식, 일식, 양식 중 어떤게 좋으세요?"
}
]
}
},(error, response, body) => {
console.log(body)
}
);
console.log('[request message]', stack);
}
else if(stack == 1 && (eventObj.message.text.indexOf("한식") !== -1
|| eventObj.message.text.indexOf("중식") !== -1
|| eventObj.message.text.indexOf("일식") !== -1
|| eventObj.message.text.indexOf("양식") !== -1))
{
{
if(eventObj.message.text.indexOf("한식") !== -1) { country = "한식"}
else if(eventObj.message.text.indexOf("중식") !== -1) {country = "중식"}
else if(eventObj.message.text.indexOf("일식") !== -1) { country = "일식"}
else if(eventObj.message.text.indexOf("양식") !== -1) { country = "양식"}
stack = 2;
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":"매운거, 안매운거 어떤게 좋으세요?"
}
]
}
},(error, response, body) => {
console.log(body)
}
);
}
}
else if(stack == 2 && (eventObj.message.text.indexOf("매운거") !== -1
|| eventObj.message.text.indexOf("안매운거") !== -1))
{
{
if(eventObj.message.text.indexOf("매운거") !== -1) { spicy = "yes"}
else if(eventObj.message.text.indexOf("안매운거") !== -1) {spicy = "no"}
stack = 3;
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":"찬거, 뜨거운거 어떤게 나으세요?"
}
]
}
},(error, response, body) => {
console.log(body)
}
);
}
}
else if(stack == 3 && (eventObj.message.text.indexOf("찬") !== -1
|| eventObj.message.text.indexOf("뜨거운") !== -1))
{
{
if(eventObj.message.text.indexOf("찬") !== -1) { cold = "hot"}
else if(eventObj.message.text.indexOf("뜨거운") !== -1) {cold = "cold"}
stack = 4;
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":"잠시만 기다려주세요!" // 결과 도출
}
]
}
},(error, response, body) => {
console.log(body)
}
);
console.log('[request message]', meal);
console.log('[request message]', country);
console.log('[request message]', cold);
console.log('[request message]', spicy);
}
}
else if(stack == 4 && (eventObj.message.text.indexOf("결과") !== -1))
{
{
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":"잠시만 기다려주세요!" // 결과 도출
}
]
}
},(error, response, body) => {
console.log(body)
}
);
console.log('[request message]', meal);
console.log('[request message]', country);
console.log('[request message]', cold);
console.log('[request message]', spicy);
const option = {
query: '순대',
start: 1,
display: 3,
sort: 'sim',
filter: 'small'
}
ImageSearch(option);
}
}
else if(eventObj.message.text.indexOf("처음부터") !== -1) // 초기화 알고리즘
{
stack = 0;
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":"드세요"
"text":"초기화되었습니다. '아침, 점심, 저녁' 중 하나를 입력해주세요!"
}
]
}
},(error, response, body) => {
console.log(body)
});
}
);
}
else
else // 예외 파트
{
request.post(
{
......@@ -84,25 +251,49 @@ API 어떤거 쓸건지? (교수님 보기 좋게 하나는 써야할거같음)
"messages":[
{
"type":"text",
"text":"No, THanks"
},
"text":"잘못 입력하셨습니다. 다시 입력해주세요!"
}
],
"messages":[
{
"type":"text",
"text":"May I help you?"
"text":"처음부터 다시 하고 싶으시면, '처음부터'라고 입력해주세요!"
}
]
}
},(error, response, body) => {
console.log(body)
});
}
);
}
res.sendStatus(200);
});
function ImageSearch(option) {
request.get({
uri:'https://openapi.naver.com/v1/search/image',
qs :option,
headers:{
'X-Naver-Client-Id':SEARCH_ID,
'X-Naver-Client-Secret':SEARCH_SECRET
}
}, function(err,res,body){
let json = JSON.parse(body)
console.log(json)
})
}
try {
const option = {
ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
......