[心得] LineBot 與電影資訊
前言
隨手的小專案,紀錄一下玩 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
推
12/30 16:35, , 1F
12/30 16:35, 1F
※ 編輯: wnchin2013 (60.248.96.95), 12/30/2016 16:38:33
推
12/30 16:46, , 2F
12/30 16:46, 2F
推
12/30 16:51, , 3F
12/30 16:51, 3F
推
12/30 16:52, , 4F
12/30 16:52, 4F
→
12/30 16:52, , 5F
12/30 16:52, 5F
推
12/30 17:02, , 6F
12/30 17:02, 6F
推
12/30 17:08, , 7F
12/30 17:08, 7F
推
12/30 17:08, , 8F
12/30 17:08, 8F
→
12/30 17:08, , 9F
12/30 17:08, 9F
推
12/30 17:12, , 10F
12/30 17:12, 10F
推
12/30 17:15, , 11F
12/30 17:15, 11F
※ 編輯: wnchin2013 (60.248.96.95), 12/30/2016 17:22:36
推
12/30 20:14, , 12F
12/30 20:14, 12F
謝謝提醒 我的國文老師在哭泣了
推
12/30 20:28, , 13F
12/30 20:28, 13F
※ 編輯: wnchin2013 (223.136.228.243), 12/30/2016 21:17:00
推
12/30 21:36, , 14F
12/30 21:36, 14F
推
12/30 21:40, , 15F
12/30 21:40, 15F
推
12/30 21:58, , 16F
12/30 21:58, 16F
推
12/30 22:03, , 17F
12/30 22:03, 17F
推
12/31 00:20, , 18F
12/31 00:20, 18F
推
12/31 02:56, , 19F
12/31 02:56, 19F
推
12/31 11:49, , 20F
12/31 11:49, 20F
推
12/31 15:10, , 21F
12/31 15:10, 21F
推
01/01 00:34, , 22F
01/01 00:34, 22F
→
01/01 00:34, , 23F
01/01 00:34, 23F
推
01/01 07:13, , 24F
01/01 07:13, 24F
推
01/01 11:47, , 25F
01/01 11:47, 25F
推
01/01 13:19, , 26F
01/01 13:19, 26F
Soft_Job 近期熱門文章
35
114
PTT職涯區 即時熱門文章
189
327