LINE Notifyでコードから通知してみた
以前からLINEではMessaging APIが提供されてましたが、最近また新たにLINE Notifyとかいうのが出たみたいです。
【LINE】chatbotの開発・普及に向けて新たな展開を発表、新たなMessaging APIを公開し、開発者への正式提供を開始 | LINE Corporation | ニュース
LINE、外部との通知連携サービス「LINE Notify」発表 GitHub、IFTTT、Mackerelと連携 - ITmedia ニュース
Messaging APIが出た時も一通り触ってみたりして、その時は結構使うの(というか使うまでの準備が)面倒だなーという印象があったのですが、今回は簡単に使えるようです。
LINEのAPIはツール用途というかあくまでビジネス用途がメインのイメージがあったのですが、いきなりハッカブルなものを出してきて驚きました。
面白そうなのでちょっといじってみます。
できること
LINE Notifyアカウントを友だち追加/グループ追加するだけで、API経由でスレッド内にLINE Notifyアカウントが投稿できるようになります。
まあ要するにSlack Botみたいなものが簡単に作れます。
以前から提供されていたMesseging APIとは別物なのかなーと思いましたが、以下のページをみてみると、どうやらMesseging APIを利用した一機能のようです。
Messaging APIのご紹介 | LINE Business Center
Messaging APIを使ってBotを作ろうとすると、自前でサーバー用意して、コールバックURLを指定する必要があったり、証明書を用意する必要があったりと何かと面倒でした。
が、LINE Notifyだとこの辺の準備をする必要がなく、tokenをつけてメッセージ内容をpostするだけで、LINEに投稿することができます。
(ただし、Bot→ユーザーへの一方通行で、Bot側への問いかけとかはできさそう)
この記事のゴール
こんな風に、コードの中から通知するところまでやってみます。
こんな感じ
準備
(一通りいじった後に手順確認したので、もしかしたら1回目だと手順が違うかもしれません。ただ、大まかな流れは変わらないはずです。もしかしたら事前に LINE Notify でLINE Notifyを友達追加する必要があったかも。)
LINE Notifyのページにアクセス
LINE Notify
ログインします
こんなページに遷移しますしますがが、通知するだけならサービスの登録は必要ないので、右上のメニューから、「マイページ」へ
アクセストークンの発行をします。
送信対象のグループを選択
これで発行されたので、コピーしておいてください。
(確かこの辺で)LINE Notifyからメッセージが届きます。
通知したいグループにLINE Notifyを招待しましょう。(LINE Notifyからの1対1の通知ならこの手順はいらないはずです)
これで準備はOKです。
使ってみる
とりあえずコマンドラインからメッセージを送って確認
APIのドキュメントははこちら
line-notify-api.pdf
今回使うパラメータはこのへんです。
まずコマンドラインから試してみます。
XXXXXXXXXXとなってるとこをトークンに置き換えてください。
こう叩くと、
$ curl -X POST -H 'Authorization: Bearer XXXXXXXXXX' -F 'message=テスト通知だよー' https://notify-api.line.me/api/notify
こんな風にメッセージを送れます。
画像つきでメッセージを送る場合はこう。
$ curl -X POST -H 'Authorization: Bearer XXXXXXXXXX' -F 'message=テスト通知だよー' -F 'imageThumbnail=https://i.gyazo.com/16cb870aba18e192d158dc085bba53d1.png' -F 'imageFullsize=https://i.gyazo.com/16cb870aba18e192d158dc085bba53d1.png' https://notify-api.line.me/api/notify
imageThumbnailとimageFullsizeに画像URLを渡します。
ソースの中からだとこんな感じ。
# ruby require 'net/http' require 'uri' require 'json' token = 'XXXXXXXXXX' uri = URI.parse('https://notify-api.line.me/api/notify') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.start do header = {} header["Authorization"] = 'Bearer ' + token header["Content-Type"] = 'application/x-www-form-urlencoded;charset=UTF-8' request = Net::HTTP::Post.new(uri.path, header) request.set_form_data({message: 'テスト通知だよー', imageThumbnail: 'https://i.gyazo.com/16cb870aba18e192d158dc085bba53d1.png', imageFullsize: 'https://i.gyazo.com/16cb870aba18e192d158dc085bba53d1.p ng'}) response = http.request(request) puts response.body end
こうすると、先ほどの例と同様にこんな感じで通知がきます。
サービス提供というよりかは、自分用の便利ツールと言うか立ちにはなると思いますが、色々できそうですね。
コンバージョンの通知だったり、ユーザーからの問い合わせの通知だったり、エゴサーチ結果の通知だったり、アラート通知だったり、、、
まあ、Slack使えばいいという感じもしますが、ギークじゃないコミュニティとかで使うときにはLINEでこういう通知をするのもいいかもしれません。
他サービスとの連携とか簡単にもできるっぽいのでIFTTTとかと組み合わせたら、プログラム書かなくても色々試せるので(例えば雨が降りそうな日は通知するとか、キーワードに引っかかったニュースを通知するとか?)、IFTTTとの連携も試してみると良いかもしれません。