作者wnchin2013 (嘿嘿嘿嘿嘿)
看板Soft_Job
標題[心得] LineBot 與電影資訊
時間Fri Dec 30 16:32:36 2016
前言
隨手的小專案,紀錄一下玩 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