Toggle navigation
Toggle navigation
This project
Loading...
Sign in
박태권
/
menu_recommend_webpage
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
5
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
taegwon
2022-06-07 18:40:42 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
18c50ca388ab849f6792b540c65c78fff3e03ff8
18c50ca3
1 parent
b80cac5a
make chatbot to work to starting msg
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
284 additions
and
197 deletions
CHATBOT/app.js
CHATBOT/app.js
View file @
18c50ca
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
}
...
...
Please
register
or
login
to post a comment