(追記)2025年3月31日をもって、LINE Notifyのサービスを終了するようですが、messaging-api
を使えば引き続き使えそうです。
2025年3月31日をもって、LINE Notifyのサービスを終了します
Messaging API
MATLABで長期の計算をしている多くは,年末年始などの長期休暇のときに計算機に頑張ってもらうということがあるかと思います。
特に,卒論や修論を控えている学生さんも多いのではないでしょうか。
そこで,以前,計算後に計算完了あるいはエラーがでたことを通知するために
という記事にて,MATLABでメール通知を実装させましたが,LINEの方が便利だなと思い実装させました。
準備するもの・環境
LINEへの通知は LINE notify を使用します。
パソコン環境は特に指定していませんが,環境構築の手間を省くため,WindowsはPython不要にしています。
- MATLAB
- LINE notify
(Unix系) - Python (バージョンはMATLABがサポートしているバージョンであれば何でも可)
- requestsパッケージを使用するため,pip等を用いてインストールしておいてください。
手順
1.LINE notifyからアクセストークンを発行
具体的な発行方法はこちら等に記載していますので,そちらを参照してください。
アクセスコード(例:dBHta…)を取得します。
2.(Windowsの場合)コマンドラインの文字列を作成
コマンドラインからLINE通知を送ることができます。具体的な方法等はコマンドラインから LINE にメッセージを送れる LINE Notify
に記載していますので,こちらを参考にして,1で取得したアクセスコードと送りたい文章を変数として,コマンドラインの文字列 cmd
を作成します。
Key = "xxxxxxxxxxxxxxxxxxxxxxx"; % アクセスコード
messages = "送りたい文章"; %送りたい文章を書く。数値等を送る場合は `num2str` を用いる。
cmd = strcat("curl -X POST -H ""Authorization: Bearer ",Key,""" -F ""message=",messages,""" https://notify-api.line.me/api/notify");
この変数 cmd
をコマンドラインに送ることでLINE通知を送ることができます。
system(cmd);
なお,送信する文字が日本語の場合,LINEの文章が文字化けすることがあります。その際は,windowsシステムをUTF-8
に変更してください。
【参考】
【Windows 10】文字コードを「Shift-JIS」から「UTF-8」に変更する方法!
(Unix系の場合)
上記の同様のプログラムをPythonで作成します。以下は基本的なプログラムです。
import requests
Key ='xxxxxxxxxxxxxxxxxxxxxxx'
messages = '送りたい文章'
def send_message(Key,messages):
headers = {"Authorization": f"Bearer {Key}"}
Data = {
"message": (None, "\n" + messages )
}
requests.post(
"https://notify-api.line.me/api/notify",
headers=headers,
data=Data,
)
あとは,これを pyrunfile(lineNotification.py)
py.lineNotification.send_message
などでMATLABから呼び出せばLINEを送れるでしょう。
【参考】
関数化
上記でLINEに通知できるかと思いますが,文章を文字配列として引数にした関数化すると便利になります。
具体的な説明は省略しますが,GitHubで公開していますので,自由にお使いください。
try ~ catch
を使用すると,計算エラーが出た場合にエラー文を送信させることもできます。