สร้าง Line chat bot ด้วย Google Script

ด้วยผู้ใช้กว่า 53 ล้านคนบน Platform Line การสร้างระบบที่ทำงานผ่านLine ก็น่าจะตอบโจทย์การใช้งานในหลายๆด้าน ไม่ว่าจะทำระบบจองห้องประชุม ระบบซื้อสินค้า ซึ่งมีเครื่องมือให้เราเลือกใช้ได้อย่างครบถ้วน วันนี้เราจะมาเริ่มกันด้วย Project ง่ายๆกันอย่าง การสร้าง Line Chat Bot โดยใช้ฐานข้อมูลฟรี (Google scriptของเรานี่ล่ะ) ไปลุยกันเล้ยยย

main.gs

// Presented by BrilliantPy v.1.0.1
/*######################### Editable1 Start #########################*/
let sheetName = "ชีต1"
let ss_id = "1SL2gdvOR6Pq0Aq5YQCUd8g9qaKrBRiLlIAntPy-0ymPGg";
/*#########################  Editable1 End  #########################*/
// Init
let ss,sheet,lastRow,lastCol,range,values;
Logger = BetterLog.useSpreadsheet(ss_id);

function doPost(e) {
  initSpreadSheet();
  try{
    let req_content = e.postData.contents;
    Logger.log("req_content:"+req_content);

    let event_0 = JSON.parse(req_content).events[0];
    let user_msg = event_0.message.text;
    Logger.log("user_msg:"+user_msg);

    let token = event_0.replyToken;
    let replyText = "";

    for(let i=0;i<values.length;i++){
      let key = values[i][0];
      let value = values[i][1];
      if(key == user_msg){
        replyText = value;
        break;
      }
    }

    if(event_0.message.type === "text"){
      if(replyText){
        replyMessage(token, replyText);
      }
    }
  }catch(e){
    Logger.log("doPost error:"+e);
  }
}

function initSpreadSheet() {
  ss = SpreadsheetApp.getActive();
  sheet = ss.getSheetByName(sheetName);
  lastRow = sheet.getLastRow();
  lastCol = sheet.getLastColumn();
  range = sheet.getDataRange();
  values = range.getValues();
  Logger.log('initSpreadSheet completed');
}

async function replyMessage(token,replyText) {
  let url = "https://api.line.me/v2/bot/message/reply";
  let lineHeader = {
    "Content-Type": "application/json",
    "Authorization": "Bearer "+CHANNEL_ACCESS_TOKEN
  };

  let postData = {
    "replyToken" : token,
    "messages" : [{
      "type" : "text",
      "text" : replyText
    }]
  };
  // let postData = {
  //   "replyToken" : token,
  //   "messages" : [flex_obj]
  // };

  let options = {
    "method" : "POST",
    "headers" : lineHeader,
    "payload" : JSON.stringify(postData)
  };

  try {
    let response = await UrlFetchApp.fetch(url, options);
    Logger.log("response:"+response);
  }
  
  catch (error) {
    Logger.log(error.name + ":" + error.message);
    return;
  }
    
  if (response.getResponseCode() === 200) {
    Logger.log("Sending message completed.");
  }
}



config.gs

// Presented by BrilliantPy v.1.0.1
/*######################### Editable1 Start #########################*/
let CHANNEL_ACCESS_TOKEN = 'Bri5ll26/antP9ri5ll07/pyb9ri5ll26/antP9ri5ll07/py+3591Bri9ll26/antP9ri5ll07/pyb9ri5ll2y+3Bri9ll26/antP9ri5ll07/pyf58Bri9ll26/antP9ri5ll06/antP9ri5ll07/py/1B/1cB9ri5ll07/py='
/*#########################  Editable1 End  #########################*/

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *