2014年7月28日月曜日

データ契約SIMでキャリア通話をする(ドコモの携帯をAsteriskに収容した)

「ひかり電話を持ち歩く」というのは良く聞く話ですが、同じ理屈でドコモの携帯を使えるようにしてみました。
これで、データ契約のみのMVNOでも、家に置きっぱなしにしたケータイで発着信できます。
なお、これはIP電話ではないので、相手にはケータイの電話番号が通知されます。

これで煩わしい2台持ちから開放されるはずです。
(私は2台持ちが好きなので、これが完成しても2台持ちを続けますが。)




これを安価に実現するために「Gempro GP-712」というVoIP Gatewayを使用しました。
(「GP-712」はBluetooth接続でケータイとVoIPを中継する機械です。)

今回は、この「GP-712」とドコモのケータイを接続した際の、音質及び遅延時間を検証してみました。



【3G VoIP Gateway】

ドコモなどのキャリア回線を、データ回線で使えるよう橋渡しをしてくれる機器を「3G VoIP Gateway」と言います。
この橋渡しにより、データ回線からもキャリアの電話回線網が使えるようになります。

しかし、これらの機器は、数十万円という価格設定がされており、とても個人では入手できません。
そこで、他になにか良いものがないか探してみたところ、ケータイのBluetooth通信を介すことにより、「3G VoIP Gateway」を安価に実現した製品がありました。

それがGempro社の「GP-71x」という機器です。
今回はこれを海外から取り寄せて検証してみました。



【Gempro GP-71x】

これは使ってみるまで、その動作原理がわかりませんでした。

「GP-71x」が、Bluetoothでケータイと接続することはわかります。
しかし、その後がわかりません。一体どうすればこれがVoIPに変換されるのか・・・。

理屈はこうでした。
  1. 「GP-71x」が他のSIPサーバ(Asteriskなど)にレジストします。
  2. 1により「GP-71x」はSIPクライアントとして動作します。
  3. ケータイに着信があると、BTを介し「GP-71x」が指定された電話番号に転送します。
  4. 転送された先(MVNOなど)でケータイの着信を受話できます。
なお、発着信ともに番号通知は問題なしです。
転送先にも相手先にも、意図した電話番号が通知されます。



【検証結果】

検証は以下のように接続して行いました。

<SH-05E>(音声契約)
↑
Bluetooth
↓
<GP-712>
↑
LAN(Wi-Fi)
↓
<L-01F>(データ契約)


この状態で、他のケータイ(SH-07D)から、SH-05E(音声契約)に電話をかけて、それをL-01F(データ契約)で受話します。

これでSH-07DからL-01Fまでの、遅延時間とSH-07Dが聞こえる音質を検証します。
いつもはFusionの留守電で検証するのですが、今回は接続方法が異なるため、SH-07Dで直に音声を録音しました。


音声データはいつもどおり、これを使わせてもらいました。
<音声の元データ>



◆スピーカの音をすべて拾ってしまったデータ(プルルルル・・・から始まります。)


◆音を拾わないよう少し離して、布団で包んだとき


◆なおもスピーカ音を拾うので、スマホを冷蔵庫に入れて蓋閉めた!



◆遅延時間:472ms


【考察】

今回は音量調整をデフォルトで検証しているためか、音量が非常に小さいのですが、これは「GP-712」のGain値でいくらでも調整可能です。
しかし、音量の問題ではなく「音質」が悪いです。非常にノイジーです。

遅延時間は472msと、まずまず良好な結果を示しているだけに、この音質の悪さは非常にもったいない結果です。
音量を上げれば実用できなくもないと思いますが、明らかに音質が低下していることが相手にも伝わると思います。

・・・と、散々な考察をしてきましたが、実際、検証中にケータイから聞こえる生音は以外と聞き取りやすかったです。
音質が悪いことは決定的ですが、話している内容を間違うほど聞き取りにくいわけではありませんでした。

なお、冷蔵庫に入れてまでもスピーカ音を拾うとは思えないので、スピーカ音と思っていたものは、きっとエコーであると想像できます。



【全然違った・・・! その後の考察】

上の考察を書き終えた後で、音量を上げて試してみました。
その際に気付きました。

ノイズの原因はBluetoothでした。


何気なく、BT通信をしているケータイを持ったまま「GP-712」に近づいたところ・・・。
なんとなく、ノイズが減った気がします。

「あれ?」と思い、もっと近づきます。ノイズが更に減ります。

「GP-712」の上に乗せてみます。
「なんですと!?」

今まで大雨が降っているようなノイズが常時聞こえていたのですが、全て消えました。
非常にきれいな音質です。

また、「GP-712」の設定から「Volume」と「Mic Gain」を上げてみたところ、音量も非常に大きくなりました。
それなのに、音割れすることもありません。エコーもありません。


これならば、十分実用範囲内です。
(現在、録音環境がなく、実際の音質を録音できませんでした。)

VoLTEであれば、さらに遅延時間も少なくなり、より高音質となります。
VoLTE対応端末を入手したら、さらなる検証を行いたいと思います。

なお、発信時にPrefixerから自動的に0063などを付加することもできましたが、遅延時間はその分増加しました。

2014年7月9日水曜日

UbuntuでAsteriskを構築し「ブラステル」を登録する(CuBox-i2使用)

イエデン(HT702)を破壊してからここに至るまで、大急ぎでした。(妻が怖い)

本当はHT702だけを入替えて済ませるつもりだったのですが、新しく購入したHT702は、着信後10秒で切断される現象に悩まされ、結局はAsteriskの構築に至りました。

(着信後の即切断現象は<「FUSION IP-Phone SMART」や「ブラステル(050)」を固定電話として使う>のコメントで頂いている情報と同様の状況と思われます。)




今回は、CuBox-i2にインストールしたUbuntuでAsteriskを構築し、ブラステルを使えるようにするまでを紹介します。
Asteriskの話は、分かる人には簡単、でも、わからない人にはチンプンカンプンな話なので、さらっと流したいと思います。



【Asteriskのインストール】

  • Asteriskをインストールする。(makeやビルドなどは面倒なので行いません。)
    $ sudo apt-get install asterisk

    途中で「ITU-T Telephone code」を聞かれるので、日本の国番号「81」を指定します。


    ・・・以上でAsteriskのインストール完了!
    これだけで、Ubuntuの起動とともにAsteriskも自動実行されるようになります。

    「Linux = 難しい」と思っていましたが、結構適当な感じで行けそうな気がしてきました(・_・;)



    【設定ファイルの変更】

    設定を変更するファイルは、以下の2つだけです。
  • /etc/asterisk/sip.conf
  • /etc/asterisk/extensions.conf

    「sip.conf」に元々記載されていたデータはすべて消去して、以下設定を記載します。
    (心配な人はオリジナルファイルのバックアップを取っておきます。)


    まずは内線電話が通じるかを確認します。

    <sip.conf>
    [general]
    context=default
    port=5060
    bindaddr=0.0.0.0
    language=ja
    
    [201]
    type=friend
    defaultuser=201
    secret=pass
    canreinvite=no
    host=dynamic
    
    [202]
    type=friend
    defaultuser=202
    secret=pass
    canreinvite=no
    host=dynamic
    
    [203]
    type=friend
    defaultuser=203
    secret=pass
    canreinvite=no
    host=dynamic
    


    <extensions.conf>
    [default]
    
    exten => 201,1,Dial(SIP/201,30,r)
    exten => 201,2,Hangup()
    
    exten => 202,1,Dial(SIP/202,30,r)
    exten => 202,2,Hangup()
    


    この設定を終えたら、スマホを2台用意してAsteriskサーバをレジストします。
    2台のスマホをWi-Fi接続(ローカルネットワーク)とし、CSipSimpleなどのSIPクライアントに、以下SIP情報を登録します。

    [1台目]
    SIPサーバ:192.168.x.yyy(AsteriskサーバのIPアドレス)
    ユーザID:201
    パスワード:pass

    [2台目]
    SIPサーバ:192.168.x.yyy(AsteriskサーバのIPアドレス)
    ユーザID:202
    パスワード:pass


    これで、1台目⇔2台目の発着信及び通話テストを行います。
    電話番号は「201」と「202」です。(ユーザID=内線番号)

    無事に発着信と双方向通話ができることを確認します。

    両耳にスマホを当てながら、ブツブツと独り言を喋りつつ、通話ができる感動でニヤニヤします。
    (この姿は誰にも見られないようにしてください。キケンです。)



    【ブラステルの登録】

    早速、ブラステル050を使えるようにします。
    以下のように設定ファイルを書き換えます。

    <sip.conf>
    [general]
    context=default
    port=5060
    bindaddr=0.0.0.0
    dtmfmode=rfc2833
    language=ja
    
    ; Brastel 050 Free
    register => [ユーザID]@softphone.spc.brastel.ne.jp:[パスワード]:[ユーザID]@softphone.spc.brastel.ne.jp/200
    
    [brastel]
    type=friend
    secret=[パスワード]
    username=[ユーザID]
    fromuser=[ユーザID]
    fromdomain=softphone.spc.brastel.ne.jp
    host=softphone.spc.brastel.ne.jp
    context=default
    insecure=invite
    canreinvite=no
    disallow=all
    allow=ulaw
    allow=gsm
    
    [201]
    type=friend
    defaultuser=201 ;(SIPクライアント1が接続に使うユーザID)
    secret=password ;(SIPクライアント1が接続に使うパスワード)
    canreinvite=no
    host=dynamic
    
    [202]
    type=friend
    defaultuser=202 ;(SIPクライアント2が接続に使うユーザID)
    secret=password ;(SIPクライアント2が接続に使うパスワード)
    canreinvite=no
    host=dynamic
    
    [203]
    type=friend
    defaultuser=203 ;(SIPクライアント3が接続に使うユーザID)
    secret=password ;(SIPクライアント3が接続に使うパスワード)
    canreinvite=no
    host=dynamic
    


    <extensions.conf>
    [default]
    ; incoming call
    exten => 200,1,Dial(SIP/201&SIP/202&SIP/203)
    exten => 200,n,Hangup
    
    ; brastel
    MYNUMBER=05012345678 ;(自分のブラステルの電話番号)
    exten => _0.,1,Set(CALLERID(num)=${MYNUMBER})
    exten => _0.,n,Set(CALLERID(name)=${MYNUMBER})
    exten => _0.,n,Dial(SIP/${EXTEN}@brastel,120,T)
    
    ; naisen
    exten => 201,1,Dial(SIP/201,30,r)
    exten => 201,2,Hangup()
    
    exten => 202,1,Dial(SIP/202,30,r)
    exten => 202,2,Hangup()
    
    exten => 203,1,Dial(SIP/203,30,r)
    exten => 203,2,Hangup()
    


    これで、ブラステルの登録完了です。
    もし、内線番号を増やしたい場合は、同様の記述方法で「sip.conf」と「extensions.conf」に『204』『205』・・・と追記していきます。



    【完成】

    以上で、Asteriskの設定はすべて完了です。
    なお、この設定ではAsteriskは以下のように動作します。
  • 外線着信時は登録したすべての電話が一斉鳴動。
  • 内線通話は201~203で個別に呼び出し、200ですべての内線電話を一斉に呼び出し。
  • 外線発信の制限なし。

    なお、この設定ではセキュリティは一切考慮していません。
    外部(ローカルネットワーク以外)からこのAsteriskを使えるようにするためには、国際通話の禁止やパスワードの強化など、多くのセキュリティ対策を行う必要があります。
  • 2014年6月29日日曜日

    「CuBox-i2」にUbuntuをインストールし、Asteriskを構築する(Ubuntuインストール編)

    「CuBox-i2」にUbuntuをインストールして、それにAsteriskをインストールしました。




    このCuBox-iと同じようなコンセプトの小型PCとしては、「Raspberry Pi」が有名です。
    しかし、CuBox-iの方が圧倒的に小さく、そして格好いいです。

    ここではCuBox-iにUbuntuをインストールするまでを紹介します。



    【CuBox-i】

    CuBox-iはSolidRun社が開発した超小型PCです。
    スペック毎にいくつかのモデルがあり、CPUは1~4コア、GPUは通常モデルか高性能モデルかを選べます。(以下参照)
    もちろんハイスペックなほど、お値段もハイスペックになります(>_<)

  • CuBox-i1
  • CuBox-i2
  • CuBox-i2eX
  • CuBox-i2ultra
  • CuBox-i4pro

    私はLinuxサーバ(IP-PBX)として使うことが目的なので、高性能の必要性はなく「CuBox-i2」を選択しました。(1万円弱)



    【Cubox-i2にLinuxをインストールする】

    Linuxのディストリビューションをどれにするか迷った結果、「ArchLinux」か「Ubuntu」かに絞りました。
    当初はArchLinuxに心が傾いていたのですが、紆余曲折した結果、Ubuntuを採用しました。

    (ArchLinuxはインストール時に間違ってWindowsパーティションを削除してしまい、心が折れました。そして、インストールが簡単なUbuntuの採用に至りました・・・。)

    CuBox-i2にUbuntuをインストールする大まかな手順は以下のとおりです。
    1. 準備(WindowsマシンでMicroSDカードを読み書きできるようにする)
    2. CuBox-i4pro用Ubuntuイメージを入手する。
    3. Win32 Disk ImagerでイメージをMicroSDに書き込む。
    4. Ubuntuが書き込まれたMicroSDをCuBox-iに挿して起動する。
    5. Ubuntuをアップデートする。

    Linuxのインストールは、Gigazineに書かれていたCuBox-i1の記事が非常に参考になりました。
    『約5000円と激安の超小型PC「CuBox-i1」でAndroidとLinuxを動かしてみた』



    【Cubox-i2にUbuntuをインストールする手順】

    ◆ 1.準備(WindowsマシンでMicroSDカードを読み書きできるようにする)

    <用意するもの>
  • Windowsマシン
  • MicroSDカード
  • MicroSDカードリーダ/ライタ
  • Win32 Disk Imager

    「MicroSDカード」は信頼のおけるブランドを選びます。
    これが理由でトラブルが発生すると、原因の特定に苦労します。

    人それぞれ好みは分かれますが、私は東芝製を選びました。(安価な割になかなか速い)
  • 東芝 microSDHC 32GB Class10 30MB/s


    「MicroSDカードリーダ/ライタ」は、変換アダプタを介すものは面倒なので避けます。
    なお、これは安価なもので構いません。
  • MicroSDカードリーダ価格


    「Win32 Disk Imager」をダウンロードしてWindowsマシンにインストールします。
    使い方は・・・、私が説明するよりも「Gigazineの記事」がわかりやすいです。


    ◆ 2.CuBox-i4pro用ubuntuイメージを入手する。

    Solid Run社のページからUbuntuイメージをダウンロードして解凍します。
    http://cubox-i.com/linux-distros-ready-ubuntu-fedora-debian/
    (この中の「Ubuntu (for CuBox-i4pro, the rest of the models will be added soon)」というところ)

    CuBox-i4proモデル専用イメージのように思えますが、CuBox-i2でも使えました。


    ◆ 3.Win32 Disk ImagerでMicroSDに書き込む。
    ◆ 4.Cubox-iに挿して起動する。

    これはGigazineの記事そのままなので割愛します。
    記事内では「Android」と「GeexBox」イメージを使っていますが、それらは使わずに、先ほどダウンロードした「Ubuntu」を使います。

    なお、Ubuntuの初期ユーザ名とパスワードは以下のとおりです。
    ユーザ名:linaro
    パスワード:linaro

    これは必要に応じて変更します。


    ◆ 5.Ubuntuのアップデート。

    インストール直後のUbuntuを最新版にアップデートします。

    ターミナルを起動して、以下コマンドを入力します。
    (Ubuntuマークのアイコン(Dashホーム)をクリックし、検索で terminal と入力する。)


  • パッケージ・リストのアップデートをします。
    $ sudo apt-get update

  • パッケージのアップデートをします。
    $ sudo apt-get upgrade
    (非常に時間がかかる上に、途中でYes/Noを問いかけてくるので、付きっきりです・・・。)

  • vimに関するエラーが出力されるので以下で対処。
    $ sudo rm /var/lib/dpkg/info/vim*.postrm
    $ sudo rm /var/lib/dpkg/info/vim*.postinst
    $ sudo apt-get clean
    $ sudo apt-get install vim

  • Ubuntu12.04へアップグレード
    これは必要に応じて行います。(UpdateManagerアプリ)
    私の目的はUbuntuを使うことではなく、Asteriskを使いたいだけなので、Ubuntu11.10のまま利用しています。



    【おまけ?(CuBox-i2ギャラリー)】

    購入時の箱と明細



    CoBox-iのサイズ(私の手の大きさを参考に)



    MicroSDはこの向きに挿入する。
    引き抜くときは押しても取れない。
    先の尖ったもので引っ掛けて取るしか無い。(iPhoneのSIMトレイに挿すピン?がピッタリだった。)

  • 2014年6月24日火曜日

    「HT702」で「転送ボーイ」を利用する(失敗)

    HT702(Grandstream Handy Tone-702)には、FXSポート(電話取付口)が2つ付いています。
    このポート1の着信を、ポート2にそのまま転送できないかを考えます。

    具体的には、これで「ブラステル(050)」にあった着信を、「FUSION IP-Phone SMART」に転送します。
    これを実現することによって、無料でブラステルに留守電と不在着信通知を付加します。




    この実現には「転送ボーイ」と言う機器を用います。
    これのネーミングセンスには敢えて触れませんが、「転送ボーイ」は非常に高機能です。


    【HT702と転送ボーイ】

    「HT702」はIP電話を一般の家庭用電話機で使えるようにするためのATA(※)です。

    ※ATA(Wikiより)
    アナログの電話機をデジタルやVoIPベースのネットワークなどの電話網に接続するための装置である。IP電話アダプタ、VoIPアダプタとも呼ばれる。


    「転送ボーイ」とは2つの電話番号間で転送したり、バイパスしたり、外出先から自宅の電話番号で発信したり、などなど、様々なことがハードウェアで実現できる機器になります。



    【機器の接続】

    下図のようにHT702と転送ボーイを接続します。


    ※ この接続方法が失敗の基なので、真似しないでください。



    【実験】

    ポート1に設定したブラステルに電話をかけ、ポート2に設定したFusionが着信するかをテストします。
    以下のようになることを想定しています。(していました・・・。)

    携帯電話(発信)
     ↓
    ブラステルサーバ
     ↓
    HT702(ポート1:ブラステル):着信
     ↓
    転送ボーイ<IN>
     ↓<内部転送>
    転送ボーイ<OUT>
     ↓
    HT702(ポート2:Fusion)
     ↓
    Fusionサーバ(着信)
     ↓
    留守電


    手順どおり、まずは携帯からブラステルに発信します。
    この時点で「プルルル・・・」と言う発呼音が鳴っています。
    しかし、これではすでに実験失敗です。

    使用した転送ボーイは、ディレイなしで即時転送される設定にしています。
    本来であれば、即時にFusionに接続され、留守電につながるはずです。

    転送ボーイの設定を見直します。・・・が、間違いはなさそうです。
    単純なアカウントの設定ミスを考え、HT702の設定を見直します。
    しかし、なぜかHT702の設定画面に入れません。

    「???」と思いながらも、IPアドレスが変わったのかと、電話器側からIPアドレスの確認を行うため、受話器を上げます。
    普通、受話器を上げると「ツーーー」という音がするはずですが、受話器からは何も聞こえません。無音です。

    「んん?あれ??」良くわからないまま、偶然にもハブでも壊れたのかと思い、HT702をルータに直接接続します。
    そして受話器を上げるも無音のままです。

    HT702のIPアドレスを確認すべく、DOS窓から「arp -a」コマンドを打ち込みます。
    HT702には、しっかりとIPアドレスが割り振られています。
    しかし、そのIPアドレスで設定画面に入れません。

    仕方がないので、HT702のリセットボタン長押しで、工場出荷状態に戻します。

    気を取り直して再度HT702にアクセス。
    しかし、設定画面に入れません・・・。

    ここでようやく、HT702が何かおかしいことに気付きます。
    本来、付くべきLEDも点灯していません。

    そして、長いこと忘れていた、電話線についての知識がよみがえります。
    「そういえば電話回線って、極性とか電圧とかあったような・・・」



    【結論】

    それから、「HT702」が復活することはありませんでした。
    多分、アナログ回線用の電圧が転送ボーイから出力され、IP回線専用であるHT702が損傷したものと思われます。

    しかし、このままイエデンが使えない状態は非常に不便なため、即アマゾンにて当日発送のHT702を購入しました。

    実験は失敗です。(;_;)



    【最後の難関】

    こんなことぐらいで落ち込んでいられません。まだ最大の難関が残っています。
    イエデンが使えなくなったことを、妻に説明しなければなりません。


    (妻に状況説明プラス謝罪)

    (私の言っている内容が理解できずに、イライラしているのが感じ取れる。)

    (これは、非常にまずい!)


    妻「ちゃんと動いてる機械をなんでいじったの?」
    私「い、いや・・・、それはその、ぶ、ぶ、ぶらすてる・・・?」
    妻「・・・・」
    私「・・・・・」
    私「一応、これでも真剣でございます。」
    妻「・・・あんたが弄んなきゃ壊れなかったんでしょ?」
    私「はい・・・。」
    妻「何で壊したの!?」
    私「いや・・・、ふしゅ、ふ、ふ、ふゅーじょん・・・?」
    妻「・・・・・」
    私「・・・ごめんなさい。」


    極性や電圧に注意して、同じことを検証すればうまくいくかもしれません。
    しかし、「HT702」+「転送ボーイ」の実験はここで一時中止します。

    もし、実験を継続し、再度HT702が壊れようものなら、妻によって私が転送させられます。

    2014年6月19日木曜日

    「カケホーダイ」、「スマ放題」の有効利用について(フォーラム)

    ドコモの「カケホーダイ」、ソフトバンクの「スマ放題」を有効利用を目論むフォーラム(掲示板・BBS)です。

    現在の話題(期待)はBitBadOldManさんの提唱する「カケホーダイのシェア」についてでしょうか。


    通常、ブログとは「記事あってのコメント」かと思いますが、ここでは「コメントあっての記事」で試験運用します。
    (何の話題かによって記事を書き換えていきます。)

    IP-PBXの構築について(フォーラム)

    IP-PBX構築についてのフォーラム(掲示板・BBS)です。

    現在の話題は「IPPBX MINI 100-Pro」についてですが、ソフトウェアIP-PBX「Asterisk」に関する話題でも良いと思います。

    通常、ブログとは「記事あってのコメント」かと思いますが、ここでは「コメントあっての記事」で試験運用します。
    (何の話題かによって記事を書き換えていきます。)

    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で「スリープ状態での動作を維持する」にチェックを追記しました。
    これにチェックしないと、スリープ状態で着信を取り逃すことがあります。