iT邦幫忙

2023 iThome 鐵人賽

0
Software Development

跟著 OXXO 一起學 Python系列 第 90

( Day 43.1 ) Python LINE BOT 使用 Requests 傳送訊息

  • 分享至 

  • xImage
  •  

除了可以透過 LINE Message API 傳送訊息,LINE 也提供使用 requests 的方式傳送訊息,只要輸入正確的 Access Token,就能在任何地方與 LINE 溝通,這篇教學會介紹如何使用 Requests 傳送訊息。

取得 Access Token

參考「建立 LINE Channel」文章,建立一個 LINE Channel,在 Message API 頁籤裡,取得 Access Token。

reply message 回覆訊息

下方的程式碼,使用 requests 函式庫,搭配 LINE reply message 的 API,輸入收到訊息後的 replyToken,就能向發送訊息的使用者回覆訊息 ( replyToken 只有在收到使用者發送訊息時才會包含在訊息裡 )。

參考:Requests 函式庫解析 LINE 的訊息 ( 從訊息中可以看到 replyToken )

import requests, json
headers = {'Authorization':'Bearer 你的 access token','Content-Type':'application/json'}
body = {
    'replyToken':replyToken,
    'messages':[{
            'type': 'text',
            'text': 'hello'
        }]
}
req = requests.request('POST', 'https://api.line.me/v2/bot/message/reply', headers=headers,data=json.dumps(body).encode('utf-8'))
print(req.text)

push message 主動傳送訊息

下方的程式碼,使用 requests 函式庫,搭配 LINE push message 的 API,輸入指定使用者的 user ID,執行程式後,就能向使用者發送訊息。

參考:Requests 函式庫解析 LINE 的訊息 ( 從訊息中可以看到 user id )建立 LINE Channel ( 可以看到自己的 user id )

import requests, json
# 注意前方要有 Bearer
headers = {'Authorization':'Bearer 你的 access token','Content-Type':'application/json'}
body = {
    'to':'你的 user ID',
    'messages':[{
            'type': 'text',
            'text': 'hello'
        }]
    }
# 向指定網址發送 request
req = requests.request('POST', 'https://api.line.me/v2/bot/message/push',headers=headers,data=json.dumps(body).encode('utf-8'))
# 印出得到的結果
print(req.text)

文字訊息格式

使用下方的格式,會傳送文字訊息。

{
    "type": "text",
    "text": "Hello, world"
}

表情貼圖格式

使用下方的格式,會傳送指定的表情,packageId 為表情包 id,stickerId 為表情貼圖 id ( 參考:List of available stickers )。

{
    "type": "sticker",
    "packageId": "446",
    "stickerId": "1988"
}

圖片訊息格式

使用下方的格式,會傳送網路上的某張圖片 ( 需有圖片網址 ),originalContentUrl 表示原始圖片大小,previewImageUrl 表示訊息中的預覽圖片。

{
    "type": "image",
    "originalContentUrl": "https://example.com/original.jpg",
    "previewImageUrl": "https://example.com/preview.jpg"
}

影片訊息格式

使用下方的格式,會傳送網路上的某支影片 ( 需有影片網址 ),originalContentUrl 表示原始影片,previewImageUrl 表示訊息中的預覽圖片。

{
    "type": "video",
    "originalContentUrl": "https://example.com/original.mp4",
    "previewImageUrl": "https://example.com/preview.jpg",
    "trackingId": "track-id"
}

聲音訊息格式

使用下方的格式,會傳送網路上的某段聲音 ( 需有聲音網址 ),originalContentUrl 表示原始聲音,duration 聲音長度。

{
    "type": "audio",
    "originalContentUrl": "https://example.com/original.m4a",
    "duration": 60000
}

地點位置訊息格式

使用下方的格式,會傳送地點位置訊息,title 表示地點名稱,address 地址,latitude 緯度,longitude 經度。

{
    "type": "location",
    "title": "my location",
    "address": "1-6-1 Yotsuya, Shinjuku-ku, Tokyo, 160-0004, Japan",
    "latitude": 35.687574,
    "longitude": 139.72922
}

小結

透過 Requests 的方法,就能讓 LINE 的用途更加廣泛,除了上述的訊息格式,也可發送樣板按鈕、Flex Message...等,更多訊息格式可以參考:Message objects

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 42.2 ) Python LINE BOT 發送 Flex Message
下一篇
( Day 43.2 ) Python LINE BOT 使用 LINE URL Scheme
系列文
跟著 OXXO 一起學 Python101
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言