FM611A
LINE
Bot
在〈MQTT 版 Lab 06 語音聲控電源插座實作教學〉一文刊出後, 有讀者提出『那是不是可以用 LINE 訊息來控制繼電器開關呢?』, 其實只要建立起 MQTT 的通道, 任何可以連上 MQTT 伺服器的裝置或程式都可以相互通訊, 作法其實就跟同一產品內的 Lab04、Lab05 介紹的 LINE 聊天機器人類似, 以下我們就帶大家一步步實作囉。
LINE 聊天機器人的介紹可以參考套件手冊上的說明, 主要就是 LINE 伺服器會將使用者透過 LINE App 鍵入的訊息轉送給我們自己要撰寫的後端程式, 在後端程式中依據收到的訊息內容決定對應的執行工作, 並且產生回應訊息:
以我們的例子來說, 就是要在後端程式中判斷使用者訊息是否有包含『打開』、『開燈』、『關閉』、『關燈』這樣的內容, 據此發送訊息到 MQTT 伺服器上, 這樣控制板端的程式就可以從 MQTT 接收訊息控制繼電器開關了。
在繼續往下實作前, 請先依照〈MQTT 版 Lab 06 語音聲控電源插座實作教學〉一文的說明, 註冊 AIO 帳號並建立 voice 資料通道。
要建立 LINE 聊天機器人, 第一步就是要到 LINE 開發人員專區註冊登入後, 利用網頁介面建立 Message API 的資料通道:
請開啟瀏覽器連線至 https://developers.line.biz/ 進入 LINE 開發人員頁面, 按右上角的 Log in 登入:
按一下使用LINE帳號登入
填入你在 LINE 註冊的電子郵件與密碼:
如果忘記密碼, 可以有兩種方式解決:
請依照畫面指示, 到 LINE App 上填入確認數字後登入:
請在 Providers 旁按 Create:
填入自訂的名稱後按 Create 建立:
往下捲按 Create Message API Channel 建立聊天機器人類型的資料通道:
往下捲動依照下圖填入各欄位資料, 務必勾選同意授權條款後按 Create 建立:
按 OK 確認:
按同意完成:
切換到 Message API 頁次:
往下捲找到 Channel access token 後按 Issue:
這會產生可以和此聊天機器人溝通的存取權杖, 後端程式必須使用此存取權杖才能處理聊天機器人的訊息。按右邊的小按鈕可以複製存取權杖:
請保留此網頁不要關閉, 以便稍後複製權杖。
後端程式就如同產品的 Lab04 與 Lab05, 會使用 Google Apps Script 撰寫的網頁應用程式, 請如下一一完成:
請開啟新的網頁連線至 https://www.google.com/script/start/, 按 Start Scripting:
登入你的 Google 帳號:
按新的空白專案:
這會開啟新的專案, 請將編輯區內的預設程式刪除, 再按未命名的專案:
填入自訂的專案名稱:
請開啟新的網頁連結至 https://github.com/FlagTech/FM611A_Extra/raw/master/lab06.js, 這是我們事先準備好的後端程式, 請選取完整程式後複製到剪貼簿:
回到 Apps Script 網頁, 將剛剛複製的程式貼到編輯器內, 並在第 1、2 行填入你自己的 AIO 使用者名稱與金鑰, 第 3 行填入前面建立 LINE 聊天機器人時產生的存取權杖:
按 CTRL+S 存檔。
執行『部署/新增部署作業』指令將程式部署成網頁應用程式:
按選取類型後選網頁應用程式:
請依下圖選取各欄位後按部署:
按授與存取權:
選取你的 Google 帳戶:
按進階:
按前往『語音開關』(不安全):
按允許:
完成部署, 會產生此網頁應用程式的網址, 可按左邊的複製鈕複製到剪貼簿:
複製網址後按完成。
如果修改 Google Apps Script 的程式, 就必須重新執行上述部署程序, 每次重新部署網址都會變化。
回到 LINE 聊天機器人網頁, 往下捲找到 Webhook settings 區間, 按 Webhook URL 項目右側的 Edit:
在 Webhook URL 欄位填入剛剛複製的網頁應用程式網址後按 Update:
按 Verify 確認網址正確:
按 OK 關閉:
打開 Use webhook 選項:
往下捲找到 LINE Official Account features 區間, 按一下 **Auto-reply messages ** 項目右側的 Edit:
這會開啟新的網頁, 請在進階設定區間找到自動回應訊息項目, 設為停用:
回到 LINE 開發人員頁面, 往上捲動即可找到此聊天機器人的 QR code:
請用手機 LINE App 掃描此 QR code 將此聊天機器人加入聯絡人:
即可按聊天與機器人對話:
若送出包含『打開』、『開燈』、『關閉』、『關燈』等關鍵字的訊息, 後端程式就會送出對應的數值到 AIO 上, 並回應『已傳送指令』:
在 AIO 上查看, 就會看到後端程式送來的資料:
本例的 FlagsBlock 程式就和 〈MQTT 版 Lab 06 語音聲控電源插座實作教學〉一文的程式一樣。