自宅電話の着信をLine Notifyへ通知する

Line notifyの修了により、このページは終了となります。(2025/3/22

前回、作成した電話着信お知らせや家庭菜園通報機能をLINEに通知させるために「LINE notify」を使用します。

Line notifyを登録すると「1対1のトークルーム」へ自動的に通知を行うことができます。

メールアドレスの確認

まずはLINEから登録した時のメールアドレスとパスワードを確認します。

LINEを開いて下部の「ホーム」を選択後、右上の歯車アイコンを選択し「設定」を選択します。


「アカウント」を選択します。


ここに登録時の「メールアドレス」がのっています。パスワードは忘れたなら変更なりしてください。

LINE Notifyの登録

さあ!イザッ登録でいきなりハマりました。(汗

下記のホームページへアクセスします。

ページ右上の「ログイン」を選択し先ほどのメールアドレスとパスワードを入力するとログインできます。ログインできたら「マイページ」を開きます。


「マイページ」に入ると下部に「トークンを発行する」ボタンがでるとWEBに書いてありましたが、出てこない!!

な!?何故だ.....


書いてあるページあるのかな!?これスマホでは「トークンを発行する」ボタンがでてきません。パソコンからアクセスしたら出てきました。ここで少しハマリました。

と言う事で、気を取り直してパソコンにてアクセスします。

ログオンすると「トークンを発行する」ボタンが出てきました。

これを待ってました。(笑


トークン名を記入してください」へ下画像では仮に「bot」と入れます。

自動で投稿してくれる名前がbotだと寂しいので、後に短くて良い名前に作成し直しました。(汗

グループを先に作成して、そこに自動投稿もできるのですが、私、ボッチッなので「1:1でLINE Notifyから通知を受け取る」を選択しました。

「発行する」を選択します。


「発行したトークンはこちらです。」でモザイクがかかっている所を「コピー」でコピペします。

これキー列が長いので「コピー」でコピペしないと表示上、隠れている部分があるので取りこぼして、再度、やり直しとなるので注意してください。

無事、キーをコピーできたら「閉じる」を選択します。


しっかり開始できると以下の画像のようになります。


次の操作はスマホです。

LINE公式からLINE Notifyの表示がでてくるので「LINE Notify」を「友だちに追加」してください。

友達にならないとできません(笑


「追加」を選択します。


無事、つながると以下のような画像となります。

※一部bot確認時の表示が含まれています。

LINE Notify動作確認

ここからはサーバーよりコマンド操作となります。

curlのパッケージがなければインストールしてください。

# curl -X POST -H “Authorization: Bearer ここにはキー” -F “message=ABC” https://notify-api.line.me/api/notify


成功すれば、以下のように「bot」から「ABC」という言葉が投稿されます。

Pythonプログラム

あまりパイソンを使っていないので日本語エンコードの要領が分かりませんでしたが、最初の方でエンコーディングを指定してあげないとダメなようです。

# -*- coding: utf-8 -*-

上記コードを入れないと以下のようなエラーとなります。

File “./message.py”, line 8
SyntaxError: Non-ASCII character ‘\x82’ in file ./message.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


requestsのライブラリを使用するので記述します。

notify apiのアドレスとアクセストークン及びヘッダを記述します。

アクセス権は与えてあげてください。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

token = “**************************************”
url = “https://notify-api.line.me/api/notify”
headers = {“Authorization”: “Bearer ” + token}
payload = {“message”: “投稿できたぜ!”}
requests.post(url, headers=headers, data=payload)


実行すると、下画像のように投稿されます。

※一番下は、最終的に作成した投稿です。LINEスタンプも表示できます。

LINEスタンプを表示させてみる

LINEスタンプには固有の番号があるのでそれを指定します。

ラインスタンプコード表

「stickerId」が「STKID」の番号となっています。

#!/usr/bin/env python

import requests

token = “********************************”
url = “https://notify-api.line.me/api/notify”
headers = {“Authorization”: “Bearer ” + token}
payload = {“message”: “kore”,”stickerPackageId”:1, “stickerId”:403}
requests.post(url, headers=headers, data=payload)


実行すると以下画像のように怯えた画像が登録されます。

絵文字も文字の前に付けたかったのですが、色々、調べましたができませんでした。PHPではやり方が書いてありましたが、Pythonは難しいようです。

nkfで文字コードを変更してみたりしましたができませんでした。

UTF-32Bを指定してあげるみたいですが、分かる方いたら教えてください。

参考までに 絵文字の文字コード表

シェルとPythonを連携させて、更に改行コードも入れてみる

ここが肝心な所です。

自宅電話の着信をSyslogから受け取りスマホへメールでお知らせする

上記で作ったシェルと連携させます。

Python側はシェルからの引数で表示を整形します。

シェル側には以下を追加します。

*は自分で作ったpyの名前が入ります。で引数はシェルで使っていた変数名となります。それを引数の第1引数、第2引数として使います。

#LINE he message
/usr/bin/python ******.py $DATA_FST $DATA


上記*と同じ、自分すきな名前.py です。

引数はデブルクォーテーションで閉じてしまうとダメなので2バイト文字と改行コードのみ囲みます。

改行は色々と試しましたがWindowsデフォの\r\nで改行できました。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import sys

msgs = sys.msgv

message = “からお知らせです\r\n\r\n自宅に電話がありました\r\n\r\n” + msgs[1] + “さんから電話です。\r\n電話番号:” + msgs[2]
token = “********************************”
url = “https://notify-api.line.me/api/notify”
headers = {“Authorization”: “Bearer ” + token}
payload = {“message”: message}
requests.post(url, headers=headers, data=payload)


見事、シェルとLINEが連携できました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です