postback.js 3.08 KB
var express = require('express');
var app = express();
const line = require('@line/bot-sdk');
const config = require('./config');

//papago api
var request = require('request');

//번역 api_url
var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt';

//언어감지 api_url
var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs';

//eng grammar check

var EnGrammarCheck_api_url = 'https://api.textgears.com/check.php';



// create LINE SDK client
const client = new line.Client(config.line_config);

// create Express app
// about Express itself: https://expressjs.com/

// register a webhook handler with middleware
// about the middleware, please refer to doc
app.post('/webhook', line.middleware(config.line_config), (req, res) => {
  Promise
    .all(req.body.events.map(handleEvent))
    .then((result) => res.json(result))
    .catch((err) => {
      console.error(err);      res.status(200).end();
    });
});

function handleEvent(event) {
  if (event.type !== 'message' || event.message.type !== 'text' ) {
    // ignore non-text-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: config.naver_header
    };
    //papago 언어 감지
    request.post(detect_options,function(error,response,body){
      console.log(response.statusCode);
      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);


app.post('/message',function(req,res){  var msg = req.body.content;
  console.log('전달받은 메시지: ' +msg);

  var sent ={};

  switch(msg)
  {
    case '번역':
    case '1':
    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: config.naver_header
      };
      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.text);
              //번역된 문장 보내기
              client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
          }
      });
}
     send={
       'message':{
         'text': result.text
       }
     }
    break;
    case '문법':
    case '문법체크':
    case '2':

    break;

  }




});

}
});