[心得] LineBot 與電影資訊

看板Soft_Job (軟體人)作者 (嘿嘿嘿嘿嘿)時間9年前 (2016/12/30 16:32), 9年前編輯推噓23(2303)
留言26則, 23人參與, 最新討論串1/1
前言 隨手的小專案,紀錄一下玩 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
跪求Id
12/30 16:52, 5F

12/30 17:02, , 6F
太厲害了 求ID
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
@igh1649t
12/30 17:08, 9F

12/30 17:12, , 10F
12/30 17:12, 10F

12/30 17:15, , 11F
push
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
似乎不能直接用電腦版LINE發訊息測試,要先用App授權
01/01 00:34, 22F

01/01 00:34, , 23F
難怪一直沒收到Webhook Request @@
01/01 00:34, 23F

01/01 07:13, , 24F
我記得Heroku free 不是會自動休眠?
01/01 07:13, 24F

01/01 11:47, , 25F
01/01 11:47, 25F

01/01 13:19, , 26F
push
01/01 13:19, 26F
文章代碼(AID): #1OPXkkap (Soft_Job)
文章代碼(AID): #1OPXkkap (Soft_Job)