LINE的自動化傳訊工具目前來說分成兩種,BOT跟Notify
- BOT:程式化傳訊、讀取訊息並依據內容進行反應(BOT部份推薦:LINE Bot聊天機器人程式開發教學(一):建立頻道)
- Notify:程式化傳訊,無法讀取訊息,一個Notify只能針對一個群組,使用者必須將對象拉到這個群組內
- 一、申請LINE Notify服務:利用自己的LINE申請一個Notify服務帳號,過程中需要確認對象為何,只能自己或自己所在的群組,無法針對其他個人用戶,需將對方拉入群組中
- 二、取得使用者Token:在步驟一完成後,需要由Authorize Code轉成用戶的傳訊代號(Token),只須做一次,取得群組Token後即可傳遞訊息到群組內
- 三、POSTMAN簡易測試傳遞訊息:完成步驟二之後,可以透過POSTMAN快速測試服務是否正常。
- 四、ASP自動化訊息:透過IIS網站,以ASP.net透過POST來傳遞訊息,也可透過IFTTT來取代(請參考:使用 LINE Notify 接收網站更新通知),這樣就可以省去寫ASP跟IIS的部份
- 本文所需工具:POSTMAN(簡易POST工具)、VS.net、IIS、自己固定IP的網址
1.申請Line 服務:https://notify-bot.line.me/zh_TW/,拉到最下面的登錄服務
2.輸入自己的帳號密碼登入LINE服務
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓步驟3-8可省略,直接跳步驟9↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
3.輸入相關資訊,
資料可以自行選擇輸入,不過最後好像沒什麼用,最後都是以官方圖片為主,但其中Callback URL則最為重要,到時要接收Authorize Code,例如我輸入我自己的網站:http://210.60.88.47/
4.完成新增服務
5.收信並驗證服務
6.點選我的服務
7.點選剛剛新增的服務內容
8.驗證完畢後,點選顯示,查看Client ID及Client Secret,馬上要用到
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑步驟3-8可省略↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
9.取得發行權杖
10.輸入相關資訊後,點選發行
11.獲得發行權杖,記得要把它先複製存到其他地方,等等就要用到
12.這時你的LINE會收到一個訊息,表示權杖已經申請完畢
到此已經完成第一步驟。
二、POSTMAN簡易測試傳遞訊息
步驟一中複製的權杖就是代表傳訊的群組,有了這個就可以透過網址傳訊息到該群組,也是利用POST的方法,可以先用POSTMAN測試,再改用ASP設定自動傳訊。
在POSTMAN中依序完成以下
1.修改傳遞方式為POST
2.輸入Notify傳訊網址: https://notify-api.line.me/api/notify
3.點選Header頁簽
4.新增一個Header參數,請注意Bearer與Token之間有一個空白
2.輸入Notify傳訊網址: https://notify-api.line.me/api/notify
3.點選Header頁簽
4.新增一個Header參數,請注意Bearer與Token之間有一個空白
Key欄位 | Value欄位 |
Authorization | Bearer 上面取得的群組Token |
5.點選Body頁簽
6.選擇傳送格式x-www-form-urlencoded
7.點選Params設定參數
8.新增一個message參數,此為真正的傳訊內容
6.選擇傳送格式x-www-form-urlencoded
7.點選Params設定參數
8.新增一個message參數,此為真正的傳訊內容
Key欄位 | Value欄位 |
message | 訊息內容.... |
9.完成後,點選Send送出,即可得到結果,若結果為OK,代表傳送完成
10.查看手機,可得到訊息已經進來了
10.查看手機,可得到訊息已經進來了
四、ASP自動化訊息
用POSTMAN只能手動傳遞訊息,如果要能系統自動傳訊息,則需要利用IIS+ASP,例如說當Arduino偵測到溫度或濕度(或有害氣體濃度)過高,則發送訊息到網站,而網站接收到Arduino傳來的訊息之後,將訊息以LINE Notify轉發群組內,所以下面我們將介紹如何以ASP(VB.net)來說明如何傳遞訊息到LINE
本部份也可透過IFTTT來取代,請參考:使用 LINE Notify 接收網站更新通知,但之所以用自己的網站是因為這樣將會有更多的權限及可能,例如我們可以把訊息存到sql資料庫,或者給予一些準則或機制等等
1.Arduino傳遞部份
參考範例檔的Wifi/WifiWebClient範例
分別修改WIFI AP的SSID及密碼、Server的IP=自己IIS網站的IP、將get 後面的網址改為要接收網頁的網址(本文為default.aspx),並加上後續要接收的參數,以本例而言,將接收user(使用者代號)及value(有害氣體濃度ppm)
2. ASP程式碼(本文CodePage採用VB.net)分別修改WIFI AP的SSID及密碼、Server的IP=自己IIS網站的IP、將get 後面的網址改為要接收網頁的網址(本文為default.aspx),並加上後續要接收的參數,以本例而言,將接收user(使用者代號)及value(有害氣體濃度ppm)
建立一個網頁,檔案名稱為上述default.aspx,用以接收Arduino傳來的參數,並立即轉發,因此在Codepage程式主要分成兩個部份,A接收及B轉送
在default.aspx的Load事件函數中,輸入以下的程式碼(要記得Import兩個Lib:System.IO跟System.Net)
A.接收參數:利用request接收user及value
B.轉送到LINE Notify:建立一個WebRequest,並以Stream方式把資料POST給LINE網頁將訊息送出
其中,訊息要換行時,使用"%0D%0A"換行
A.接收參數:利用request接收user及value
B.轉送到LINE Notify:建立一個WebRequest,並以Stream方式把資料POST給LINE網頁將訊息送出
其中,訊息要換行時,使用"%0D%0A"換行
Private Sub default_Load(sender As Object, e As EventArgs) Handles Me.Load 'A.接收參數 Dim user As String = Request.QueryString("user") Dim value As String = Request.QueryString("value") 'B.轉送到LINE Notify: Dim request1 As WebRequest = WebRequest.Create("https://notify-api.line.me/api/notify") request1.Method = "POST" ' request1.Headers.Set("Authorization", "Bearer 你的Token") Dim postData As String = "message=%0D%0A用戶:" & user & "%0D%0A偵測器發現有害氣體濃度過高(數值=" & value & ")。%0D%0A時間:" & Now().ToString("yyyy/MM/dd HH:mm") Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) request1.ContentType = "application/x-www-form-urlencoded" request1.ContentLength = byteArray.Length Dim dataStream As Stream = request1.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim response As WebResponse = request1.GetResponse() Console.WriteLine(CType(response, HttpWebResponse).StatusDescription) dataStream = response.GetResponseStream() Dim reader As New StreamReader(dataStream) Dim responseFromServer As String = reader.ReadToEnd() Console.WriteLine(responseFromServer) reader.Close() dataStream.Close() response.Close() End Sub |
您好
回覆刪除想像您請教,我只要執行到Dim response As WebResponse = request1.GetResponse()時
就會出現400 Bad Request的錯誤,請問有解決的方法嗎,謝謝!
好像是網址改了,我在檢查看看
刪除