LINE 開發社群計畫: Chatbot 台中小聚 08 - LINE platform 工作坊紀錄

all user

前言

大家好,我是 LINE Taiwan 的 Tech Evangelist - NiJia Lin。這次很開心受到 chatbot 社群的邀請,參加了 “中部人的 Chatbots Meetup 聊天機器人小小聚 #8“ 的聚會活動,並且分享 LINE API 更新與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。

由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。

投影片

這次主題主要圍繞著三個平台實作

  • LINE: 提供 機器人(Bot)/網頁(LIFF)/通知(Notify) 的服務
  • Heroku: 部署的主機,會含有 Domain/服務套件(SQL、排程)
  • GitHub: 放置程式碼的倉庫

搭配我已經寫好的專案: LINE-subscribe-open-data-bot

整體使用 flask/Python 3.7、PostgreSQL 實作,若想在本地端起服務的話要有這兩個喔!

Deploy to Heroku

首先需要先到我的專案 LINE-subscribe-open-data-bot 按下右上角的 Fork (並且按星星 ⭐️) 回自己的 GitHub page。

在 Fork 專案到自己的帳號下之後,沿著 README 往下會找到 Deploy to Heroku 按鈕,按下去之後會被引導至 Heroku 部署的頁面,並輸入一個你喜歡的名字。

等待部署結束後按下最下面的 Manage app 的按鈕會到達你剛剛建立的主機頁面 ,這邊會需要按下 Configure Add-ons 並加入兩個 Heroku 套件來輔助這次的實作:

  • Heroku Scheduler
  • Heroku Postgres

並且加入完套件之後再點一次 Heroku Scheduler 到達可以建立排程作業的地方,分別按下 Create Job 建立兩個 Job 並輸入:

  • python scripts/sync_to_sql.py
    • 定期將資料同步到資料庫中,而第一次觸發時會建立 DB Tables。
  • python scripts/notify_me.py
    • 定期發送以訂閱通知的用戶。

接著到 Settings 的頁面按下按鈕,這部分是填入環境變數的地方,且往下滑會看到 Heroku 送的 Domain Name(參考 17 頁),待會會大量的使用到它,這個頁面就先保留停在這邊。

這邊先提前說明一下所有的環境變數用途:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// LINE bot 傳遞訊息時所需要的鑰匙
LINE_CHANNEL_ACCESS_TOKEN=
LINE_CHANNEL_SECRET=

// LINE Notify 的鑰匙以及 callback url
LINE_NOTIFY_CLIENT_ID=
LINE_NOTIFY_CLIENT_SECRET=
LINE_NOTIFY_REDIRECT_URI=

// 處理 LINE Notify 所使用的 LIFF page
LIFF_BIND_ID=
LIFF_CONFIRM_ID=

// 操作 Share Target Picker 需要使用的 LIFF page
LIFF_SHARE_ID=

// 在增加 Heroku Postgres Add-ons 時會自動加入的環境變數,若在本地端測試時則需要建立相關參數
DATABASE_URL=

Massaging API

接著就要開始建立 LINE Bot 連動相關資訊,首先先到這個LINE Developer Console頁面,建立一個 Provider(100 channels per provider),並且把該填的部分填完。

接下來處理訂閱服務的 Messaging API(Bot)部分,在眾多服務選項中選擇第二個建立 Channel。

然後把該填的資訊填清楚 👍

在建立完後往下滑會看到 Channel Secret,將他複製起來放到 Heroku 環境變數的 LINE_CHANNEL_SECRET 欄位。

接著點選 Massaging API 的頁籤並至下方看到 LINE Official Account features 的地方並按下 Edit 到另一個設定頁面。

為了實作方便,由上到下依序為停用停用啟用 後將頁面關掉回到剛剛的 LINE Developer Console。

到最下面 Issue 一個 Channel Access Token 並一樣的複製到 Heroku 環境變數中新增一個 LINE_CHANNEL_ACCESS_TOKEN 的欄位並填入。

這部分是整隻機器人最重要的一個部分,填入 webhook URL,將 Heroku settings 頁面下面 Heroku 給的 Domain Name 複製到這個地方,並在網址後面加上 webhooks/line,下面的 webhook 開關也記得打開。

確認你的環境變數有沒有輸入正確 ❗️

建立 LIFF page

首先一樣先回到我們起初建立的 Provider 上並建立一個 LINE Login Channel,並且將必填欄位的資訊逐步打上,待會會需要在這 Channel 中建立三個 LIFF app。

在進入頁籤前,需點擊上面紅色框框的地方將這個 Channel 改成 Published 狀態,如此一來外部伺服器才會連結的到喔!

Published 之後到 LIFF 頁籤新增三個 LIFF pages,參考第 33, 34 頁的資訊並輸入以下的 app name 以及 Endpoint url:

建立完 LIFF add 後記得打開 ShareTargetPicker 的選項喔!

後續的步驟則會使用 app name 來解說喔!

接著需要將剛剛建立的三個 LIFF ID 放到 Heroku 的環境變數上,分別對應名稱是:

  • LIFF_BIND_ID ↔️ notify index
  • LIFF_CONFIRM_ID ↔️ notify callback
  • LIFF_SHARE_ID ↔️ share message

這邊建立後並確認名字是否打對後就接著進入 LINE Notify 的部分囉!

LINE Notify

接著來到 Notify 的頁面,並且確認 LINE Notify 是否已加入好友(或需解除封鎖)。

這部分串接的套件為 - lotify 來幫助快速串接 LINE Notify。

從右上角按下 登入 結束後 👉管理登入頁面 👉 最下面的 登入服務 開始建立基本資訊。

  • 電子信箱一定要能收到信,否則會沒辦法驗證。
  • Callback URL 則輸入前面建立 LIFF app 時 notify callback 的網址。

不清楚 Callback URL 是哪個話就是這個 👇

建立完之後就到信箱收信按下驗證的網址囉!否則你的服務會無法使用。

按照慣例一樣填入環境變數到 Heroku 中:

  • LINE_NOTIFY_CLIENT_ID
  • LINE_NOTIFY_CLIENT_SECRET
  • LINE_NOTIFY_REDIRECT_URI (這邊是 URI 喔!注意):填入剛剛在設定 Callback URL 時的那個 LIFF app url。

到這部基本上對 chatbot 說 「所有縣市」 應該要有反應,若沒反應的話要確認哪個步驟有沒有做錯或打錯字喔!(現場很多這樣的問題)

閃電秀 - 我要奮發向上!聊天機器人有哪些書?

身為主辦人 & LINE API Expert 幫大家整理目前市面上有的書,雖然資訊迭代速度很快,想想有些時候我們都窩在網路上太久,若能好好地透過書籍溫習一下 Chatbot 知識也很讚喔!

活動小結

社群分享永遠是讓創意激盪的最佳方式,而 Chatbots Meetup 是一個很熱情與充滿創造力的社群組織。也希望有更多有創意的開發者願意加入 LINE Chatbot 的開發行列,更希望能熱情的參與社群的活動與一起來分享。

立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev

關於 「LINE 開發社群計畫」

LINE 今年年初在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦 30 場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: