創作內容

4 GP

【line.gs BOT 製作筆記一】寫 LINE BOT 最簡潔的方法 Google App Script

作者:游隼│2022-03-25 23:09:32│巴幣:8│人氣:1581
# 什麼是 Google Apps Script

Google 推出的 FaaS (函式即服務)
無伺服器 (Serverless) : 不用複雜的架設一個完整的伺服器
基於 JavaScript : 閹割版的 JS, 會 JS 基本上就會 GS
Domain 附贈 SSL


# 增加 Google Apps Script 的 SDK 為依賴項

Google App Script 不支援 LINE 官方的 Node.JS Messaging API SDK (下略稱為「官方 SDK」)

不過 GitHub 上有由 kobanyan 大神基於官方 SDK 編譯的 Google App Script Messaging API SDK (下略稱為「line.gs」) 可供安裝

安裝步驟也很簡單 在側邊欄的【資料庫】點+新增資料庫
指令碼 ID 填入 1EvYoqrPLkKgsV8FDgSjnHjW1jLp3asOSfDGEtLFO86pPSIm9PbuCQU7b
即可完成 line.gs 的安裝


# 撰寫 LINE BOT 程式碼

Google App Script 作為 FaaS 需要由事件來驅動服務

當有人 GET 這個服務時會執行 doGet() 函式
當有人 POST 這個服務時會執行 doPost() 函式
Messaging API 用 POST 方法來請求 BOT 的 所以程式碼必須寫在 doPost() 裡面

※doGet(), doPost() 是 Google App Script Web Apps 固定的寫法

附上 echo 範例程式碼
Code.gs
const client = new LineBotSDK.Client({
  channelAccessToken: '您的_LINE_BOT_TOKEN'
});

function doPost(e) {
  let event = JSON.parse(e.postData.contents).events[0];
  
  let echo = {
    type: 'text',
    text: event.message.text
  };
  
  client.replyMessage(event.replyToken, echo);
}
與官方 SDK 不同的是 client.replyMessage 不是傳回一個 Promise 物件
而是直接呼叫 UrlFetchApp.fetch 方法傳送請求到 LINE 伺服器
所以不須再 return


# 部署 LINE BOT

當完成程式碼之後就能部署到網路上了

點擊編輯器右上角的【部署>新增部署作業】

【類型】選擇網頁應用程式
【誰可以存取】選擇所有人

最後將產生出來的網址貼到 Messaging API settings 網頁裡的 Webhook URL 儲存

LINE BOT 就能運作了


# 後記

其實網路上關於用 Google App Script 實作 LINE BOT 的教學蠻多的

不過大多是用 UrlFetchApp.fetch 直接發出請求

我看了一下想說沒人寫 SDK 嗎?我不相信

上 GitHub 搜一下就看到 kobanyan 的存儲庫

然後折騰了一天才弄出來

一開始是指令碼 ID 一直查詢不到

後來切成舊版編輯器再輸入就行了

因為舊版編輯器的 API ID 和新版編輯器的指令碼 ID 不一樣

而 kobanyan 給的是舊版編輯器的 API ID

然後是 README.md 給的範例程式有錯字

這邊卡超久 = =

看 Log 也看不出個甚麼所以然

完成後趕快寫筆記記起來......
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5418482
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

瞇眼喵太郎
偶...
偶的頭 ....

03-26 09:00

Ctrl+Shift+W
大佬

04-06 13:04

我要留言提醒:您尚未登入,請先登入再留言

4喜歡★ding890326 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:將 LINE 聊天機器人... 後一篇:【刷機】OPPO A57...

追蹤私訊切換新版閱覽

作品資料夾

robert286 ლ(´•д• ̀ლ
ლ(´•д• ̀ლ看更多我要大聲說17小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】