Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

LINE NotifyをPythonでお試し

LINE Notifyは、外部のWebサービスと連携させて、そこからのメッセージをLINEのトークルームで受信できる通知機能です。
指定されたLINE NotifyのURLにメッセージを投げる(POSTする)ことで自分のLINEのトークルームにそのメッセージを送ることができるので、自分でプログラムを書いて利用することも簡単。ということで、Pythonで試してみましょう。(既にほぼ同内容の記事がありますが、自分の備忘録ということで。。。)

1. LINE Notifyの初期設定

  1. 上のページから自分のLINE IDでログイン
  2. 右上の自分の名前のところからマイページにアクセス
  3. 「アクセストークンの発行(開発者向け)」から「トークンを発行する」を選ぶ LINEnotify1.png
  4. 「トークンを発行する」画面で、
    • トークン名を記入(毎回メッセージの最初に表示されるのでなるべく簡単に)
    • 「1:1でLINE Notifyから通知を受け取る」で自分だけに通知が来ます。他にLINEグループも選択できます。選んだら「発行する」。
      LINEnotify2.png
  5. トークンをコピペ
    LINEnotify3.png
  6. トークンを発行すると自分のLINEにLINE Notifyからメッセージが来ます
    LINEnotify4.png

2. Pythonスクリプト

これだけです。

import requests
token = "XXXXXXXXXXXXXXXXXXXXXXXX"
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization": "Bearer " + token}
payload = {"message": "テストメッセージだよ"}
requests.post(url, headers=headers, data=payload)

指定のURLに"message"を伝えてあげることで、認証情報(アクセストークン)をもとに、LINEがそのメッセージを自分のところへ届けてくれます。XXXの羅列は上でコピペしたトークンに代えてください。

このスクリプトを実行すると、以下のようにLINE Notifyからメッセージが来ます(設定したトークン名が[ ]で囲われたところに表示されます)。
LINEnotify5.png

簡単ですね!!!


補足

アクセストークンのような他人に漏れるとヤバい情報をコードの中に書くのはよろしくないので、OSの環境変数に書いておき、スクリプトの中でそれを読み込む、という形が良いようです。
(シェルがbashの場合)~/.bash_profileに
export LINE_ACCESS_TOKEN="XXXXXXXXXXXXX"
を書き込んでアクセストークンを環境変数に設定し、上のPythonコードの上2行を

import os, requests
token = os.environ["LINE_ACCESS_TOKEN"]

に変更します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
19
Help us understand the problem. What are the problem?