Pushover使ってみた

Pushover

PushoverはiOS/Androidの通知アプリ.提供されるシンプルなAPIを介して,アプリに通知を送れる.HTTP POSTさえできればよいので,Shell Scriptからでもrubyやperlからでも簡単に通知が送れる.

Rubyを使って遊んでみた.

require 'net/https'

url = URI.parse("https://api.pushover.net/1/messages.json")

req = Net::HTTP::Post.new(url.path)
req.set_form_data({
                    token: "****",
                    user:  "****",                    
                    message: "Check this link, http://deeeet.com/",
                    title: "お知らせ",    
                    device: "tcnksm_iphone",        
                    url: "tel:117",
                    url_title: "Call now",
                    sound: "alien"
                    })
                    
res = Net::HTTP.new(url.host, url.port)
res.use_ssl = true
res.verify_mode = OpenSSL::SSL::VERIFY_PEER
res.start {|http| http.request(req)}

userはsign upするともらえるUser Key.tokenはアプリを登録するともらえるAPI Token. messageは通知の本文. この3つが必須でこれだけでも通知は可能.

titleは通知のタイトル.指定しない場合は登録したアプリ名が使われる.deviceは通知したいデバイスを指定する.指定しない場合は登録されている全てのデバイスに通知される.

通知は以下のような感じ.

通知をタップすると,詳細が表示される.

通知本文内のURLは自動で判別されるため,ブラウザで開くことができる.urlurl_titleパラメータを与えれば,追加でURLを送ることもできる.これで長いURLも送ることができるし,アプリのURLスキームも使えるので,例えば上のようにtel:117とすれば,タップでそのまま電話アプリを開いて117に電話するなんてこともできる(117はありえんが).またsoundパラメータで通知音を変更することもできる.使える音はここにある.

priorityパラメータで通知のレベルも変更することができる.レベルは,Low(-1),Normal(0),High(1),Emergency(2)の4つがある.

  • Low: 通知は送られるが,通知音は鳴らない
  • Normal: デフォルト.自分で設定するQuiet Hoursの間は通知音は鳴らない
  • High: Quiet Hoursであっても通知音が鳴る
  • Emergency: 通知内の確認ボタンをタップするまで通知音が鳴り続ける

例えば通知のレベルをHighにすると,通知は以下のように赤色になる.

通知のレベルをEmergencyにする場合は,以下のようにretryで通知の間隔,expireで通知の持続時間を指定する必要がある.

req.set_form_data({
                    token: "****", 
                    user: "****",  
                    title: "めっちゃ緊急!",
                    message: "Something happen",
                    priority: 2,
                    retry: 30,
                    expire: 300,
                    })

通知は以下のように,Highより赤く表示される.

通知を止めるには,メッセージを開いて”Acknowledge Notification”をタップする必要がある.

ざっと触ってみたけど簡単だった.基本,障害通知を意識して作られてる印象あるけど,もっといろいろ面白い使い道がありそう.IFTTTのRecipeも作れるようになってる.IFTTTでは物足りないときに簡単にスクリプト組めそうでよい.

rubyしか見てないが,gemも既にある,erniebrodeur/pushover

参考