使用Node.js建置你的第一個LINE BOT

An Sheng Huang
Oct 3, 2018 · 13 min read
  1. 撰寫LINE Bot Node.js程式
  2. 使用ngrok測試Bot
  3. 設定Webhook

Part1: 註冊LINE Channel

想要建置LINE Bot首先你必須要有一個LINE Channel作為使用者跟Bot對答的帳號,因此請移駕至LINE Developers官方網站並且登入LINE帳號。

進入LINE Developer後點選右上角的Log in 並以你的LINE帳號登入
Provider名稱可為團隊或公司的名稱,當然這個名字也可由你自行決定
右側點選剛才建立的Provider名稱,並選擇Messaging API底下的Create Channel
填入App名稱、敘述並且選擇類別。App名稱不可包含「LINE」這個字眼
在Provider頁面裡,點選Channel進入Channel Settings頁面
  1. Channel Secret
  2. Channel Access Token
在Channel Settings頁面內可直接找到Channel ID與Channel secret
Channel access token需按下issue選擇token時效後即可產生,若擔心太快過期可設定為24小時

Part2: 撰寫LINE Bot Node.js程式

使用Node.js建置LINE Bot非常容易上手,原因就在LINE本身已有提供各種語言的SDK,這裡我使用在npm上可直接安裝的linebot Node.js SDK為基礎來建置。

$ npm install linebot --save
:
將app.js裡的Channel Id, Channel Secret, Channel Access Token資訊替換
  1. event.reply():這個方法能讓Bot回傳訊息給使用者。
使用者傳入的文字訊息可用event.message.text取得,在取得文字後即是你可以發揮創意的地方,可以依照使用者傳入的訊息不同做判斷並使用event.reply()回傳文字

Part3: 使用ngrok測試Bot

簡單來說,ngrok這個服務能夠讓你在本機端運行的應用程式通過一個公開的URL作為通道直接連結,且架設時支援https,https也是LINE官方對於使用Webhook連結Bot必要的條件之一,進入ngrok官方網站,點選「Get started for free」。

點選Download的連結下載ngrok
$ ./ngrok authtoken 你的NGROK_TOKEN
$ ./ngrok http 3000
輸入指令啟動ngrok後你將可於Forwarding後面看到一個可連結至本機 port 3000的公開URL
$ node app.js
在app.js所在路徑輸入node app.js啟動bot

Part4: 設定Webhook

一定要記得開啟Use webhooks的選項!
將Webhook連結的URL設定進去
deecb94e.ngrok.io
bot.listen('/linewebhook', 3000)
deecb94e.ngrok.io/linewebhook
你可以再Channel Settings的最下方找到加入Channel為好友的QR Code測試

初次建置需要注意的坑

  1. 是否有在Channel Settings內將Use webhooks設定為「Enabled」?
  2. 是否有把Webhook URL寫對?
    如果在ngrok上的public URL是「xxxxxxxx.ngrok.io
    如果在app.js bot監聽的路徑是 /linewebhook
    Channel Settings裡的Webhook URL就應該設定為「xxxxxxxx.ngrok.io/linewebhook
  3. 免費版的ngrok若有重啟,所產生的public URL將會是一組新的subdomain,若要測試需確認是否有在Channel Settings更新Webhook URL

延伸問答

Q: 是否可改寫bot監聽的路徑?

$ ngrok http 3000
$ ngrok http -subdomain mycoolestsubdomain 3000

如果您喜歡這篇文章,請多按下方的「拍手」圖像幾次、分享到社群網站以及訂閱 Pyradise追蹤更多 Python 資訊,請關注 Pyradise 的臉書粉絲專頁!🙏想看影音教學?🎥
我們將在 Pyradise 的 Youtube 頻道,定期跟大家直播分享相關心得!
訂閱我們!👇👇👇

Pyradise

在 Py 樂園輕鬆學習 Python。

An Sheng Huang

Written by

Front-end developer & Designer in Pyradise https://enn.design/

Pyradise

Pyradise

在 Py 樂園輕鬆學習 Python。