#FJMK blog

citrus+というバンドをやってます。 http://citrusplus.jp 平日昼間はインターネットの会社@紀尾井町でエンジニアやってます。

LINE Notifyでコードから通知してみた

f:id:sfjmk:20170903211709p:plain 以前から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 f:id:sfjmk:20170903205613p:plain

ログインします
f:id:sfjmk:20170903205633p:plain

こんなページに遷移しますしますがが、通知するだけならサービスの登録は必要ないので、右上のメニューから、「マイページ」へ
f:id:sfjmk:20170903205626p:plain

アクセストークンの発行をします。
f:id:sfjmk:20170903205622p:plain

送信対象のグループを選択

これで発行されたので、コピーしておいてください。

(確かこの辺で)LINE Notifyからメッセージが届きます。

通知したいグループにLINE Notifyを招待しましょう。(LINE Notifyからの1対1の通知ならこの手順はいらないはずです)

これで準備はOKです。

使ってみる

とりあえずコマンドラインからメッセージを送って確認

APIのドキュメントははこちら
line-notify-api.pdf

今回使うパラメータはこのへんです。
f:id:sfjmk:20170903205719p:plain

まずコマンドラインから試してみます。

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との連携も試してみると良いかもしれません。