최한솔

add webhookurl

1 -var express = require('express'); 1 +const express = require('express');
2 -var app = express();
3 const line = require('@line/bot-sdk'); 2 const line = require('@line/bot-sdk');
4 3
5 -
6 -//papago api
7 -var request = require('request');
8 -
9 -//번역 api_url
10 -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt';
11 -
12 -//언어감지 api_url
13 -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs'
14 -
15 -// Naver Auth Key
16 -//새로 발급받은 naver papago api id, pw 입력
17 -var client_id = 'xZMx34y7uru1v8lywZ2d';
18 -var client_secret = 'p6L7M7WsH9';
19 -
20 const config = { 4 const config = {
21 channelAccessToken: 'L+RJ15lZgeSoWgeHf9BqgEhm8lYh11qALzPlDV85VGXHfmiKqj3CX1V9DvqakFeJqwWgfQRejsUIWqf/kJuTLQcRC5ws2pyJJbr0VFEXptoYicgiRDzuA51W91dTcFL6/olvLNS1zAf1xO2wxpTGvQdB04t89/1O/w1cDnyilFU=', 5 channelAccessToken: 'L+RJ15lZgeSoWgeHf9BqgEhm8lYh11qALzPlDV85VGXHfmiKqj3CX1V9DvqakFeJqwWgfQRejsUIWqf/kJuTLQcRC5ws2pyJJbr0VFEXptoYicgiRDzuA51W91dTcFL6/olvLNS1zAf1xO2wxpTGvQdB04t89/1O/w1cDnyilFU=',
22 channelSecret: 'e8e139b4cf31d22ed234d62a9b336e74', 6 channelSecret: 'e8e139b4cf31d22ed234d62a9b336e74',
23 }; 7 };
24 8
25 - 9 +const app = express();
26 -// create LINE SDK client 10 +app.post('https://bots.dialogflow.com/line/d1584d25-0e52-48da-b6cc-20e021dc5e70/webhook', line.middleware(config), (req,res)=>{
27 -const client = new line.Client(config); 11 + promise
28 -
29 -// create Express app
30 -// about Express itself: https://expressjs.com/
31 -
32 -// register a webhook handler with middleware
33 -// about the middleware, please refer to doc
34 -app.post('/webhook', line.middleware(config), (req, res) => {
35 - Promise
36 .all(req.body.events.map(handleEvent)) 12 .all(req.body.events.map(handleEvent))
37 - .then((result) => res.json(result)) 13 + .then((result)=>res.json(result));
38 - .catch((err) => {
39 - console.error(err);
40 - res.status(200).end();
41 - });
42 }); 14 });
43 15
44 -// event handler 16 +const clinet = new line.Client(config);
45 -function handleEvent(event) { 17 +function handleEvent(event){
46 - if (event.type !== 'message' || event.message.type !== 'text') { 18 + if(event.type !== 'message' || event.message.type != 'text'){
47 - // ignore non-text-message event
48 return Promise.resolve(null); 19 return Promise.resolve(null);
49 } 20 }
50 - return new Promise(function(resolve, reject) {
51 - //언어 감지 option
52 - var detect_options = {
53 - url : languagedetect_api_url,
54 - form : {'query': event.message.text},
55 - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
56 - };
57 -
58 - //papago 언어 감지
59 - request.post(detect_options,function(error,response,body){
60 - console.log(response.statusCode);
61 - if(!error && response.statusCode == 200){
62 - var detect_body = JSON.parse(response.body);
63 - var source = '';
64 - var target = '';
65 - var result = { type: 'text', text:''};
66 21
67 - //언어 감지가 제대로 됐는지 확인 22 + return client.replyMessage(event.replyToken,{
68 - console.log(detect_body.langCode); 23 + type:'text',
69 - 24 + text: event.message.text
70 - 25 + });
71 - //번역은 한국어->영어 / 영어->한국어만 지원 26 +}
72 - if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){
73 - source = detect_body.langCode == 'ko' ? 'ko':'en';
74 - target = source == 'ko' ? 'en':'ko';
75 - //papago 번역 option
76 - var options = {
77 - url: translate_api_url,
78 - // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
79 - form: {'source':source, 'target':target, 'text':event.message.text},
80 - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
81 - };
82 -
83 - // Naver Post API
84 - request.post(options, function(error, response, body){
85 - // Translate API Sucess
86 - if(!error && response.statusCode == 200){
87 - // JSON
88 - var objBody = JSON.parse(response.body);
89 - // Message 잘 찍히는지 확인
90 -
91 - result.text = objBody.message.result.translatedText;
92 - console.log(result.text);
93 - //번역된 문장 보내기
94 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
95 - }
96 - });
97 - }
98 - // 메시지의 언어가 영어 또는 한국어가 아닐 경우
99 - else{
100 - result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.';
101 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
102 - }
103 -
104 - }
105 -
106 - });
107 -
108 - });
109 - }
110 27
111 app.listen(3000, function () { 28 app.listen(3000, function () {
112 console.log('Linebot listening on port 3000!'); 29 console.log('Linebot listening on port 3000!');
......
File mode changed