透過「服務提供者」功能讓外部服務與 MediaTek Cloud Sandbox 連動 (下)
打造 LINE Bot 聊天機器人供使用者查詢停車場的即時剩餘車位
上一篇我們了解整個 LINE Bot 的服務架構為下圖:
我們現在要透過 Automate.io 完成以下自動化程式:
步驟 1: 用戶對 LINE Bot 機器人詢問包含「車位」兩字的問題時,LINE 伺服器收到用戶訊息後並送一個 Webhook 進來 → 步驟 2: Automate.io 對進來的用戶訊息判斷文字內容是否符合回覆條件→ 步驟 3: 發送一個 HTTP 請求到 MCS 雲服務,取得目前剩餘車位資訊 → 步驟 4: 將取回的資訊解析出欲回覆給用戶的數值→ 步驟 5:將此數值透過 LINE 提供的 Reply API 從 Automate.io送回 LINE 伺服器並發送給用戶
下面我將針對各個步驟進行說明。
步驟1 : LINE 伺服器觸發 Automate.io Webhook
免費註冊完 Automate.io 的帳號後,點擊 Create a Bot,會進入設定這個 Bot 的編輯頁面。在 Select Trigger app 欄位, 選擇Webhooks,如下圖:
點擊Setup Webhook,Automate.io 會自動生成一個 webhook 的 URL,我們可以透過這個 URL 接收 LINE 伺服器發送的訊息。複製這串 URL 後,回到LINE Bot 設定介面中尚未輸入的 Webhook URL 欄位貼上這串URL。
如果要驗證兩個服務的 Webhook 連結是否有成功,在 LINE Bot 設定頁面點擊 Verify,若這個 Setup Webhook 頁面能接收到從 LINE 伺服器發送的變數測試植,即代表成功。
萬事起頭難,我們已經完成了最繁瑣的第一步了。
步驟 2 : 篩選 LINE Server 發送的訊息
接著,我們可以選擇對 LINE server 發送進來的資訊做篩選。在此我們設定對用戶發問的文字內容做篩選,一旦符合包含「車位」兩字的訊息即做後續動作。我們在 Bot 的第二個步驟,選擇 Filters,並設定如下
當然,若你決定不打算對用戶發送的訊息做任何篩選,你也可以選擇跳過此步驟。
步驟 3 : 以 Automate.io 做為外部服務向 MCS 服務發送
現在我們要設定從 Automate.io 向 MCS上物聯網裝置的剩餘車位這個資料通道取得即時數值。根據 MCS 讀取資料點的API說明,我們會以HTTP GET的方式取得該資料通道的數值。請注意,上一篇我們有特別提到,MCS允許裝置及外部服務與其連動,由於此處的請求對象是 Automate 這個外部服務而非裝置,因此我們需要確保 MCS 的帳號內有申請這個外部服務的憑證。我們到 MCS 右上角個人檔案中的服務提供者下申請這組憑證,如下圖
輸入相關資訊後,我們會獲得一組 appId 及 appSecret。
接著我們到 Automate.io 依照 MCS 讀取資料點的 API 說明,以 HTTP GET 的方式取得該資料通道的數值,並確保在 Headers 輸入這串申請好的 appId 及 appSecret,完整設定如下圖:
步驟 4 : 將取得的資料進行拆解,取出剩餘車位數值
前一個步驟我輸入的 API 選擇以「.csv」格式取回資料,格式較為單純,取回的資料僅有 「space_left,1531730535609,2」 這個數值。而我們現在需要回覆用戶的資訊只有 “2” 這個數值,因此我們在下一個步驟選擇 Formatter 的功能,透過 Split Text 的運算方式,將這個值解析出來。完整設定如下圖:
PS: 其實 Formatter 功能非常多元,可以針對前一個動作拿回來的資料進行各種運算方式, 例如若你想透過規則運算式(Regular Expression) 解析取回來的 JSON 格式資料,也能透過這個功能做到,有興趣可以自行研究。
步驟 5 : 將這個即時剩餘車位數值,透過LINE提供的API回傳至Line server,並回覆給用戶
在最後一個步驟,我們參考上圖 LINE 官方 API 文件中 Send reply message的教學文件,並參考該頁面右方的代碼範例將所需的輸值輸入 Bot 的最後一個步驟中 (完整設定如下圖)
這裡要注意的是 Channel access token 這個欄位是在設定 LineBot 頁面發行的。
到這裡,我們已經完成了我們需要的 LINE Bot 聊天機器人自動化程式設定。你可以試著在測試頁面測試這五個步驟 ─ 在你加入的 LINE Bot 輸入任何包含「車位」的文字訊息,Automate 將會自動幫你執行所有的步驟,並回覆你剩餘車位的訊息。
如果跑完測試後卻發現 LINE Bot 並沒有成功回覆訊息,則可以到 Automate.io → Activity 頁面檢查這個 Bot 執行過程中的 Input 及 Output 是否正確。
如果你的機器人成功回覆如上圖,恭喜你完成了停車場Linebot的聊天機器人。我們可以把這個 LINE Bot 的 QRcode 貼在停車場的繳費機台上了!
由於這兩篇我們主要目的是要介紹如何讓外部服務透過 MCS 發行的 appId 及appSecret 和 MCS 互動,因此僅以 LINE Bot 可回覆剩餘車位這個目標做為教學;至於上一篇文章的第二個目標 ─ 車位剩餘數量低於某個數字時主動推播訊息給用戶的服務,你可以試著參考 LINE developers 官網上的 Send push message 教學,並透過類似做法在 Automate.io 上設定;除此之外,你也可以針對你的各種應用,透過其他網路服務或物聯網裝置,透過申請 appId 及 appSecret 與 MCS 上的裝置做連動。
MCS的官網上也有針對以 appId 和 appSecret 透過 IFTTT 和 MCS上的裝置互動的教程,若有興趣可參考這裡。
現在,開始開發屬於你的應用並和MCS互動吧!如果針對本篇文章有什麼問題或建議,也歡迎在下面留言補充喔。