ゆっくり技術ノート!

いつかきっとできるだろうよ

Ruby で Pushbullet を使う

PushbulletAPI を使って各デバイスに通知を送ってみる

Pushbullet

Pushbullet はブラウザ又は Mac/Windows/iOS/Android のアプリからアクセスできて特定のデバイスにテキストや地図、ファイル等を送信できる。送信を受けたデバイスには通知センターに表示できる
今回はこれを使って Mac から任意のタイミングで iPhone にpush通知 を送るようにしたい

Gem インストール

Ruby で扱うための gem が公開されていたのでこれをインストール

gem install washbullet

自分のアクセストークンを Pushbullet の Setting から入手

32桁の文字列がアクセストークンになっている

アクセストークンを使って API から自分のid とデバイスのid を調べる

ターミナルで以下のコマンドを実行する

自分のid

curl -u Your_Token: https://api.pushbullet.com/v2/users/me

デバイスのid

curl -u Your_Token: https://api.pushbullet.com/v2/devices

JSON が帰ってる。 "iden":に続く文字列がidになる

取得したidで通知を送る

require 'washbullet'

client = Washbullet::Client.new('Your_Token')

client.push_note('Your_Device_Id', 'title', 'messege')

これを実行するとで送信された

f:id:Coro:20150201222227p:plain

id を Ruby から調べる

手動でidを読むのは面倒なのでアクセストークンを入力すると自動で自分のid と Pushbullet に登録されたデバイスのid を返すようにしてみた

require "json"

def getUserId (token)

    api_response = `curl -s -u #{token}: https://api.pushbullet.com/v2/users/me`
    userId = JSON.parse(api_response)

    return userId["iden"]
end

def getDeviceId (token)

    api_response = `curl -s -u #{token}: https://api.pushbullet.com/v2/devices`
    deviceInfo = JSON.parse(api_response)

    deviceIds = Array.new
    deviceInfo["devices"].size.times do |i|
        deviceId = deviceInfo["devices"][i]["iden"]
        deviceName = deviceInfo["devices"][i]["nickname"]
        deviceModel = deviceInfo["devices"][i]["model"]

        deviceIds.push([deviceId, deviceName, deviceModel])
    end

    return deviceIds
end


token = "Your_Token"

p getUserId (token)
p getDeviceId (token)

実行すると自分のidとデバイスid,デバイスのニックネーム,デバイスモデルが表示される

参考ページ

  1. Pushbullet API Documentation
    • 公式ドキュメント
  2. hrysd/washbullet
    • 今回使ったgem、お世話になります
  3. Ruby 1.9 以降で JSON を扱う - 見上げれば、空

ありがとうございます。