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は、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

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。