【超便利&お手軽】Python + LINE NotifyでLINEメッセージ送信


curl を使ってメッセージを送ってみる

LINE Notifyで発行できる「パーソナルアクセストークン」を使い、APIのエンドポイントにHTTP POSTリクエストを送るだけでメッセージを送ることができます。HTTPリクエストができればどんな方法でも使うことができますが、ここではコマンドラインで使えるHTTPクライアントであるcurlを使ってみることにします。

LINE Engineering Blogより

コマンドラインからcurlを使ってLINEメッセージを送れることを紹介しています。HTTP POSTでメッセージ送信できるとは。簡単じゃありませんか。
わざわざIFTTT経由で送信していたのがアホらしい。

1. 前提

  • ラズパイ
  • Python 3.6
  • LINE Notifyとお友達

2. アクセストークンの発行

LINE Notifyのマイページにログインして、「アクセストークンの発行(開発者向け)」の「トークンを発行する」をクリック。

 

任意の「トークン名」を設定
「1:1でLINE Notifyから通知を受け取る」を選択
「発行する」をクリック

 

トークンをコピーします。

3. requestsをインストール

Python標準のurllib.requestを使えばHTTP POSTを実行できますが、手続きが面倒くさいので、requestsを使うことにします。

requestsは、Python公式がお勧めしているほどのお勧めパッケージです。いずれ公式に取り込まれるのかも。

See also: The Requests package is recommended for a higher-level HTTP client interface.

Python 公式より

ターミナルで、pipコマンドにてインストールします。

 

4. Pythonでテスト送信

Pythonスクリプト(test.py)を作成して実験してみます。
tokenには、さっき発行したもの設定します。
‘Hello World’が送信するメッセージです。

 

スクリプトの実行とその結果。
200が返ってくれば成功です。

 

iPhoneのLINEアプリにメッセージが届きました!
さっき設定したトークン名が先頭に付いています。
超簡単ですね。

 

5. 標準入力をLINEに送信するPythonスクリプト

メッセージを標準入力から受け取り、LINE送信するPythonスクリプト(line_notify.py)です。

改行を含む複数行のメッセージをLINEに送信することができます。
環境によって改行コードが異なる(例えばMacはCR)ため、LINEの改行コード(CR+LF)に変更する処理を行っています。

 

ターミナルにコマンドを打ち込んで実験してみます。
まずは、echoコマンドの標準出力をline_notify.pyの標準入力へ繋いでみます。

メッセージが届きました!

 

テキストファイル(test.txt)の内容をLINEへ送信してみます。
test.txtの内容は次のとおりです。

 

次のコマンドでLINEに送信します。

メッセージが届きました。
改行がちゃんと再現できてますね。

6. まとめ

今回は、ラズパイとPythonスクリプトで超簡単LINE通知を行いました。APIがPOSTなので、OSやプログラム言語の垣根を越えて扱うことが出来ます。

最後に紹介したスクリプトは、標準入力経由でLINEにメッセージを送信することができて、ものすごく汎用性が高いです。

温度異常を検知したらLINEで通知するとともにエアコンを起動する…など、ペット&高齢者を見守る自宅警備員ラズパイなんか作れそうです。夢が膨らみますね。

以上です。

Leave a Comment

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください