Toggle navigation
Toggle navigation
This project
Loading...
Sign in
최현준
/
도와줘요 채팅맨
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
최현준
2020-06-13 18:05:47 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
0e6243164aa44cb0de19f1ea058195b0a1597b9d
0e624316
1 parent
cf375942
동기식 처리 추가 및 함수 정리
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
153 additions
and
153 deletions
app.js
app.js
View file @
0e62431
...
...
@@ -6,205 +6,205 @@ const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
const
PAPAGO_D_URL
=
'https://openapi.naver.com/v1/papago/detectLangs'
const
PAPAGO_ID
=
'tA41WEd_nbzy0nZcUQks'
const
PAPAGO_SECRET
=
'6DHwov9gg2'
// const fs = require('fs');
// const path = require('path');
// const HTTPS = require('https');
// const domain = "www.theia17.tk"
// const sslport = 23023;
const
bodyParser
=
require
(
'body-parser'
);
//const mymodule = require('./modules/modules.js');
var
app
=
express
();
var
ln
=
'en'
;
//default value en
var
tempc
=
'ko'
;
var
lnDetec
=
new
Array
();
var
userinfo
=
new
Array
();
lnDetec
[
0
]
=
var
async
=
require
(
'async'
);
const
{
resolve
}
=
require
(
'path'
);
var
Language_Detect_Array
=
new
Array
();
var
User_Info_Array
=
new
Array
();
Language_Detect_Array
[
0
]
=
{
"
InLn
"
:
'영어'
,
"Pa
Ln
"
:
'en'
"
Message
"
:
'영어'
,
"Pa
pagoLanguage
"
:
'en'
}
lnDetec
[
1
]
=
Language_Detect_Array
[
1
]
=
{
"
InLn
"
:
'일본어'
,
"Pa
Ln
"
:
'ja'
"
Message
"
:
'일본어'
,
"Pa
pagoLanguage
"
:
'ja'
}
lnDetec
[
2
]
=
Language_Detect_Array
[
2
]
=
{
"
InLn
"
:
'프랑스어'
,
"Pa
Ln
"
:
'fr'
"
Message
"
:
'프랑스어'
,
"Pa
pagoLanguage
"
:
'fr'
}
userinfo
[
0
]
=
Language_Detect_Array
[
3
]
=
{
userId
:
'userId'
,
userInLn
:
'userInLn'
,
userPaLn
:
'userPaLn'
"Message"
:
'한국어'
,
"PapagoLanguage"
:
'ko'
}
userinfo
[
1
]
=
User_Info_Array
[
0
]
=
{
userId
:
'userId'
,
userInLn
:
'userInLn'
,
userPaLn
:
'userPaLn'
UserId
:
null
,
UserPapagoLanguage
:
''
}
app
.
use
(
bodyParser
.
json
());
app
.
post
(
'/hook'
,
function
(
req
,
res
)
{
var
eventObj
=
req
.
body
.
events
[
0
];
var
source
=
eventObj
.
source
;
var
message
=
eventObj
.
message
;
var
InputMessage
=
message
.
text
;
// input message
var
LnCh
=
1
;
// Language change attempt => value 0;
var
user_id
=
eventObj
.
source
.
userId
;
var
NumberLock
=
0
;
var
message
=
eventObj
.
message
.
text
;
var
replyToken
=
eventObj
.
replyToken
;
var
userid
=
eventObj
.
source
.
userId
;
// request log
// console.log('======================', new Date() ,'======================');
// console.log('[request]', req.body);
// console.log('[request source] ', eventObj.source);
console
.
log
(
'userId: '
,
eventObj
.
source
.
userId
);
// console.log('[request message]', eventObj.message);
// console.log('my meesage: ', message.text);
// console.log('my ip check: ', req.ip);
NumberLock
=
search_user_info
(
user_id
);
console
.
log
(
'NumberLock 값은?'
,
NumberLock
);
LnCh
=
detect_language_change
(
InputMessage
,
NumberLock
);
if
(
LnCh
)
{
detector
(
message
.
text
,
NumberLock
);
trans
(
eventObj
.
replyToken
,
eventObj
.
message
.
text
,
NumberLock
);
}
AsyncFunction
(
message
,
replyToken
,
userid
);
res
.
sendStatus
(
200
);
});
async
function
AsyncFunction
(
message
,
replyToken
,
userid
)
{
var
User_Location
=
search_user_info
(
userid
);
var
DetectLanguage
=
await
detector
(
message
);
if
(
DetectLanguage
!=
'ko'
)
var
TransToKoreanMessage
=
await
trans
(
DetectLanguage
,
message
,
'ko'
);
else
var
TransToKoreanMessage
=
message
;
var
DetectLanguageChange
=
Detect_Papago_Language_Change
(
TransToKoreanMessage
,
User_Location
);
if
(
DetectLanguage
!=
User_Info_Array
[
User_Location
].
UserPapagoLanguage
)
var
TransToUserSettingMessage
=
await
trans
(
DetectLanguage
,
message
,
User_Info_Array
[
User_Location
].
UserPapagoLanguage
);
var
Messaging
=
await
messaging
(
TransToUserSettingMessage
,
replyToken
,
DetectLanguageChange
);
console
.
log
(
"log-Message: "
,
Messaging
);
}
// 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);
// }
function
detect_language_change
(
InputMessage
,
NumberLock
)
function
detector
(
message
)
//언어 감지
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
request
.
post
(
{
url
:
PAPAGO_D_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
:
'query='
+
message
,
json
:
true
},(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
var
DetectLanguage
=
body
.
langCode
;
resolve
(
DetectLanguage
);
}
else
{
reject
(
new
Error
(
'Request is failed'
));
}
}
)
})
}
function
messaging
(
message
,
replyToken
,
DetectLanguageChange
)
//메시지 보내기
{
for
(
var
i
in
lnDetec
)
// Detect Language change
return
new
Promise
(
function
(
resolve
,
reject
)
{
if
(
InputMessage
==
lnDetec
[
i
].
InLn
)
{
userinfo
[
NumberLock
].
userPaLn
=
lnDetec
[
i
].
PaLn
;
return
0
;
}
else
if
(
i
==
lnDetec
.
length
-
1
)
{
return
1
;
}
}
if
(
DetectLanguageChange
)
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
message
}
]
}
},
(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
resolve
(
'정상적으로 전송 되었습니다.'
);
}
);
})
}
function
trans
(
DetectLanguage
,
message
,
TransLanguage
)
//언어 번역
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
request
.
post
(
{
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='
+
DetectLanguage
+
'&target='
+
TransLanguage
+
'&text='
+
message
,
json
:
true
},(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
var
transMessage
=
body
.
message
.
result
.
translatedText
;
console
.
log
(
'transMessage: '
,
transMessage
);
resolve
(
transMessage
);
}
}
);
})
}
function
search_user_info
(
user_id
)
function
search_user_info
(
userid
)
//유저 생성 또는 위치 찾기
{
for
(
var
i
in
userinfo
)
for
(
var
i
in
User_Info_Array
)
{
if
(
userinfo
[
i
].
userId
==
user_
id
)
if
(
User_Info_Array
[
i
].
UserId
==
user
id
)
{
console
.
log
(
'동일한 id 존재.'
);
//기존 유저
return
i
;
break
;
}
else
if
(
i
==
userinfo
.
length
-
1
)
else
if
(
i
==
User_Info_Array
.
length
-
1
)
{
console
.
log
(
'동일한 것이 존재하지 않습니다. 새로운 개체를 생성합니다.'
);
userinfo
[
userinfo
.
length
]
=
//새로운 유저
User_Info_Array
[
User_Info_Array
.
length
]
=
{
userId
:
user_id
,
userInLn
:
'en'
,
userPaLn
:
'en'
//default value
UserId
:
userid
,
UserPapagoLanguage
:
'en'
}
return
userinfo
.
length
-
1
;
return
User_Info_Array
.
length
-
1
;
}
}
}
function
detector
(
message
,
NumberLock
)
function
Detect_Papago_Language_Change
(
TransToKoreanMessage
,
User_Location
)
//번역 언어 변경 감지
{
request
.
post
(
console
.
log
(
'user의 정보는'
,
User_Info_Array
[
User_Location
]);
for
(
var
i
in
Language_Detect_Array
)
// Detect Language change
{
if
(
TransToKoreanMessage
==
Language_Detect_Array
[
i
].
Message
)
{
url
:
PAPAGO_D_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
:
'query='
+
message
,
json
:
true
},(
error
,
response
,
body
)
=>
//언어 변경 감지o
User_Info_Array
[
User_Location
].
UserPapagoLanguage
=
Language_Detect_Array
[
i
].
PapagoLanguage
;
return
0
;
break
;
}
else
if
(
i
==
Language_Detect_Array
.
length
-
1
)
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
console
.
log
(
'[넘어온 메시지]'
,
message
);
console
.
log
(
'[객체 정보 확인]'
,
body
);
console
.
log
(
'[user 객체 정보 확인]'
,
userinfo
[
NumberLock
]);
//tempc = body.langCode;
//userinfo에 user입력 language언어 감지 및 저장
userinfo
[
NumberLock
].
userInLn
=
body
.
langCode
;
}
//언어 변경 감지x
return
1
;
}
)
}
}
function
trans
(
replyToken
,
message
,
NumberLock
)
{
request
.
post
(
{
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=ko&target='+ln+'&text=' + message,
body
:
'source='
+
userinfo
[
NumberLock
].
userInLn
+
'&target='
+
userinfo
[
NumberLock
].
userPaLn
+
'&text='
+
message
,
json
:
true
},(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
console
.
log
(
'[객체 정보 확인 in trans]'
,
body
.
message
);
var
transMessage
=
body
.
message
.
result
.
translatedText
;
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
transMessage
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
});
}
app
.
listen
(
3000
,
function
()
{
console
.
log
(
'Linebot listening on port 3000!'
);
});
\ No newline at end of file
...
...
Please
register
or
login
to post a comment