Toggle navigation
Toggle navigation
This project
Loading...
Sign in
오세헌
/
Ingredient-to-Dish-ChatBot
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
전언석
2022-06-09 15:29:02 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
39dbd0d8b7273aa5bb8b5f33295e6c9f1fae0672
39dbd0d8
1 parent
4416f722
ADD : added message (when there's a typo)
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
43 deletions
I_to_D_chatbot/reply.js
I_to_D_chatbot/reply.js
View file @
39dbd0d
...
...
@@ -7,18 +7,41 @@ const path = require('path');
const
HTTPS
=
require
(
'https'
);
const
domain
=
"2019102226.osschatbot2022.ml"
const
sslport
=
23023
;
const
bodyParser
=
require
(
'body-parser'
);
var
app
=
express
();
app
.
use
(
bodyParser
.
json
());
app
.
post
(
'/hook'
,
function
(
req
,
res
)
{
var
eventObj
=
req
.
body
.
events
[
0
];
var
source
=
eventObj
.
source
;
var
message
=
eventObj
.
message
;
function
output_message
(
results
,
list
)
{
var
num
=
list
[
Math
.
floor
(
Math
.
random
()
*
list
.
length
)];
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
`메뉴는 "
${
results
[[
num
]].
menu
}
" 입니다.`
},
{
"type"
:
"text"
,
"text"
:
`필요한 재료는\n\n"
${
results
[[
num
]].
ingrediant
}
"\n\n입니다.`
},
{
"type"
:
"text"
,
"text"
:
`레시피\n\n
${
results
[[
num
]].
recipe
}
`
}
]
}
},
(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
// request log
console
.
log
(
'======================'
,
new
Date
(),
'======================'
);
// mwsql
...
...
@@ -30,23 +53,37 @@ app.post('/hook', function (req, res) {
database
:
'chatbot'
,
port
:
'3306'
});
db
.
connect
();
db
.
query
(
'SELECT * FROM data'
,
function
(
error
,
results
,
fields
)
{
var
max
=
0
;
var
arr2
;
db
.
query
(
'SELECT * FROM recipe'
,
function
(
error
,
results
,
fields
)
{
if
(
error
)
{
console
.
log
(
error
);
}
var
arr
=
new
Array
();
var
arr
1
=
new
Array
();
var
input_ingredients_list
=
message
.
text
.
split
(
" "
);
console
.
log
(
input_ingredients_list
);
for
(
var
i
=
0
;
i
<
results
.
length
;
i
++
)
{
var
ingredients_list
=
results
[
i
].
ingredients
.
split
(
", "
);
if
(
ingredients_list
.
filter
(
x
=>
input_ingredients_list
.
includes
(
x
)).
length
===
input_ingredients_list
.
length
)
{
arr
.
push
(
i
);
var
ingredients_list
=
results
[
i
].
ingrediant
.
split
(
","
);
var
count
=
ingredients_list
.
filter
(
x
=>
input_ingredients_list
.
includes
(
x
)).
length
;
if
(
count
>
max
)
{
max
=
count
;
arr2
=
new
Array
();
}
if
(
count
===
input_ingredients_list
.
length
)
{
arr1
.
push
(
i
);
}
else
if
(
arr1
.
length
===
0
&&
count
!=
0
&&
count
===
max
)
{
arr2
.
push
(
i
);
}
}
if
(
arr1
.
length
!=
0
)
{
output_message
(
results
,
arr1
);
}
else
if
(
arr2
!=
undefined
)
{
output_message
(
results
,
arr2
);
}
if
(
arr
.
length
!=
0
)
{
var
num
=
arr
[
Math
.
floor
(
Math
.
random
()
*
arr
.
length
)];
else
{
request
.
post
(
{
url
:
TARGET_URL
,
...
...
@@ -58,35 +95,16 @@ app.post('/hook', function (req, res) {
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
`메뉴는 "
${
results
[[
num
]].
menu
}
" 입니다.`
},
{
"type"
:
"text"
,
"text"
:
`필요한 재료는\n\n"
${
results
[[
num
]].
ingredients
}
"\n\n입니다.`
"text"
:
`재료를 다시 입력해주세요.`
},
{
"type"
:
"text"
,
"text"
:
`
레시피\n\n
${
results
[[
num
]].
recipe
}
`
"text"
:
`
여러 재료를 입력시\n띄어쓰기로만 구분을 해주세요.
`
}
]
}
},
(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
else
{
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:
[
,
{
"type"
:
"text"
,
"text"
:
`
재료를 다시 입력해주세요.
`
"text"
:
`
예시) 감자 양파 대파 (o)\n\n 감자, 양파,대파 (x)
`
}
]
}
...
...
@@ -95,23 +113,19 @@ app.post('/hook', function (req, res) {
});
}
});
db
.
end
();
res
.
sendStatus
(
200
);
});
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
(),
};
HTTPS
.
createServer
(
option
,
app
).
listen
(
sslport
,
()
=>
{
console
.
log
(
`[HTTPS] Server is started on port
${
sslport
}
`
);
});
}
catch
(
error
)
{
console
.
log
(
'[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'
);
console
.
log
(
error
);
}
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment