看板 Soft_Job 關於我們 聯絡資訊
前言 隨手的小專案,紀錄一下玩 Line Message API 的過程, 這專案主要是透過 Line Message API 來傳遞影城的相關資訊, 前些日子本來寫了威秀影城的爬蟲 API, 但遲遲一直沒有做出界面來,剛好藉此機會來做出 client 端; 目前實做出來的功能為: 傳送你的位置給機器人,便會回傳最近的五個影城的位置與時刻表資訊, 結果可以看下圖 http://imgur.com/a/7PzPJ 架構 http://imgur.com/a/Jl9kk 請讓我用很潦草的帶過,大方向要做的事情大概可以列為下列幾點 1. Line Message API 2. Google Map API 3. 寫爬蟲 Line Message API 1. 到官方網站去申請帳號 2. 到 Line Business Center ->「Bot 的設定」 -> Webhook 的設定打開,這樣機器人才能對你的 server 去做請求, 並使用 Line Reply API 這邊要注意的是,走的協定要走 https 3. 到 Line@Developers 去記下自己的 Channel ID 、 Channel Secret、 Channel Access Token 4. 用 NPM JS 裡面的 line-message (https://npmjs.com/package/line-message) 5. 雖然 Line Message API 目前支援很多主流語言, 像是 php, go, ruby, java, python,但是就是沒有支援 javascript 6. 這套 line-message 的優勢就是可以快速整合到你的 Node JS Project 中 http://imgur.com/a/tQGP3 Webhook 所支援的事件(Events) 有下列幾種 - MESSAGE : 訊息事件 - FOLLOW :使用者加機器人好友時的事件 - UNFOLLOW:使用者刪除機器人好友時的事件 - JOIN:機器人加入群組時的事件 - LEAVE:機器人離開群組時的事件 - POSTBACK:使用者透過套版訊息(Template Message)回應時的事件 - BEACON:透過 Line Beacon 回應時的事件 目前在這 Project 中透過 MESSAGE 和 POSTBACK 就可以做出很多的變化 Line Message API 所支援的訊息型態( message type )有下列幾種 - Text - Location - Audio - Video - Image - Sticker 詳細的資訊可以去看 API 的介紹, 就不在這野人獻曝了, 值得一提的雷是,replyToken 這個參數只能使用一次, 雖然 API 文件裡面有寫, 不過他沒有特別的標注出來,所以在掃文件時沒注意到; Text 裡面除了純文字的型態之外,還有支援套版訊息,讓你的畫面更加多元 http://imgur.com/a/wcMEy Google Map API 在 NodeJS 端對 Google Map API 做請求可以使用這套 google-maps-services-js (https://github.com/googlemaps/google-maps-services-js) 1. 首先還是要自己先去 Google Develepor Console 開啟要使用的 API 2. 在這個專案裡用到的是 Distance Matrix 這隻 API, 可以讓我來傳送起點與終點,算出對應的距離與時間 http://imgur.com/a/rh6fw 爬蟲主架構: 目前 bot 會透過 heroku scheduler 這個 Heroku community 裡面所提供的 Add-ons 來每小時執行特定的腳本,透過此步驟便可以每小時去更新資料庫的資料 1. VPS solution: Heroku,這隻 bot 現在是 host 一個 NodeJS 的專案在 Heroku 上, 在 Heroku 上的優勢就是不用自己去管一台 server , 只要透過簡單的指令 git push heroku master 就可以完成部署 2. Web server: Express 3. Database server: MongoDB + Mongoose(MongoDB ORM solution), 把爬蟲回來的資料存在 Database 裡 http://imgur.com/a/wgIOt 4. Crawler: js-crawler (https://www.npmjs.com/package/js-crawler) cheerio (https://www.npmjs.com/package/cheerio), 在 Server 端也可以用 jQuery 的 selector 去爬 DOM 結構 http://imgur.com/a/3CQA0 寫好這個應用單純的也只是想分享給大家使用, 只是目前會一直漏訊, 若有大大想要當公測白老鼠的請服用此 Line ID: @xwg9380i (若有違反版規,我在刪除) 除了分享一些心得外,也私心想請教並釐清一下頭緒, 目前還不知道漏訊的原因是 Heroku server 的問題還是 Line Message API 的問題, 但是機器人在戳我 server 的 webhook event 時, Heroku server 的 log 有記錄到,但好像就斷在這邊了。 謝謝 2016/12/30 17:21 更新 line id -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.96.95 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1483086766.A.933.html
markwu123: 好! 12/30 16:35
※ 編輯: wnchin2013 (60.248.96.95), 12/30/2016 16:38:33
manaup: 賀! 12/30 16:46
wayne8062: 猛! 12/30 16:51
newjersey56: 猛! 12/30 16:52
newjersey56: 跪求Id 12/30 16:52
t5301437: 太厲害了 求ID 12/30 17:02
TheJim: 我寫了一個 匿名聊天室 可以來玩玩看 12/30 17:08
strife00: 太讚了,帥氣! 12/30 17:08
TheJim: @igh1649t 12/30 17:08
jaspreme206: 推 12/30 17:12
jjwei: push 12/30 17:15
※ 編輯: wnchin2013 (60.248.96.95), 12/30/2016 17:22:36
wybeen: 推分享,不過野人現曝不是醜人現曝 12/30 20:14
謝謝提醒 我的國文老師在哭泣了
ccvs: 推 12/30 20:28
※ 編輯: wnchin2013 (223.136.228.243), 12/30/2016 21:17:00
gn123: 好強!!! 12/30 21:36
kapiobhee: 哇靠@!@ 12/30 21:40
swallowcc: 強 12/30 21:58
iPhone007: 是「野人獻曝」 12/30 22:03
chrome: 大推 12/31 00:20
slrune1049: 推 12/31 02:56
sppqre: 推 12/31 11:49
wliu: 同事推 12/31 15:10
momoCry: 似乎不能直接用電腦版LINE發訊息測試,要先用App授權 01/01 00:34
momoCry: 難怪一直沒收到Webhook Request @@ 01/01 00:34
gctcxu: 我記得Heroku free 不是會自動休眠? 01/01 07:13
jay123peter: 推 01/01 11:47
vvind: push 01/01 13:19