這2天花了點時間與另一位朋友在研究如何透過Excel VBA串接LINE Notify傳送文字與圖片,這裡簡單介紹對LINE Notify傳送文字內容。
筆者用 Postman 與 Fiddler 這兩個工具做說明,讓讀者可以學會如何對LINE Notify傳送文字內容。
Step 1. 安裝好 Postman 與 Fiddler 這兩個工具。
Step 2. 開啟 Postman,分別在以下欄位進行設定。
- URL填入「https://notify-api.line.me/api/notify」,選擇POST。
- Header 填入 「Authorization」,Value填入對應的 Token。
- 點選 application/x-www-form-urlencoded。
- Key 填入 「message」,Value填入「 哈囉! 大家好 ~~~~~」。
Step 3. 開啟 Fiddler,點選 「Tool」、「Telerik Fiddler Options」,選擇「HTTPS」頁籤,將「Decrypt HTTPS taffic」打勾。
Step 4. 執行 Postman 的「 Send」,觀察 Fiddler 的變化。
Step 5. 查看Header,找出關鍵的內容。
Step 6. 轉成Excel VBA程式碼 。
Sub SendMessageToLineNotify() Dim oXML As Object Dim strToken As String Dim URL As String '指定的Line Notify Token strToken = "你的Token" 'Line Notify的傳送訊息網址 URL = "https://notify-api.line.me/api/notify" '中文字 strMessage = "中文測試1234567890ABCabc" '建立Ajax物件 Set oXML = CreateObject("Microsoft.XMLHTTP") With oXML '使用同步傳輸 .Open "POST", URL, 0 '設定傳送封包Header .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" .SetRequestHeader "Authorization", "Bearer " & strToken '執行Ajax傳送 .send "message=" & strMessage '顯示回報內容 Debug.Print oXML.responseText End With '釋放物件資源 Set oXML = Nothing End Sub程式碼第22行:由於使用application/x-www-form-urlencoded 為 Content-Type,所以不需要對中文字進行UTF-8的轉碼,使用multipart/form-data 為 Content-Type,才須對中文字進行UTF-8轉碼。
執行結果:
內建貼圖傳送
轉換成Excel VBA程式碼
Sub SendMessageToLineNotify() Dim oXML As Object Dim strToken As String Dim strMessage As String Dim URL As String '指定的Line Notify Token strToken = "你的Token" 'Line Notify的傳送訊息網址 URL = "https://notify-api.line.me/api/notify" '中文字 strMessage = "中文測試1234567890ABCabc" strMessage = "message=" & strMessage & _ "&stickerPackageId=" & "1" & _ "&stickerId=" & "106" '建立Ajax物件 Set oXML = CreateObject("Microsoft.XMLHTTP") With oXML '使用同步傳輸 .Open "POST", URL, 0 '設定傳送封包Header .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" .SetRequestHeader "Authorization", "Bearer " & strToken '執行Ajax傳送 .send (strMessage) '顯示回報內容 Debug.Print oXML.responseText End With '釋放物件資源 Set oXML = Nothing End Sub程式碼第28行:由於使用application/x-www-form-urlencoded 為 Content-Type,所以不需要對中文字進行UTF-8的轉碼,使用multipart/form-data 為 Content-Type,才須對中文字進行UTF-8轉碼。
與 Line Notify 溝通的Spec。
PS:Line內建貼圖對應stickerPackageId與stickerId列表 連結。
執行結果:
參考資料: