GAS 開發 LineBot 自動接單系統
一、資訊
- 取得 Line Bot 資料,其送來的JSON字串,故需用 「JSON.parse()」還原為 物件 // 傳入資訊 const botData = e.postData.contents ? JSON.parse(e.postData.contents) : {};
-
event(事件)的形式,包括
// 事件類型 const botType = botData.events[0].type;
type: message(使用者傳送訊息給聊天機器人), follow(使用者將聊天機器人家為好友), unfollow(使用者封鎖聊天機器人), join(使用者將聊天機器人加入群組), leave(聊天機器人離開群組), postback(當使用者表現postback的動作), beacon(當使用者進入或離開Line beacon的範圍)
根據 type做一個流程控制
switch (botType) { case 'message': //用戶傳送訊息給聊天機器人 lineMessage(botData); break; case 'follow': //用戶將聊天機器人加為好友 // follow(botData); break; case 'unfollow': //用戶封鎖聊天機器人 // unfollow(botData); break; case 'join': //用戶將聊天機器人加入群組 // join(botData); break; case 'leave': //聊天機器人離開群組 // leave(botData); break; case 'postback': //當用戶表現postback的動作 break; case 'beacon': //當用戶進入或離開Line beacon的範圍 break; default: }
-
token:一段時間,token即會失效
const replyToken = botData.events[0].replyToken; -
訊息的來源,可能是一個user(使用者)、group(群組)或room(聊天室)
source: 若訊息的來源為user,則source中包含兩個屬性type(訊息來源的形式)及userId(傳送此訊息的使用者id) 若訊息的來源為group,則source中包含兩個屬性type(訊息來源的形式)及groupId(傳送此訊息的群組id), 若使用者有同意Official Accounts Terms of Use會多一個屬性userId(傳送此訊息的使用者id) 若訊息的來源為room,則source中包含兩個屬性type(訊息來源的形式)及roomId(傳送此訊息的聊天室id), 若使用者有同意Official Accounts Terms of Use會多一個屬性userId(傳送此訊息的使用者id)
const source = botData.events[0].source; -
用戶聊天訊息型態
const botMessageType = botData.events[0].message.type;// "text" => 文字訊息 -
用戶聊天訊息內容
const botMessageText = botData.events[0].message.text; -