在先前的教學中,我們成功讓 LINE 客服機器人學會了「回覆訊息」與「將對話自動記錄到 Google 試算表」。然而,一個實用的客服系統,必須要能針對客戶的具體問題提供解答。今天,我們就要為機器人加上「大腦」,透過條件邏輯判斷 (Conditional Logic),讓它能根據使用者的特定關鍵字(例如:營業時間、運費、地址)自動給出不同的回覆!
1. 關鍵字回覆的運作原理
當使用者在 LINE 發送訊息後,我們的 Google Apps Script (GAS) 後端會收到這串文字。接下來,我們會透過程式碼中的 if-else 分支或 switch 陳述式,檢查這串文字中是否包含特定的「關鍵字」:
- 比對成功: 如果訊息包含「營業時間」,就回覆「我們的營業時間是...」。
- 模糊比對: 除了精準比對,我們也可以利用 JavaScript 的
indexOf()或includes()方法,只要使用者的話裡含有關鍵字(例如:「請問運費怎麼算」含有「運費」),就能觸發相對應的回覆。 - 未知問題(預設回覆): 如果比對不到任何關鍵字,則轉為親切的預設回覆,引導使用者或通知人工客服。
2. 在 GAS 中加入邏輯判斷
我們直接在 doPost(e) 函式中,加入 switch-case 或 if-else 判斷邏輯。為了讓程式架構更清晰,我們可以將「決定回覆內容」的邏輯獨立拆出一個 function。
✏️ 關鍵字判斷與自動回覆實作範例
將你原本的 GAS 程式碼更新為以下版本:
function doPost(e) {
// 1. 基本設定
var channelToken = "你的_LINE_CHANNEL_ACCESS_TOKEN";
var sheetId = "你的_GOOGLE_SHEET_ID";
// 2. 解析 LINE 傳來的訊息
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;
var userId = msg.events[0].source.userId;
var userMessage = msg.events[0].message.text;
// 取得現在時間並格式化
var currentTime = Utilities.formatDate(new Date(), "Asia/Taipei", "yyyy-MM-dd HH:mm:ss");
// 3. 將對話紀錄寫入 Google 試算表
var sheet = SpreadsheetApp.openById(sheetId).getSheets()[0];
sheet.appendRow([currentTime, userId, userMessage]);
// 4. 關鍵字邏輯判斷 (根據 userMessage 決定 replyText)
var replyText = getBotResponse(userMessage);
// 5. 回覆使用者
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);
}
// 根據關鍵字,決定回覆內容的邏輯
function getBotResponse(message) {
// 將文字轉為小寫或去除空白,增加比對成功率
var msg = message.trim();
if (msg.includes("營業時間") || msg.includes("幾點開")) {
return "⏰ 我們的營業時間為:\n週一至週五 09:00 - 18:00\n(例假日及國定假日休息)。";
}
else if (msg.includes("運費") || msg.includes("宅配") || msg.includes("免運")) {
return "📦 【運費說明】\n全館單筆消費滿 $1,500 即享免運優惠!\n未滿額之訂單,宅配運費為 $100,超商取貨為 $60。";
}
else if (msg.includes("地址") || msg.includes("在哪")) {
return "📍 我們的辦公室地址在:\n新北市新莊區新興街66巷7號2樓\n歡迎在營業時間內前來!";
}
else if (msg.includes("專人") || msg.includes("客服") || msg.includes("電話")) {
return "☎️ 需要專人協助嗎?\n您可以直接撥打我們的服務專線:02-89927153\n或在此留下您的聯絡電話,我們將會盡快與您聯繫!";
}
else {
// 預設回覆
return "您好!已收到您的訊息:『" + message + "』。\n\n💡 常見問題請輸入:\n👉 營業時間\n👉 運費\n👉 地址\n👉 專人客服\n\n若有其他問題,請耐心等候,我們將盡快由專人為您回覆!";
}
}
4. 測試與微調
在完成程式部署 (Deploy) 並更新 Webhook 後,你可以打開手機 LINE,發送「你們幾點開門?」或「免運門檻是多少?」,測試機器人是否能正確辨識並回覆。當比對條件增加時,建議將 getBotResponse 的邏輯獨立維護,甚至可以從 Google 試算表中動態讀取關鍵字與對話庫,讓維護變得更加方便!

沒有留言:
張貼留言