ด้วยผู้ใช้กว่า 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 #########################*/