Toggle navigation
Toggle navigation
This project
Loading...
Sign in
이종상
/
OSS-2021-Project2015
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
ToLive
2021-06-10 13:11:56 +0900
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
48389ddfaa2d311bd94d35342fd87985c1c7790f
48389ddf
2 parents
df771468
5c90c28f
Merge branch 'master' of
http://khuhub.khu.ac.kr/2015104206/OSS-2021-Project2015
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
207 additions
and
16 deletions
Project/app.js
Project/app.js
View file @
48389dd
...
...
@@ -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'
),
...
...
Please
register
or
login
to post a comment