## 前言 在隸屬於客戶成功底下的那年,我的主管請我試試看能不能用 Line 機器人協助客服推播訊息,一開始有想過用客服機器人推播,但考慮到客服推播訊息的量,怕產生不必要的費用,後來發現有 Line Notify 免費的推播功能,便以它為基底做個簡單的推播系統。 那時的客服在傳送更版訊息的時候,都是利用訊息轉傳的方式將 緊急Bug/更版/問卷資訊一一傳給客戶群組(雖然那時候群組數不像現在大爆炸),而且又有轉傳數量(15個單位)限制,要分好幾次才能完工。 ## 簡介 - Official doc : https://notify-bot.line.me/doc/en/ 官網標語:Connect LINE with Everying,透過LINE接收其他網站服務通知。與網站服務連動完成後,LINE所提供的官方帳號「LINE Notify」將會傳送通知。不僅可與多個服務連動,也可透過LINE群組接收通知。 以"免費"這點來說,個人覺得 Line Notify 相當實用,不管個人/商業用途都很好實作,比如: 1. 早餐店 line bot 2. 訂餐系統 3. 財經相關資訊 總而言之 ... 任何你想要的資訊都可以整理後再推播 ## 實作 * [直接使用 Line Notify 官網點一點](https://notify-bot.line.me/zh_TW/) > 想推播的群組 > 拿到 token > 幾行程式碼/postman/curl 1. [python](http://pythonorz.blogspot.com/2017/12/python-line-notify-line-notify-line.html) 2. [javascript(最下面發送訊息部分)](https://ithelp.ithome.com.tw/articles/10225767) * 寫一個簡單的 api callback server 實作 [OAuth2.0](https://medium.com/%E9%BA%A5%E5%85%8B%E7%9A%84%E5%8D%8A%E8%B7%AF%E5%87%BA%E5%AE%B6%E7%AD%86%E8%A8%98/%E7%AD%86%E8%A8%98-%E8%AA%8D%E8%AD%98-oauth-2-0-%E4%B8%80%E6%AC%A1%E4%BA%86%E8%A7%A3%E5%90%84%E8%A7%92%E8%89%B2-%E5%90%84%E9%A1%9E%E5%9E%8B%E6%B5%81%E7%A8%8B%E7%9A%84%E5%B7%AE%E7%95%B0-c42da83a6015) ### **Step 1.** 建立 Line Notify 服務 1. 登入官網 > 管理登入服務(右上角) > 登錄服務 2. 填寫相關資訊 <br> > 其中 Client ID/Client Secret/CallBack URL 後續實作都會用到 ![](https://hackmd.io/_uploads/BJ86DZLDh.png) ![](https://hackmd.io/_uploads/r1f3PW8Ph.png) ### **Step 2.** 大概介紹一下流程 ![](https://hackmd.io/_uploads/ByGFqWUDn.png) 1. 我利用客服小幫手讓客服人員方便去訂閱 ![](https://hackmd.io/_uploads/HkdnjZLwn.png) > GET https://notify-bot.line.me/oauth/authorize 2. 將 User 導流至登入頁面,登入後可選擇其擁有之群組 ![](https://hackmd.io/_uploads/ryGMs-8v3.png) > 取得 code (Authorization Grant) 3. 同意並連動之後會經由提供之 callBack Url 打回去 callBack Server,再收到之後接著 post /oauth/token 取得 token 並存入 db 已便後續客服人員推播時使用。此時我會將 groupName / access_token / solution <br> > POST https://notify-bot.line.me/oauth/token ### **Step 3.** 寫個簡單介面讓客服人員更順手 ![](https://hackmd.io/_uploads/Bk3BAb8P2.png) ### **Step 4.** Deploy * React(js) + Flask(python) > docker on GCP Cloud Run <br> > 好像需要重構,兩年前寫的跟屎一樣 Line Notify vs Line Chat Bot --- | 功能 | Line Notify | Line Chat Bot | |-------------------------|------------------------------|---------------------------------| | 推送對象 | 任何人/群組 | 任何人/群組 | | 訊息格式 | 簡單的文字、圖片、貼圖 <br>(圖片/文字各佔一個訊息,不支援 Flex Message) | 多樣化的文字、圖片、貼圖、音訊、影片、按鈕等 | | API存取權限 | 僅能透過API發送訊息,無法接收訊息 | 可透過API發送和接收訊息 | | 主動訊息推送限制 | 每個 access_token 每天最多1000次 | [有分輕/中/高用量方案(2023/09/01 更新方案](https://tw.linebiz.com/column/LINEOA-2023-Price-Plan/?utm_medium=referral&utm_source=CMS&utm_campaign=PPR&utm_term=20230301&utm_content=Model)) | | 使用者互動(回應)限制 | 無法進行回應或互動 | 可接收使用者訊息並進行回應 | | 使用者訂閱/解除訂閱機制 | 需要訂閱 Line Notify 才能收到訊息 & 邀請 Line Notify 官方機器人為好友/進群組 | 使用者不需要訂閱,直接與Chat Bot互動 | Line Notify 的限制 --- ![](https://hackmd.io/_uploads/ry3FPlvwn.png) ![](https://hackmd.io/_uploads/Bkr9wePDn.png) 上面的意思就是,假設今天客服拿一支公用機 Line 帳號將客戶群組一一訂閱,最多只能加 100 個群組。假設像 Caring 有 400 家機構,嘿丟,請準備四支公用機。 總結 --- 1. 依照主系統的 bug 量/一級警報事件/更版頻率,如果還要手動轉傳訊息可能人沒了,以及像鎧琳 400 多家機構要傳到天荒地老 2. 如果要依照 Solution / 關鍵字,進行特定群組推播,未來將需要規範 Line 群組名稱 - 原本鎧琳沒有需要 solution 機制去推播,因此後續將群組名稱依照 長照/日照/身障/護家進行命名 3. 以 Line 群組為出發點且避免不必要支出,Notify 應該算是最佳解,雖然第一次手動訂閱很麻煩 ... 4. 唯一的隱憂是:負責訂閱的手機 Line 帳號若不小心刪除(!?)取得的 token 將會失效