本ページでは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.postにfilesを追加するだけです。メッセージが空の場合は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,)スタンプを送信
payloadにstickerPackageIdとstickerIdを設定します。stickerPackageIdとstickerIdは以下より取得してください。特殊なスタンプの送信や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,)

コメント