程式開發

用 Google App Script 和 LINE Notify 製作一個每日通知的機器人‧外傳

前幾天就有考慮把它拓展成訂閱式的,今天目標告一段落,就回來動工。 很快地建立另一個 App,包含 storeToken、getTokens、send 以及處理請求的 doGet。

本記在這:https://limaois.me/archives/55
 研究了一下 LINE-Notify,首先會要求提供 Callback URL,接著將使用者導引到

https://notify-bot.line.me/oauth/authorize
?response_type=code
&client_id=your_client_id
&redirecturi=yourcallback_url
&scope=notify
&state=a_hash

其中 your_redirect_url 要與 Callback URL 一致,your_client_id 則登錄後會取得,state 用於防止 CSRF(跨站偽造請求),不過想不太到要怎麼驗證,所以姑且略過之。
當使用者進到這個網址會出現選擇聊天室的介面,選擇後會再把使用者導引到

http(s)://your_redirect_url
?code=user’s_code
?state=a_hash

得到 user’s_code 後,再發送 POST 請求到

https://notify-bot.line.me/oauth/token

並附帶

grant_type=authorization_code
redirect_uri=your_callback_url
client_id=your_client_id
client_secret=your_client_secret
code=user’s_code 

便會回傳 access_token,然後依照上篇處理即可。

閱讀全文
程式開發

用 Google App Script 和 LINE Notify 製作一個每日通知的機器人

  最近 Packt 的每日免費書回來了,便想用 LINE Notify 做一個自動通知當日免費書的工具,而為了一個小工具去 Heroku 之類的開專案又似乎有點小題大作,另外是我的額度也不夠讓我這樣隨便花了,所以就把目標轉移到功能較為簡單的 Google App Script。

  首先分析這個機器人的預期行為:

  1. 每日上午八點的時候到 Packt Free Learning – Free Programming eBook 取得新書的名稱和消息。
  2. 將取得的資料透過 LINE Notify 傳送到手機。

由於規模不大,將在這篇文一次講完(可能會有點長)。Google App Script 的這部分,參考文件是這份。首先開啟 Google Drive,新增一個 Google Apps Script,如果你沒用過需要到商店連結應用程式。

(對我是複製貼上別篇文章的。)
因為這次只有一個 Function,就用他預設的名稱,接著取得網頁資料,並且取出書本標題和介紹。

第二行讀取網頁,第三行將 HTML 中 > 後、 < 前的空白移除以方便操作,然後第四行透過切離 title"><h2> 後到 </h2> 的文字取得標題,再取得標題後的第一個 <div> 內容作為介紹。如果想看看取的甚麼內容,可以加入 Logger.log(title) 和 Logger.log(info),就可以在檢視中的紀錄看到了。
取得完畢後,必須發送到 LINE Notify,參考的文件是這份。進入個人頁面並發行個人權杖,並將權杖紀錄。

接著回到 Google App Script,對 LINE Notify 的 API 發送請求,注意必須使用 POST,並加入名為 Authorization 的 Header,內容是 Bearer <Token>。

這樣就完成啦!你可以執行看看,應該會在 LINE 收到今日的書。接著設定每日上午八點發作,進入編輯中的現有專案的啟動程序。

如此一來他便應該要在早上八點到九點這個時間通知新的書,本篇到此結束。
外傳:https://limaois.me/archives/54

閱讀全文