2014年5月30日金曜日

ブラステル(050)に留守電や着信通知を付加する方法

ブラステル(050)には留守電や着信通知がありません。
また、不在着信を転送する機能もありません。

これらを実現するためには、AsteriskでソフトPBX(Linuxサーバ)を構築する必要があります。

しかし、Asteriskは普通の人には敷居が高すぎます。
私にはAsteriskを構築できるような、高度な技術がありません。




そこで難しいことは一切せずに、ブラステルに留守電と着信通知を付加する方法を紹介します。
なお、転送機能はブラステルの不思議な仕様を利用することでクリアします。



【ブラステルについて】

ブラステルは月額無料で利用でき、音声品質も最高クラスです。
さらに、他の競合するIP電話サービスに比べ、通話料も安く設定されています。

しかし、ブラステルが提供するサービスは純然たる電話機能のみです。
「FUSION IP-Phone SMART」にあるような留守電や着信通知などのオプションは一切ありません。

ブラステルはオプションなどを一切付けない代わりに、最高品質と最安値を維持しています。
ある意味、これはこれで好感が持てます。

・・・とは言いつつも、やはり留守電と着信通知は欲しいです。
さらに転送機能もあれば、言うことなしです。



【ブラステルの多重着信機能】

ブラステルは多重着信が可能です。
これが冒頭に言った「ブラステルの不思議な仕様」です。

通常のIP電話サービスは、複数のスマホに同一アカウントを登録した状態で、その番号に着信があると、一番最後に登録したスマホのみが鳴動します。

ところが、ブラステルは違います。
複数のスマホに登録すると、登録したスマホすべてが一斉に鳴動します。
そのうちのどれか1台で受話すると、その他の鳴動が止まります。

このように、ブラステルは同一アカウントで、複数のSIPクライアントを同時にレジストできます。

これを起点として、ブラステルで「着信転送」・「着信通知」・「留守電」を実現します。



【ブラステルに「着信転送」機能を付ける】

実はブラステルには着信転送機能を付ける必要がありません。

前述のとおり、複数台のスマホにレジストできることから、転送したい先(スマホ)にもブラステルを登録しておけば、同時に着信します。
これで、転送する必要もなく受話可能です。

(もっと高度な着信転送は、別記事として掲載予定です。)



【ブラステルに「着信通知」と「留守電」を付ける】

◆ 概要

ブラステルに「着信通知」と「留守電」を付けるためには、どうしてもAsteriskのようなPBX(回線切替機)が必要になります。

しかし、Asterisk構築は、PC(Linux)に精通していないと難しすぎます。
また、それ専用にPCを1台用意しなければなりませんし、そのPCを常時稼働させるための電気代もかかります。

そこで、Asteriskが担う仕事を、スマホのアプリ及びWEBサービスで実現します。

分かりやすくいうと、スマホを「PBXもどき」として、サーバ化します。
スマホであれば、超省電力のため、常時稼働サーバとしてこれ以上のものはありません。

具体的には、留守電機能のあるSIPクライアントを使い、着信や留守電を検知したら、その音声データを外部WEBサービスと同期し、同時にそれをメールで通知します。




◆ 準備

  • 使っていないスマホ(Android):1台
  • 通信のできる回線(SIMなしWi-Fi接続可)

    もし、余っているスマホがない場合は、型落ちの安いスマホを入手します。
    → アマゾンの白ロム検索ページ


    ◆ 必要なアプリ及びWEBサービス

  • AGEphone
  • IFTTT
  • Dropsync
  • Dropbox(WEBサービス)
  • Gmail(WEBサービス)



    ◆ 手順

    【1】 WEBサービスに登録する。(PCからでOK)
    まずはDropboxを登録します。
    無料で2GBの容量がもらえます。留守電データの保存用としては十分な容量です。
    さらに、(私の紹介という形で)このリンクから登録して頂くと、双方に500MB分追加されます。

    Doropboxサービスにログインし、Dropboxの直下に「Public」という名前でフォルダを作成します。

    さらに「Public」以下に、留守電データを保存するフォルダとして「Message」を作成します。

    (Gmailは既に登録してあるものとして割愛します。)

    【2】 各種アプリをインストールする。(スマホサーバ側)
  • AGEphone
  • Dropsync
  • IFTTT

    【3】 アプリの設定をする。(スマホサーバ側)

  • AGEphoneにブラステルのSIPアカウントを登録します。
     → コーデックは必ず「GSM」のみとしてください。(これ以外は正常に動作しません。)
     → 電源の管理で「スリープ状態での動作を維持する(WiFiは運用次第)」にチェックします。

  • Dropsyncの同期を以下フォルダに設定し、同期方法を『双方向』とします。
    (同期を「双方向」とすることで、スマホサーバ側の留守電の消去も簡単に行えるようになります。)

    スマホ側:/mnt/sdcard/AGEphone
    Dropbox側:/Public/Message

    「自動同期の間隔」を、最速の『5分』にします。
    「バッテリーの残量が~%の時のみ同期する」を『0%』にします。

  • IFTTTの設定をします。
    (IFTTTも簡単な設定だけで利用できます。)

    まずは「着信通知」を設定します。

    右上の「すり鉢(?)」のようなアイコンを押します。



    右上の「+」を押します。



    Start here!と書いてある「+」の部分を押します。


    「Android Phone Call」を選び「Any phone call missed」と進みます。



    続いて右側の「+」を押します。



    「Gmail」を選び「Send an email」と進みます。



    To addressに送信先のメールアドレスを入力します。



    後は「Continue」→「Finish」と押せば、「着信通知メール送信レシピ」完成です。


    続いて「留守電」を設定します。

    「Dropbox」を選び、「New file in your Public folder」と進みます。



    Subfolder nameに「Message」と入力して、NEXTを押します。



    あとは先ほどと同様に
    「Gmail」を選び「Send an email」と進みます。
    To addressに送信先のメールアドレスを入力します。
    「Continue」→「Finish」と押して「留守録メール送信レシピ」完成です。


    【4】 ブラステルにスマホサーバを優先的に認識させる。

    続いて、ブラステルにスマホサーバを単独で認識させます。
    理由は明らかではありませんが、この作業を行うことでスマホサーバがブラステル側に正常に認識されます。
    (この作業を行わないと、留守電機能が正常に使えません。)

    やり方は簡単で、まずはすべての機器をブラステルから切断します。
    (スマホならSIPクライアントの終了、ATAならLANケーブルを外すなど。)

    その状態で、スマホサーバを単独で起動します。
    (これで、ブラステルに接続されている機器はスマホサーバのみとなります。)

    続いて、スマホサーバ以外の機器を順にブラステルに接続します。



    【スマホサーバの動作確認】

    ブラステルに電話をかけてみます。


    AGEphoneが着信したことを確認後、電話を切ります。
     ↓
    着信通知メールがGmailに送られます。
    なお、この通知メールはスマホサーバ側の電話帳データを参照して、番号だけでなく名前も表示されます。
    (電話帳データを同期しておくと便利です。)


    AGEphoneが着信し留守電に切替ったら、音声を吹込み、電話を切ります。
     ↓
    まずは着信通知メールがGmailに送られます。
    その後、(1~3分後ぐらい)留守電メールがGmailに届きます。
    なお、留守電は1クリックで聞ける状態となっています。


    あとは、スマホサーバのWiFi接続が切れない設定とし(WiFi接続の場合)、充電ケーブルを繋げて放っておくだけです。

    ※ AGEphoneの留守電切替時間は適宜変更してください。
    ※ IFTTTの実行通知が煩わしい場合は、レシピの編集から「Receive notifications when this Recipe runs」をOFFにしてください。



    【まとめ・感想】

    この方法でブラステルに留守電と着信通知を付加できました。
    Asteriskと同等とは言えませんが、ブラステル専用のPBXとしては必要十分な機能ではないでしょうか。

    そもそも私はブラステルのためだけに、Asteriskを構築するつもりでしたので、これで十分です。
    (PBXを構築するつもりでCubox-i2を購入してしまったのですが・・・。)


    実運用の際に気を付けることは、以下の3点です。
  • Wi-Fi接続の維持
  • 必要最小限の構成
  • アプリの自動更新OFF

    機種によっては端末のスリープ後しばらくすると、Wi-Fiが切断されてしまうものがあります。
    こう言った機種においては、Wi-Fi接続を維持するアプリ(「Wi-Fi Keep Alive」など)を導入する必要があります。

    また、サーバ化するスマホには不要なアプリのインストールは避けるべきです。
    基本的に変なアプリさえ入れていなければ、Androidは非常に安定しています。
    必要最小限の構成とすることで、低スペック機でも安定動作してくれます。
    (私の場合、サーバはP-06Dとし、不要なアプリはすべてアンインストール・無効化しました。)

    なお、アプリの自動更新はOFFにしておいた方が良いです。
    これは、留守録中のアプリの再起動と、更新による新たなバグの発生を防ぐためです。
    (スマホとは言え、サーバの更新は手動で行うべきです。)


    今回、ここに至るまでに幾度となく諦めかけましたが、やっと完成です。
    しばらく実運用をして、安定性などを確認したいと思います。



    ◆【2014年6月3日 追記】

    外線からの着信に必ず失敗します。
    ブラステルからの着信では想定どおりの動作をしますが、その他の着信がすべて1コールで切れてしまいます。
    その状態でAGEphoneは鳴動し続けている状態です。(フリーズして終了できない状態)

    最初はAGEphoneの問題かと思いましたが、そうではないようです。
    ベータ版のAGEphoneでも同様の症状を確認しました。
    さらに、他スマホでも試しましたが同様の症状です。

    なぜ、AGEphoneの問題ではないと思ったかは、複数レジストしていないブラステルアカウントで同試験を行ったところ、問題なく動作したためです。

    これは、環境固有の問題かもしれませんが、もし、同症状が発生する方は教えて頂けると嬉しいです。
    「正常に使えた」という報告はさらに嬉しいです。

    以下私の環境です。
  • HT702(ATA) → 主ブラステル使用環境(イエデン)
  • P-06D → 留守電用スマホサーバ


    ◆【2014年6月6日 追記】

    以下の、2点を実行することで、1コールで切断される問題を解決できました。
  • 使用コーデックを「GSM」のみとする。
  • スマホサーバを一度、単独でブラステルサーバに登録する。

    上記については、記事本文も追記・修正しました。

    当初、スマホ機種の固有問題かとも思われましたが、そうではありませんでした。
    きっとこれで、どの機種でも動作させることが出来ると思います。
    なお、一度単独でブラステルサーバに認識させた機器は、次からは他機器より遅いレジストとなっても正常に動作します。

    皆様から多数の動作報告・不動作報告、及び検証データを頂いたおかげで、この結論に至れました。
    ありがとうございました!m(__)m

    このまま、しばらく安定性などを確認したいと思います。
    何かありましたら些細な事でもご報告頂けると助かります。


    ◆【2014年6月9日 追記】
    AGEphoneで「スリープ状態での動作を維持する」にチェックを追記しました。
    これにチェックしないと、スリープ状態で着信を取り逃すことがあります。