050plusの着信をSMSで知る方法

まず、結論から申し上げると、050plusのサービスとしてはSMS通知機能を持っていません。そのため、何か設定するだけでOKという話にはならないのですが、自分で使えるサーバを持ち、プログラミングが多少できるなら、なんとか出来るのです。この記事では、その方法を説明します。

なぜ、必要なのか

私がXperia mini proという、電池の持たないスマホを使っているからです。

電力消費を少なくするため、Juice Defenderというアプリを使っています。これは、画面が消えているときに3G通信を抑制して、例えば15分に1回だけ通信させるといった方法で電力消費を減らします。
最近のXperiaにはスタミナモードが搭載されているものがありますが、あれも同じ方式です。

3G通信を抑制してしまうと、その間は050plusが使えません。画面を表示させると3G通信も復活するので、050plusは使えるようになるのですが、画面が消えているときは着信できないわけです。

その間も、普通の電話は着信します。機内モードにしてしまうわけではないので。電話が着信するということは、SMSも受信できます。ここが目の付け所です。

全体像

Calling architecture

050plusは不在着信か留守電登録があると、前もって指定しておいたメールアドレスにメールを送信してくれるサービスがあります。
ふつうはこれで良いのでしょうが、上記のとおり、私の環境ではメールも受け取れないので、自前のサーバ上のPostfixで受信し、そこからTwilio APIを叩くプログラムが動きます。
TwilioはSMSを送信できるので、それをXperia mini proで受信するわけです。

Twilioと契約してアメリカの電話番号を取得する

Twilio

Twilio for KDDI Web Communications | クラウド電話API

Twilioは、APIを使った簡単なプログラムで、電話の発着信、SMSの送受信ができるサービスです。日本ではKDDIが提供しています。

Twilioについては上記公式サイトのほか、ASCII.jpの記事が詳しいので、その辺を参考に。

Twilioにサインアップすると、たぶん日本の050番号が発番されると思います。
日本の電話番号だと、SMSの受信は出来るのですが送信が出来ないので、SMS送信が可能な国の電話番号を取得します。

Twilioだと、海外の電話番号を取得するのは簡単です。今回はアメリカの番号を取得しました。市外局番も自分で選びます。なんとなく、格好良さそうだったのでブルックリンにしました。

050plusで不在着信と留守電をメールで知らせるように設定する

下記のキャプチャは、Android版050plusアプリでのものです。

Screenshot 2014 06 20 07 35 19

Screenshot 2014 06 20 07 35 43

Screenshot 2014 06 20 07 36 31

サーバにプログラムを組み込む

twilio-ruby gemをインストールする

Twilio APIをRubyから使うために、twilio-rubyというgemをインストールします。


gem install twilio-ruby

こんなプログラム

/usr/local/bin/calling.rbとします。
1行目のrubyのパスは環境によって異なるでしょう。
また、電話番号は+1や+81といった国番号から入力します。


#! /usr/local/rvm/rubies/ruby-1.9.3-p547/bin/ruby

require 'twilio-ruby'

account_sid = '(Twilioのaccount_sid)'
auth_token = '(Twilioのauth_token)'

str = ""
src = ""

header = true
footer = false

nttcom = false

while line = STDIN.gets
  src << line

  nttcom = true if line.index("050plus.com")
  str = "" if nttcom and line.index("There was ")
  footer = true if nttcom and line.index("Call back from")

  str << line if header == false and footer == false

  header = false if line.chomp() == ""

  footer = true if nttcom and line.index("No.of")
end

if nttcom
  @client = Twilio::REST::Client.new account_sid, auth_token
  @client.account.messages.create({
    :from => '(Twilioで取得したアメリカの電話番号)',
    :to => '(SMS送信先の電話番号)',
    :body => str
  })
end

ファイルを作ったら、実行権限を付けておきます。

Postfixの設定

メールが届いたら上記のプログラムが起動すれば良いので、Postfixの設定をしておきます。
/etc/aliasesに下記の行を追加します。


foo: "| /usr/local/bin/calling.rb"

fooは、050plusからメールが送られてくるアカウントです。
追記が終わったら、newaliasで反映します。

出来ました!

Screenshot 2014 06 20 07 37 15

なぜ、ロビンなのか

無事、050plusの着信をSMSで知ることができるようになりました。私は、これと同じ方法でチャットワークの未読も知っています。TwilioはSMSの送信ごとにお金がかかるので、あまり頻繁に使うとマズいのですが、送信回数を限定すれば、他にも応用は効きそうです。

ちなみに、私のXperiaではTwilioから送ったSMSがロビンから来たように表示されていますね。
これは、電話帳でTwilioで取得した電話番号をロビンと登録しているからというだけですが、なぜロビンなのでしょうね。

そもそも、ロビンというのはTHEポッシボーというグループにいる岡田ロビン翔子のことなのですが。

2つの説があります。

A説、通知を050plus→メール→SMSとたらい回しにしている様子がラウンドロビンっぽかったから。
B説、来るメッセージがたいてい英語で、しかもアメリカから来るから。

ただ、ロビンはアメリカで生まれて7歳まで過ごしたのですが英語がしゃべれないので、A説の可能性が高いようですw ←それが言いたかっただけやん。

Xoxorobin19
https://twitter.com/xoxorobin19/status/199501531396050944

この記事を書いた人

井上 研一

経済産業省推進資格ITコーディネータ/ITエンジニア。
合同会社井上研一事務所代表、株式会社ビビンコ代表取締役。
北九州市出身、横浜市在住。AIやIoTに強いITコーディネータとして活動。北九州市主催のビジネスコンテスト「北九州でIoT」に応募したアイディアが入選し、メンバーと株式会社ビビンコを創業。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。セミナーや研修講師での登壇多数。