/**============================================
Webhook(e)
=============================================*/
function Webhook(e) {
//---------------------------------- 記錄Line Bot 訊息
// e.postData.contents 收到的 JSON 字串 故將之轉為 JSON JSON.parse(e.postData.contents)
let formData = {
sn: '',
timestamp: '',
type: 'prog_line_bot / Webhook()',
code: JSON.parse(e.postData.contents)
}
insert_sheet_record(formData);
//---------------------------------- 記錄Line Bot 訊息 end
// 傳入資訊
const botData = e.postData.contents ? JSON.parse(e.postData.contents) : {};
// 事件類型
const botType = botData .events[0].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:
}
return;
}
/**========================================
用戶傳送訊息給聊天機器人
=========================================*/
function lineMessage(botData){
const botMessageType = botData.events[0].message.type;
// 判斷訊息是否為文字
if(botMessageType === 'text'){
// 用戶聊天訊息內容
const botMessageText = botData.events[0].message.text;
// 用戶訊息的來源
const source = botData.events[0].source;
// 用戶 token
const replyToken = botData.events[0].replyToken;
let messages = [{
'type': 'text',
'text': botMessageText
}]
lineReplyMessage(replyToken, messages)
}
}
/*============================================
Line Bot 回覆
============================================*/
function lineReplyMessage(replyToken, replyMessage){
//-----------------------------------回傳訊息給line 並傳送給使用者
let url = 'https://api.line.me/v2/bot/message/reply';
try {
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': replyMessage
}),
});
}catch(e){
//---------------------------------- 記錄Line Bot 回覆 錯誤訊息
let formData = {
sn: '',
timestamp: '',
type: 'Line Bot 回覆 錯誤訊息',
code: e
}
insert_sheet_record(formData);
//---------------------------------- 記錄Line Bot 回覆 錯誤訊息 end
}
//---------------------------------------回傳訊息給line 並傳送給使用者 end
}