2018-09-30

Line@ BOT Login / Messaging API with Apache / PHP / MySQL System

這陣子對 Line@ 生活圈有興趣
試用後發現不能自己將某些人設為一個群組, 只對這些人發訊息
只能廣播給所有加入 Line@ 好友的人
或是付更多費用取得分眾發訊的功能
但該功能似乎只能針對性別、年齡等資訊去分, 依然不能自己設群組廣播
於是興起了自己寫後台的想法

目前開發完成的功能:

1. 將在 Line@ 申請好的 Channel 資訊填入即可建立 BOT
2. 具有 Log 功能, 可將 1on1、Room、Group 的對話全部 Log 下來, 包含文字、圖片、音訊、視訊、檔案、地點等等
3. 可打開 Chat Window 進行對話
4. Chat Window 會自動 Refresh 取得最新訊息

*. 收到 Line Official Event 會檢查 HTTP header 確認身份, 也會驗證 Json 的簽章, 安全性檢查無虞

寫到一個段落之後覺得有點吃力
考慮到 Line@ 一旦啟用 API 功能後就會喪失官網 Admin 後台功能
包括群發訊息、1on1 對話、定時發訊等等各種功能
若要這麼做的話勢必得把所有功能都寫出來, 不然會變成一個半殘的 Line@ 帳號

而以自己一人之力要把所有功能寫出來恐怕要花上數個月
侵蝕許多個人生活、與家人相處以及其他更有意義用途的時間
已經不是學生了, 沒有那麼多時間可以浪費在這種美好的事情上 (?)

更不用說我不會美工、CSS 排版等技術
即使最後將系統完整寫好了, 也很難產生經濟效益
雖然有想過寫出這個系統後開放以付費訂閱方式開放申請
但又覺得少了完整的經營、開發、維護團隊, 單打獨鬥實在是沒有效益的事情

故決定暫停這個計畫, 並將目前開發進度的程式碼公開
若有人有興趣繼續開發, 或拿去使用, 都可以自己來

目前完成的架構可以參考這段 Demo 影片
程式碼經友人提醒具有商業價值不要任意公開,避免心血被人免費拿去賺錢
故已經將連結移除,有問題可以在問答詢問

影片錄製過程中有幾段按了 Pause 忘了 Resume 所以沒錄到
點選 GroupName 可以修改, 因為 Line 系統只會給 GroupID 不會給 GroupName
所以為了識別, 可以自己寫入 GroupName

另外這個系統的運作邏輯簡單說明是這樣:

1. 使用 Line Login + Messaging API 綁定做為系統帳號驗證機制 (所以一開始的時候手動去改 BOT Name)
2. 上面這個 Messaging API 作為整個系統的溝通 BOT, 等於是整個系統的 Administrator
3. 開放給別人用他自己的 Line 帳號登入、新增自己的 Channel 進來使用

由於不同的 Provider 取得的 User / Room / Group ID 都不一樣
(同一個 Provider 底下的 Channel 很像是共用相同的 User / Room / Group ID)
故每個 Channel 都獨立建立自己的 DB, 避免混淆

由於開發終止前還沒有寫權限機制, 所以雖然可以看到建立 Channel 後有個 Expire Date 但實際上沒有作用
這裡原本是計畫要向申請者收費、給予使用期限的, 但總之目前沒有寫任何相關機制

1 則留言: