(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【LINE Notify】curlコマンドによるメッセージの自動送付

スポンサーリンク

はじめに

LINEのBotはアクセストークンさえ発行すればPythonやその他の言語を用いて通知の自動化を行えます。
ただし、curlコマンドが利用できる環境であればそんなことしなくてもワンライナーで代替できるのでその流れをメモしておきます。

curlコマンドバージョン
# curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.36 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

Bot作成の流れ

アクセストークンの取得、アクセストークンを利用したcurlコマンドのスケジュール化、となります。

LINEのアクセストークンを取得する

ブラウザからLINE Notifyのサイトにアクセスし、ラインアカウントでログインします。
ログイン時にLINEから以下が届きました。

LINE Notifyにログインしました。
IP Address : X
心当たりがない場合はアカウント情報を変更してください。

その後はマイページからアクセストークンの発行(開発者向け)という項目をクリックし、アクセストークンを取得しました。

ここで発行されるアクセストークンはパーソナルアクセストークンと呼ぶらしく、Webサービスの登録等は不要です。

逆に、サービス提供者がこのサービスを利用する場合はサービスURLやメールアドレス、Callback URL等の登録が必要のようです。

パーソナルアクセストークンの発行に必要なのは「From」と「To」だけです。

Fromは通知する際の識別子のようなもので任意の値を設定できます。今回は、LINE BOT としました。
Toは通知の送り先で、自分か自分が所属するグループを選べます。今回は、自分 を選択しました。

これだけで大文字小文字が入り乱れた半角英数の文字列が発行されます。この文字列を引数にcurlコマンドを打てばLINEbotの完成です。

このアカウントを発行すると自動的に「LINE Notify」からクマのスタンプとPersonal Access Token を発行しました というメッセージが自分宛にラインで送られてきます。

curlコマンドで通知を送る

以下のワンライナーで通知が送れます。

# curl -X POST -H 'Authorization: Bearer <TOKEN>' -F 'message=<BODY>' https://notify-api.line.me/api/notify

変更する箇所はTOKENとBODYで、TOKENには発行したアクセストークン、BODYには任意の文字列を入れます。

例えばアクセストークンがABCDEで送りたいメッセージがHelloの場合は以下のようにコマンド押下し、返り値も以下です。

# curl -X POST -H 'Authorization: Bearer ABCDE' -F 'message=Hello' https://notify-api.line.me/api/notify
{"status":200,"message":"ok"}

LINE Notifyから

[LINE Bot] Hello

とメッセージが来ます。文字列は日本語でも問題なく表示されました。

ちなみにアクセストークンが間違っていると

{"status":401,"message":"Invalid access token"}

と返ってきます。

文字数の制限は不明ですが、300文字くらい入れても問題なかったので普段使いでは制限にかかることもなさそうです。
本コマンドをスケジューラに登録すれば自動Botの完成です。

終わりに

LINEのBot作成ですが、かなり簡単に行えます。
毎朝何かを確認するようなルーティーンがある方は、自作ボットでその手間をライン画面の確認で割愛することもできそうです。日常に溶け込んでいるLINEを情報の取得元として利用できるのはかなり便利なので、個人でも色々活用したいと思います。

同様の事に興味がある方のご参考になれたら幸いです。