[Bottender] 如何在 Heroku 上部屬 LINE BOT

上一篇文章是 2015 了呢....
主要是之前已經寫過一個簡單的 LINE BOT,
但最近剛好有點時間(?),所以想要藉此機會全部重寫。

之前寫的機器人原始碼在這邊
https://github.com/Rainsting/TarotLineBot

---------------------------------------------------------------------------------------

這次我選擇由台灣人自己新開發的機器人框架 - Bottender,
在此時的版本是 v0.15.0。

由於這整包在中文圈內的討論似乎不多,大部分都是拿來用在 FB Messenger 上,
對於 LINE BOT & Heroku 的著墨很少,希望藉由這一篇簡單做個記錄。


1. 首先申請個 LINE@ 帳號,並開啟 developer 功能:

網路上其實很多資訊了,這邊就不多說,建議可以參考前人的文章:

LINE BOT 實戰 ( 原理篇 )
http://www.oxxostudio.tw/articles/201701/line-bot.html

這邊目的是取得 Channel secret & Channel access token,之後會用到。


2. 申請 Heroku 帳號,並安裝 Heroku CLI:

一開始用免費帳號就足夠了,申請帳號也可參考前人的教學:

Heroku安裝使用教學
https://ericjhang.github.io/archives/689940fd.html


3. 將 Heroku 產生的 Domain 連結到 Line Develop Console 的 Webhook URL 內

位置在 Heroku 的 Settings,複製底下 Domains and certificates 的後面那一段,


4. 安裝 bottender (以 Windows 為例)

首先按照官網步驟,使用 npm 安裝 bottender 套件
https://bottender.js.org/docs/GettingStarted

npm install -g bottender

先自己取個好聽的名字,之後在過程中

1. platform 選擇 "line"
2. store session 選擇 "memory"
3. server 選擇 "express"

接著就會在當下目錄中看到我們剛剛新增的專案了。


5. 編輯 package.json,並告訴 Heroku 我們需要用的 node 引擎版本

由於我們會用到 async function,因此需要在環境內跟 Heroku 說我們要用的版本是什麼,編輯文件並加入以下內容:

"engines": {
    "node": ">= 7.6.0"
  }


6. 編輯 bottender.config.js,加入自己的 LINE accessToken & channelSecret


7. 編輯 index.js,修改程式碼

由於 heroku 不支援 server 監聽固定 port,因此我們需要把原先 server 應該要監聽的 port 透過 PORT 環境變數傳進去讓 server 知道,所以需要將原先的 server.listen 修改成這樣

server.listen((process.env.PORT || 5000), () => {
  console.log('server is running on 5000 port...');
});

這樣 Heroku 在組建 APP 時才不會發生 APP crash & Error R10 (Boot timeout) issue。


8. 同樣編輯 index.js,修改程式碼

因為 context.sendText 預設是用 push API,因此我們在這邊可以改成 replyText,或是在 new LineBot 內調整內容,讓他預設用 reply (after v0.15.0)

const bot = new LineBot({
  accessToken: config.accessToken,
  channelSecret: config.channelSecret,
  sendMethod: 'reply', // Default: 'push'
});


9. 在 Heroku 上建立新的 Git repository

heroku login

cd my-project/
git init
heroku git:remote -a (Heroku APP Name)


10. 將修改內容 push 到 Heroku 上,部屬 BOT

以後如果有任何更動,要更新程式,那底下就重新再做一遍

git add .
git commit -am "(要養成寫 LOG 的好習慣)"
git push heroku master


之後如果要看 Log,可以隨時在 Heroku CLI 內即時觀看

heroku logs --tail




Ref:
來寫個氣象機器人吧!
https://blog.techbridge.cc/2018/05/10/lets-build-weather-bot-1/

line bot 教學
https://ericjhang.github.io/archives/c7f31b57.html

Bottender Getting Started
https://bottender.js.org/docs/GettingStarted

Bottender Github
https://github.com/Yoctol/bottender



 
--
嗚嗚我只有 PC,要是有人能贊助我 MAC 就 (ry


留言

這個網誌中的熱門文章

How to use ebtables: ebtable 的小筆記

解決 VirtualBox 無法開啟 NS_ERROR_FAILURE (0x80004005)