Python LINEでメッセージを送信

スポンサーリンク

本ページではPython3を使ってLINEのメッセージを送信する方法を紹介します。

スポンサーリンク

前提

LINEにメッセージを送るにはトークンが必要です。トークンはLINE Notifyというサイトから取得できます。
トークンは一つのIDにつき、一つのトークンしか発行できません。

LINE Notify
LINE NotifyはGitHub,IFTTT,MackerelなどのWebサービスからの通知を、LINEで受信することが出来る便利なサービスです。

取得の流れ

  • 上記サイトの画面右上にある「ログイン」からLINEのパスワードを使ってログインします。
  • ログイン後、また画面右上にある自分の名前のプルメニュー内にある「マイページ」をクリックします。
  • 表示されたページの下部にある「トークンを発行」をクリックします。
  • 「トークン名」を入力し、「グループ」を選択して「発行」をクリックします。
    トークン名は送信されるメッセージの頭に表示されます
  • 発行されたトークンをコピーします。失わないように大切に保管しましょう。

ライブラリ

LINEにメッセージを送るにはimport requestsというライブラリを使用します。標準ではないのでインストールが必要です。

pip install requests

基本

以下だけで送信できます。

  • message:送信したいメッセージを設定します。
  • access_token:LINEで取得したトークンを設定します。
import requests

message = "LINEを送信します"

access_token    = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

url             = "https://notify-api.line.me/api/notify"
headers         = {'Authorization': 'Bearer ' + access_token}

payload = {'message': message}
requests.post(url, headers=headers, params=payload,)

応用

送信されたか確認、送信されるまで続けるという仕組みを実装しました。

import requests
from time import sleep

message = "LINEを送信します"

access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

url             = "https://notify-api.line.me/api/notify"
headers         = {'Authorization': 'Bearer ' + access_token}


while True:

    try:
        payload = {'message': message}
        res = requests.post(url, headers=headers, params=payload,)

        if res.text == '{"status":200,"message":"ok"}':
            break
            
    except Exception as e:
        print ('type:' + str(type(e)))

    sleep(1)

その他

画像を送信

requests.postfilesを追加するだけです。メッセージが空の場合は400のエラーになって送信されないので注意してください。

import requests

message = "LINEを送信します"
images = "sample.png"

access_token    = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

url             = "https://notify-api.line.me/api/notify"
headers         = {'Authorization': 'Bearer ' + access_token}

payload = {'message': message}
files = {'imageFile': open(images, 'rb')}
requests.post(url, headers=headers, params=payload, files=files,)

スタンプを送信

payloadstickerPackageIdstickerIdを設定します。stickerPackageIdstickerIdは以下より取得してください。特殊なスタンプの送信やIDなどはわかりません。。。

https://devdocs.line.me/files/sticker_list.pdf

import requests

message = "LINEを送信します"
stickerPackageId = 13
stickerId = 1

access_token    = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

url             = "https://notify-api.line.me/api/notify"
headers         = {'Authorization': 'Bearer ' + access_token}

payload = {'message': message, 'stickerPackageId': 1, 'stickerId': 13,}
requests.post(url, headers=headers, params=payload,)

 

コメント

タイトルとURLをコピーしました