Line Notify 除了可以傳送文字訊息外, 還可以傳送貼圖 (sticker) 與圖片 (image), 本篇先來測試貼圖傳送, Line Notify 可以傳送的貼圖列表參考 :
Line Notify API 文件參考 :
本系列之前的文章參考 :
1. 使用 Curl 傳送貼圖 :
從 Line Notify 可傳送的貼圖列表可知, 貼圖被分成不同的群組 (Package), 每一個群組有其群組編號 (stickerPackageId), 每一個貼圖也有其編號 (stickerId), 只要所指定之貼圖編號是 Line Notify 有加入之群組就能傳送此貼圖 (例如群組 1 的貼圖 1~39, 101~139 等). 在 Linux 作業環境下可以用 curl 指令同時傳送文字訊息與貼圖, 指令格式如下 :
curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer 你的權杖' -F 'message=你的訊息' -F 'stickerPackageId=1' -F 'stickerId=貼圖編號'
以樹莓派為例 :
pi@raspberrypi:~ $ curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer ud7PaDL45fz849A0e1f5oaMCbRIkxMXapQCt7PfNkzz' -F 'message=貼圖測 試' -F 'stickerPackageId=1' -F 'stickerId=1'
{"status":200,"message":"ok"}
收到 200 ok 回應表示貼圖編號 1 推播成功, 結果如下 :
下面是傳送貼圖 2 的結果 :
pi@raspberrypi:~ $ curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer ud7PaDL45fz849A0e1f5oaMCbRIkxMXapQCt7PfNkzz' -F 'message=貼圖2測試' -F 'stickerPackageId=1' -F 'stickerId=2'
{"status":200,"message":"ok"}
下面是傳送貼圖 139 的結果 :
pi@raspberrypi:~ $ curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer ud7PaDL45fz849A0e1f5oaMCbRIkxMXapQCt7PfNkzz' -F 'message=貼圖139測試' -F 'stickerPackageId=1' -F 'stickerId=139'
{"status":200,"message":"ok"}
但若傳送之貼圖編號不在 Line Notify 所參加的群組 (例如 40, 100, 140 等), 則會出現狀態 400 的 "LINE Notify account doesn't join group which you want to send." 錯誤 :
pi@raspberrypi:~ $ curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer ud7PaDL45fz849A0e1f5oaMCbRIkxMXapQCt7PfNkzz' -F 'message=貼圖140測試' -F 'stickerPackageId=1' -F 'stickerId=140'
{"status":400,"message":"LINE Notify account doesn't join group which you want to send."}
查詢哪些貼圖是 Line Notify 可傳送的有更方便的方法, 那就是使用 "Flex 開發人員工具".
2. 用 Flex 開發人員工具查詢貼圖 :
有一位 Line API 高手戴均民開發了一個 "Flex 開發人員工具" 用來查詢貼圖很方便, 只要掃下列 QR code 加入好友, 即可在 Line 中輸入特定訊息查詢貼圖 :
或點下面的超連結亦可 :
加入好友後發送如下格式的訊息即可查詢指定 PackageId 與 StickerId 之貼圖 :
- /replySticker PackageId StickerId
- /notifySticker PackageId StickerId
兩個指令基本上功能一樣, 但若 PackageId 或 StickerId 錯誤的話 /replySticker 不會有回應; 而 /notifySticker 則會傳回錯誤訊息. 也可以連續查詢 (最多 5 筆), 只要將多個 PackageId StickerId 序列以空格隔開排在後面即可, 格式如下 :
- /replySticker PackageId1 StickerId1 PackageId2 StickerId2 ..... (最多 5 個)
- /notifySticker PackageId1 StickerId1 PackageId2 StickerId2 ..... (最多 5 個)
例如 :
/notifySticker 1 1
/replySticker 1 1
/replySticker 1 1 1 2 1 3 1 4 1 5
/notifySticker 1 140
/replySticker 1 140
可見對於不可用的貼圖, notify 查詢無回應; 而 reply 查詢則回應錯誤訊息.
以下是群組 1 內 Line Notify 可傳送的部分貼圖 (1~18, 101~139) :
3. 用 Python 傳送貼圖 :
以上對 Line Notify 可傳送之貼圖了解之後便可以測試如何用 Python 來推播貼圖, 從 Line Notify API 文件 POST 方法的 Request 參數列表可知, 只要在 payloads 參數中傳入 stickerPackageId 與 stickerId 這兩個鍵, 指定群組與貼圖編號即可 :
程式碼如下 :
import requests
def notifySticker(msg, token, stickerPackageId, stickerId):
url="https://notify-api.line.me/api/notify"
headers={"Authorization": "Bearer " + token}
payload={"message": msg,
"stickerPackageId" : stickerPackageId,
"stickerId": stickerId}
r=requests.post(url, headers=headers, params=payload)
if r.status_code==requests.codes.ok:
return "貼圖發送成功!"
else:
return "Line Notify 未加入此群組!"
例如 :
>>> import requests
>>> def notifySticker(msg, token, stickerPackageId, stickerId):
url="https://notify-api.line.me/api/notify"
headers={"Authorization": "Bearer " + token}
payload={"message": msg,
"stickerPackageId" : stickerPackageId,
"stickerId": stickerId}
r=requests.post(url, headers=headers, params=payload)
if r.status_code==requests.codes.ok:
return "貼圖發送成功!"
else:
return "Line Notify 未加入此群組!"
>>> msg="test"
>>> token="ud7PaDL45fz849A0e1f5oaMCbRIkxMXapQCt7PfNkzz"
>>> notifySticker(msg, token, 1, 4) # 傳送群組 1 編號 4 貼圖
'貼圖發送成功!'
結果如下 :
但如果沒有回應的話, 就會顯示 "Line Notify 未加入此群組!", 例如 :
>>> notifySticker(msg, token, 1, 140)
'Line Notify 未加入此群組!'
沒有留言 :
張貼留言