Toggle navigation
Toggle navigation
This project
Loading...
Sign in
신정아
/
weather_chatbot
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Issues
1
Network
Create a new issue
Commits
Issue Boards
Authored by
Ubuntu
2020-06-20 13:28:36 +0000
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
cb3c1384b3b19f5a5f146d84cec8f0b298a009ac
cb3c1384
1 parent
7b8ee251
모든지역가능, 띄어쓰기등은 수정필요
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
93 deletions
Experiments/messenger/trans/app.js
Experiments/messenger/trans/region.json
Experiments/messenger/trans/app.js
View file @
cb3c138
...
...
@@ -2,30 +2,18 @@ var express = require('express');//express 모듈을 사용
var
qs
=
require
(
'querystring'
)
const
request
=
require
(
'request'
);
//request 모듈을 사용
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
//라인 api
const
fs
=
require
(
'fs'
)
var
NOW
=
new
Date
()
var
YEAR
=
NOW
.
getFullYear
()
var
MONTH
=
NOW
.
getMonth
()
+
1
var
DATE
=
NOW
.
getDate
();
var
NOWDATE
=
YEAR
.
toString
().
padStart
(
4
,
'0'
)
+
MONTH
.
toString
().
padStart
(
2
,
'0'
)
+
DATE
.
toString
().
padStart
(
2
,
'0'
)
var
WEATHER_URL
=
`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=1000&pageNo=1&base_date=
${
NOWDATE
}
&base_time=0230&nx=60&ny=120&dataType=JSON`
//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62, 'y'}}
/*
var dic={}
var [schoolx]='62'
var [schooly]='120'
대구 수성구 x 90\
대구 수성구 y 90
*/
//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62,'y':120}}
const
WEATHER_URL_D
=
`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=1000&pageNo=1&base_date=
${
NOWDATE
}
&base_time=0230&nx=90&ny=90&dataType=JSON`
const
WEATHER_URL_S
=
`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=1000&pageNo=1&base_date=
${
NOWDATE
}
&base_time=0230&nx=62&ny=120&dataType=JSON`
var
region
=
JSON
.
parse
(
fs
.
readFileSync
(
'region.json'
,
'utf8'
));
const
TOKEN
=
'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU='
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
HTTPS
=
require
(
'https'
);
const
domain
=
"www.osschat.tk"
...
...
@@ -33,12 +21,13 @@ const sslport = 23023;
const
bodyParser
=
require
(
'body-parser'
);
var
app
=
express
();
var
premessage
=
'premessage'
var
start
=
'start'
var
check
=
true
var
check
=
false
app
.
use
(
bodyParser
.
json
());
app
.
use
(
express
.
static
(
'statics'
));
fs
.
readFile
(
'region.json'
,
'utf8'
,
function
(
err
,
data
){
console
.
log
(
data
);
});
...
...
@@ -54,9 +43,11 @@ app.post('/hook', function (req, res) {
console
.
log
(
'[request source] '
,
eventObj
.
source
);
console
.
log
(
'[request message]'
,
eventObj
.
message
);
rain
(
eventObj
.
replyToken
,
eventObj
.
message
.
text
);
//clothes(eventObj.replyToken, eventObj.message.text);
if
(
check
==
false
){
start
(
eventObj
.
replyToken
,
eventObj
.
message
.
text
)}
else
{
info
(
eventObj
.
replyToken
,
eventObj
.
message
.
text
)}
res
.
sendStatus
(
200
);
...
...
@@ -64,17 +55,26 @@ app.post('/hook', function (req, res) {
function
rain
(
replyToken
,
message
){
if
(
message
!=
'대구'
&&
message
!=
'학교'
)
function
info
(
replyToken
,
message
){
if
(
check
==
false
)
{
return
}
if
(
message
==
'대구'
)
if
(
check
==
true
)
{
WEATHER_URL
=
WEATHER_URL_D
}
else
if
(
message
==
'학교'
){
WEATHER_URL
=
WEATHER_URL_S
var
s
=
message
.
split
(
' '
);
for
(
i
=
0
;
i
<
region
.
length
;
i
++
){
if
(
s
[
0
]
==
region
[
i
].
l1
&&
s
[
1
]
==
region
[
i
].
l2
&&
s
[
2
]
==
region
[
i
].
l3
)
{
var
rx
=
region
[
i
].
x
var
ry
=
region
[
i
].
y
WEATHER_URL
=
`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=1000&pageNo=1&base_date=
${
NOWDATE
}
&base_time=0230&nx=
${
rx
}
&ny=
${
ry
}
&dataType=JSON`
}
}
}
request
.
get
(
{
...
...
@@ -110,8 +110,6 @@ function rain (replyToken, message){
var
watermessage
=
" 너무 습합니다."
}
}
//for(var item of body.response.body.items.item) {
if
(
item
.
category
==
'TMX'
)
{
if
(
item
.
fcstValue
>=
28
){
var
clothesMessage
=
`날씨가 매우 덥습니다. 건강에 유의해주세요.
...
...
@@ -133,7 +131,7 @@ function rain (replyToken, message){
var
clothesMessage
=
`날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
}
}
//}
}
request
.
post
(
{
...
...
@@ -161,73 +159,38 @@ function rain (replyToken, message){
});
}
/*
function
clothes
(replyToken, message){
if(message != '
대구' && message != '학교
')
function
start
(
replyToken
,
message
){
if
(
message
!=
'
시작
'
)
{
check
=
false
return
}
if(message == '대구'){
WEATHER_URL = WEATHER_URL_D
}else if(message == '학교'){
WEATHER_URL = WEATHER_URL_S
if
(
message
==
'시작'
){
check
=
true
}
request.get(
{
url: WEATHER_URL,
json:true
},(error, response, body) => {
if(!error && response.statusCode == 200) {
console.log(body.message);
for(var item of body.response.body.items.item) {
if(item.category == 'TMX') {
if(item.fcstValue>=28){
var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
추천 옷: 민소매, 반팔, 반바지, 여름용 치마, 린넨 소재의 옷`
}else if(23<=item.fcstValue && item.fcstValue<=27){
var clothesMessage = `날이 덥습니다. 가벼운 옷차림을 추천합니다.
추천 옷: 반팔, 얇은 셔츠, 반바지, 면바지 `
}else if(20<=item.fcstValue && item.fcstValue<=22){
var clothesMessage = `초여름/ 늦여름 날씨입니다. 일교차에 주의해주세요. 추천 옷: 블라우스, 얇은 긴팔 티, 면바지, 슬랙스, 반팔과 가디건`
}else if(17<=item.fcstValue && item.fcstValue<=19){
var clothesMessage=`아직 조금은 쌀쌀합니다. 건강에 유의해주세요. 추천 옷: 얇은 가디건, 니트, 맨투맨, 후드, 긴 바지`
}else if(12<=item.fcstValue && item.fcstValue<=16){
var clothesMessage=`날이 쌀쌀합니다. 추천 옷: 자켓, 가디건, 청자켓, 니트, 청바지`
}else if(9<=item.fcstValue && item.fcstValue<=11){
var clothesMessage =`날이 아직 춥습니다. 따뜻한 옷이 좋습니다. 추천 옷: 트렌치코트, 야상, 점퍼, 기모바지`
}else if(5<=item.fcstValue && item.fcstValue<=8){
var clothesMessage =` 날이 춥습니다. 따뜻하게 입어주세요. 추천 옷: 두꺼운 코트, 히트텍, 가죽 옷, 기모 소재의 옷`
}else{
var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
}
}
}
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":replyToken,
"messages":[
{
"type":"text",
"text":clothesMessage
}
]
}
},(error, response, body) => {
console.log(body)
});
}
});
var
startMessage
=
'특별 혹은 광역시/도 시/구/군/ 읍/면/동으로 입력해주세요. 예)서울특별시 종로구 사직동, 강원도 화천군 화천읍, 충청남도 아산시 둔포면'
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
startMessage
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
*/
...
...
Experiments/messenger/trans/region.json
0 → 100644
View file @
cb3c138
This diff could not be displayed because it is too large.
Please
register
or
login
to post a comment