在上一篇教學中,我們為 LINE 機器人加入了
if-else 邏輯判斷,讓它能根據關鍵字回覆不同內容。但是,如果每次要新增或修改客服問答,都必須打開 Google Apps Script (GAS) 修改程式碼,不僅麻煩,對非技術背景的維護人員來說門檻也很高。今天,我們將實作一個更靈活的架構:讓機器人直接讀取 Google 試算表中的 QA 題庫來回覆使用者!
1. 為什麼要將題庫建立在試算表中?
將「程式邏輯」與「資料內容」分離,是系統開發的重要觀念。透過這個實作,未來你的團隊或小編只需要在 Google 試算表中新增一列「關鍵字」與「回覆內容」,機器人就會立刻學會新的問答,達到真正的動態維護與零程式碼更新。
2. 準備你的 QA 題庫試算表
- 打開我們之前建立的 Google 試算表,新增一個工作表,命名為 「QA題庫」。
- 在 A 欄 設定為「關鍵字」(例如:填寫
營業時間),在 B 欄 設定為「回覆內容」(例如:填寫平日 09:00 - 18:00)。 - 紀錄這份試算表的 ID,我們將在程式碼中呼叫它。
3. 修改 GAS 實作動態查詢邏輯
我們將改寫原本的 getBotResponse 函式。新的邏輯是:當收到訊息時,程式會先去掃描「QA題庫」工作表的 A 欄,如果使用者的訊息包含了 A 欄的某個關鍵字,就直接回傳該列 B 欄的內容。
✏️ 動態讀取題庫實作範例
function doPost(e) {
var channelToken = "你的_LINE_CHANNEL_ACCESS_TOKEN";
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;
var userMessage = msg.events[0].message.text;
// 呼叫動態查詢函式
var replyText = searchQAFromSheet(userMessage);
var url = "https://api.line.me/v2/bot/message/reply";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + channelToken
},
"payload": JSON.stringify({
"replyToken": replyToken,
"messages": [{
"type": "text",
"text": replyText
}]
})
};
UrlFetchApp.fetch(url, options);
}
// 從 Google 試算表搜尋對應回覆
function searchQAFromSheet(message) {
var sheetId = "你的_GOOGLE_SHEET_ID";
// 指定讀取名為「QA題庫」的工作表
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName("QA題庫");
// 取得所有資料 (二維陣列)
var data = sheet.getDataRange().getValues();
var msg = message.trim();
// 迴圈從第二列開始比對 (跳過標題列)
for (var i = 1; i < data.length; i++) {
var keyword = data[i][0].toString(); // A 欄:關鍵字
var answer = data[i][1].toString(); // B 欄:回覆內容
// 若關鍵字不為空,且使用者訊息包含該關鍵字
if (keyword !== "" && msg.includes(keyword)) {
return answer; // 找到答案,直接回傳
}
}
// 如果整個表格都找不到相符的關鍵字,則給予預設回覆
return "您好!目前系統查無相關資訊,請嘗試輸入其他關鍵字,或等待專人為您服務。";
}
4. 系統測試與擴充建議
重新部署 GAS 後,你可以嘗試在試算表中隨意新增幾組問答,然後立刻在 LINE 上測試,你會發現機器人瞬間就變聰明了!這種透過試算表作為內容管理系統 (CMS) 的輕量級架構,非常適合應用在系辦公室常見問題解答、商家客服或是課程助教系統中。

沒有留言:
張貼留言