Toggle navigation
Toggle navigation
This project
Loading...
Sign in
은승우
/
LINEBOT
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
은승우
2019-12-04 18:01:58 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
50bfde6de09d62cf9a491a15cde5c1911b20572d
50bfde6d
1 parent
d013f4fd
ocr
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
82 deletions
app.js
app.js
View file @
50bfde6
var
express
=
require
(
"express"
);
var
app
=
express
();
const
line
=
require
(
'@line/bot-sdk'
);
var
request
=
require
(
'request'
);
var
https
=
require
(
'https'
);
var
http
=
require
(
'http'
);
const
lex
=
require
(
'greenlock-express'
).
create
({
/*
var fs = require("fs");
var httpsOptions = {
key: fs.readFileSync('/etc/letsencrypt/live/oss.chatbot.bu.to/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/oss.chatbot.bu.to/cert.pem')
};
http.createServer(app).listen(80);
https.createServer(httpsOptions, app).listen(443);
*/
/* if ssl expired
var greenlock= require('greenlock-express');
const lex = greenlock .create({
version: 'draft-11', // 버전2
store: require('greenlock-store-fs'),
configDir: '/etc/letsencrypt', // 또는 ~/letsencrypt/etc
...
...
@@ -21,15 +34,11 @@ const lex = require('greenlock-express').create({
},
renewWithin: 81 * 24 * 60 * 60 * 1000,
renewBy: 80 * 24 * 60 * 60 * 1000,
});
//papago api
});*/
//papago api
https
.
createServer
(
lex
.
httpsOptions
,
lex
.
middleware
(
app
)).
listen
((
process
.
env
.
SSL_PORT
||
443
),()
=>
{
console
.
log
(
"server on 443"
);
});
http
.
createServer
(
lex
.
middleware
(
require
(
'redirect-https'
)())).
listen
(
process
.
env
.
PORT
||
80
,()
=>
{
console
.
log
(
"server on 80"
);
});
//번역 api_url
var
translate_api_url
=
'https://openapi.naver.com/v1/papago/n2mt'
;
...
...
@@ -53,22 +62,31 @@ const client = new line.Client(config);
// register a webhook handler with middleware
// about the middleware, please refer to doc
const
vision
=
require
(
'@google-cloud/vision'
);
// Creates a client
const
visionclient
=
new
vision
.
ImageAnnotatorClient
();
var
vision
=
require
(
'google-vision-api-client'
);
var
requtil
=
vision
.
requtil
;
//Prepare your service account from trust preview certificated project
var
jsonfile
=
'/home/ubuntu/a/LINEBOT/googlevisionapikey'
;
/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const fileName = 'Local image file, e.g. /path/to/image.png';
//Initialize the api
// Performs text detection on the local file
const
[
result
]
=
await
visionclient
.
textDetection
(
'/home/ubuntu/a/LINEBOT/photo/Fancy-TWICE.jpg'
);
const
detections
=
result
.
textAnnotations
;
console
.
log
(
'Text:'
);
detections
.
forEach
(
text
=>
console
.
log
(
text
));
vision
.
init
(
jsonfile
);
//Build the request payloads
var
d
=
requtil
.
createRequests
().
addRequest
(
requtil
.
createRequest
(
'/home/ubuntu/a/LINEBOT/photo/Fancy=TWICE.jpg'
)
.
withFeature
(
'Optical Character Recognition'
,
3
)
.
build
());
//Do query to the api server
vision
.
query
(
d
,
function
(
e
,
r
,
d
){
if
(
e
)
console
.
log
(
'ERROR:'
,
e
);
...
...
@@ -77,6 +95,9 @@ if(e) console.log('ERROR:', e);
app
.
post
(
'/webhook'
,
line
.
middleware
(
config
),
(
req
,
res
)
=>
{
Promise
.
all
(
req
.
body
.
events
.
map
(
handleEvent
))
...
...
@@ -87,72 +108,82 @@ app.post('/webhook', line.middleware(config), (req, res) => {
// event handler
function
handleEvent
(
event
)
{
console
.
log
(
event
.
message
);
if
(
event
.
type
!==
'message'
||
event
.
message
.
type
!==
'text'
)
{
// ignore non-text-message event
if
(
event
.
type
!==
'message'
&&
(
event
.
message
.
type
!==
'text'
||
event
.
message
.
type
!==
'image'
))
{
// ignore non-message event
return
Promise
.
resolve
(
null
);
}
return
new
Promise
(
function
(
resolve
,
reject
)
{
//언어 감지 option
var
detect_options
=
{
url
:
languagedetect_api_url
,
form
:
{
'query'
:
event
.
message
.
text
},
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
//papago 언어 감지
request
.
post
(
detect_options
,
(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
){
var
detect_body
=
JSON
.
parse
(
response
.
body
);
var
source
=
''
;
var
target
=
''
;
var
result
=
{
type
:
'text'
,
text
:
''
};
//언어 감지가 제대로 됐는지 확인
console
.
log
(
detect_body
.
langCode
);
//번역은 한국어->영어 / 영어->한국어만 지원
if
(
detect_body
.
langCode
==
'ko'
||
detect_body
.
langCode
==
'en'
){
source
=
detect_body
.
langCode
==
'ko'
?
'ko'
:
'en'
;
target
=
source
==
'ko'
?
'en'
:
'ko'
;
//papago 번역 option
var
options
=
{
url
:
translate_api_url
,
// 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
form
:
{
'source'
:
source
,
'target'
:
target
,
'text'
:
event
.
message
.
text
},
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
// Naver Post API
console
.
log
(
"?!"
);
request
.
post
(
options
,
function
(
error
,
response
,
body
){
// Translate API Sucess
if
(
!
error
&&
response
.
statusCode
==
200
){
// JSON
var
objBody
=
JSON
.
parse
(
response
.
body
);
// Message 잘 찍히는지 확인
result
.
text
=
objBody
.
message
.
result
.
translatedText
;
console
.
log
(
"result: "
+
result
.
text
);
//번역된 문장 보내기
client
.
replyMessage
(
event
.
replyToken
,
result
).
then
(
resolve
).
catch
(
reject
);
}
});
console
.
log
(
"?!"
)
else
if
(
event
.
type
==
'message'
&&
event
.
message
.
type
==
'image'
)
{
}
else
if
(
event
.
type
==
'message'
&&
event
.
message
.
type
==
'text'
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
//언어 감지 option
var
detect_options
=
{
url
:
languagedetect_api_url
,
form
:
{
'query'
:
event
.
message
.
text
},
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
//papago 언어 감지
request
.
post
(
detect_options
,
(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
){
var
detect_body
=
JSON
.
parse
(
response
.
body
);
var
source
=
''
;
var
target
=
''
;
var
result
=
{
type
:
'text'
,
text
:
''
};
//언어 감지가 제대로 됐는지 확인
console
.
log
(
detect_body
.
langCode
);
//번역은 한국어->영어 / 영어->한국어만 지원
if
(
detect_body
.
langCode
==
'ko'
||
detect_body
.
langCode
==
'en'
){
source
=
detect_body
.
langCode
==
'ko'
?
'ko'
:
'en'
;
target
=
source
==
'ko'
?
'en'
:
'ko'
;
//papago 번역 option
var
options
=
{
url
:
translate_api_url
,
// 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
form
:
{
'source'
:
source
,
'target'
:
target
,
'text'
:
event
.
message
.
text
},
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
// Naver Post API
console
.
log
(
"?!"
);
request
.
post
(
options
,
function
(
error
,
response
,
body
){
// Translate API Sucess
if
(
!
error
&&
response
.
statusCode
==
200
){
// JSON
var
objBody
=
JSON
.
parse
(
response
.
body
);
// Message 잘 찍히는지 확인
result
.
text
=
objBody
.
message
.
result
.
translatedText
;
console
.
log
(
"result: "
+
result
.
text
);
//번역된 문장 보내기
client
.
replyMessage
(
event
.
replyToken
,
result
).
then
(
resolve
).
catch
(
reject
);
}
});
console
.
log
(
"?!"
)
}
// 메시지의 언어가 영어 또는 한국어가 아닐 경우
else
{
result
.
text
=
'언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'
;
client
.
replyMessage
(
event
.
replyToken
,
result
).
then
(
resolve
).
catch
(
reject
);
}
}
// 메시지의 언어가 영어 또는 한국어가 아닐 경우
else
{
result
.
text
=
'언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'
;
client
.
replyMessage
(
event
.
replyToken
,
result
).
then
(
resolve
).
catch
(
reject
);
console
.
log
(
"status code is not 200"
);
}
}
else
{
console
.
log
(
"status code is not 200"
);
}
});
});
});
});
}
}
...
...
Please
register
or
login
to post a comment