2019-07-17

在樹莓派 RaspBerry Pi 下,用Python 執行 CURL 指令,發送 LINE Notify即時通知

工作環境:
  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
  • 透過LINE接收其他網站服務通知,與網站服務連動完成後,LINE所提供的官方帳號「LINE Notify」將會傳送通知。不僅可與多個服務連動,也可透過LINE群組接收通知。
  • 現有可用的可連動服務
  • 當然也可以根據自己的需求,自行開發自己的服務需求
    • 取得通知服務的Token(發行存取權杖),必須先用註冊的電子郵件帳號 / 密碼,登入以下網址:
      https://notify-bot.line.me/my/
    • 點擊『發行權杖』
      輸入權杖名稱
      選取通知對象,可以是自己(1對1聊天接收LINE Notify的通知)或已參加的群組

    • 取得已發行的權杖
      若離開此頁面,將不會再顯示新發行的權杖。 離開頁面前,請先複製權杖。
    • 邀請好友中的『LINE Notify』加入所選取的通知群組(這個範例的群組是:★LuckyFullHouse★幸運滿屋★)。
  • 在樹莓派使用 cURL指令,傳送通知給Line Notify對應的通知對象
    • 甚麼是 cURL ?
      Curl 是一個在 Linux 上用來透過 HTTP Protocol 定義存取網路資源的協定,讓我們可以使用 client / server 模式來取得網路資源)下載和上傳檔案的指令(比起 wget 只能下載強大許多)。
    • curl的選用參數
      -X/--request [GET|POST|PUT|DELETE|PATCH]  使用指定的 http method 來發出 http request
      -H/--header  設定 request 裡所攜帶的 header
      -i/--include   在 output 顯示 response 的 header
      -d/--data       攜帶 HTTP POST Data
      -v/--verbose 輸出更多的訊息方便 debug
      -u/--user       攜帶使用者帳號、密碼
      -b/--cookie   攜帶 cookie(可以是參數或是檔案位置)
    • 使用 curl 傳送通知給Line Notify對應通知對象的指令格式:
      • 文字訊息內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息內容>' https://notify-api.line.me/api/notify
      • 包含圖片的通知內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息>' https://notify-api.line.me/api/notify -d 'stickerPackageId=1' -d ' stickerId=407'
      • stickerPackageId 及 stickerId 的代號,可以參閱:
        https://devdocs.line.me/files/sticker_list.pdf  
      • 如果沒得可以執行 curl 的主機,可以用online curl
        https://onlinecurl.com/  
      • LINE Notify的參考文件: https://notify-bot.line.me/doc/en/ 
使用Python搭配 curl 發送 Line Notify :
  • 參考程式碼:
    import os
    zToken='***TheTokenCode***'
    zMsg='2882國泰金目前股價=41.3'
    zCmd="curl -i -X POST -H "
    zCmd=zCmd+"'Authorization: Bearer " + zToken + "' "
    zCmd=zCmd+"-d 'message=" + zMsg + "' "
    zCmd=zCmd+"https://notify-api.line.me/api/notify"
    os.system(zCmd)
  • 執行結果:
    HTTP/1.1 200
    Server: nginx
    Date: Wed, 17 Jul 2019 09:08:31 GMT
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Keep-Alive: timeout=3
    X-RateLimit-Limit: 1000
    X-RateLimit-ImageLimit: 50
    X-RateLimit-Remaining: 998
    X-RateLimit-ImageRemaining: 50
    X-RateLimit-Reset: 1563357895

    {"status":200,"message":"ok"}
  • 發送的通知內容:

參考資料:

沒有留言:

張貼留言