2015年5月5日火曜日

Asteriskで留守電を超簡単に構築する

「留守電なんかいらないや」と思い、留守番電話を外しました。
そうして、今まで気軽に言っていた「電話に出られなかったら留守電にお願いします。」が言えなくなってしまいました。

なくなるとなくなるで、今まで留守電を便利に使っていたことに気付きます。




そこで、Asteriskを使って留守電を構築したいと思います。
ただし、「ボイスメールで留守電構築!」なんて難しいことはしません。




【 FUSION IP-Phone SMART 】

留守電には「FUSION IP-Phone SMART」を使います。
「FUSION IP-Phone SMART」は留守電が無料で使えるIP電話サービスです。


以下、公式サイトとWikiより抜粋
 IP-Phone SMARTはスマートフォン、PC、タブレット端末上の通話アプリから、Wi-FiやLTEネットワークを経由してフュージョンのIP電話プラットフォームへ接続します。電話網を介して携帯電話や固定電話との通話が可能になり、これまでの電話と変わらない感覚と格安料金での電話サービスをご提供します。

  • 基本料金無料で050で始まるIP電話を利用できるサービス。IP-Phone SMART 同士の通話は無料。
  • IP-Phone SMARTは初期費用・月額料金・留守番電話・着信転送・非通知・指定番号の着信拒否の機能が全て0円。発生する料金は通話料のみですので、気軽にお申込みいただけます。
  • その他向けの通話料は一律8.4円/30秒。携帯電話の通話機能よりも多くの場合安い。


  • この「FUSION IP-Phone SMART」(以降、FUSIONと略します。)は、FUSION同士の通話はもちろんのこと、留守電も無料で使うことができます。

    FUSIONの留守電は非常に高機能です。

    留守電が残されると、すぐにメールで音声メッセージが送られてきます。
    音声データは高音質で小容量のRiffWavです。

    また、留守録の再生はウェブからも行えるため、PCなどでも簡単に留守電が聞けます。

    なお、FUSIONと同じ機能をAsterisk(Linux)で構築することもできますが、かなりの手間です。
    Asteriskの設定だけではなく、WEBサーバを建てたり、メールサーバを建てたりと・・・。

    そんなこと、ものぐさな私はやりたくありません。



    【 FUSIONの留守電機能をAsteriskに取り込む 】

    わざわざ苦労してLinuxで各種サーバを構築する必要なんてありません。
    FUSIONに便利な留守電機能が無料で用意されているわけですから、これを利用します。

    やり方は簡単です。
    Asteriskの着信を一定時間後にFUSIONに転送するだけです。

    こうすれば、電話に出られないときは自動的にFUSIONに転送され、留守電に変わります。

    ここで重要なことは、お金を一切かけないことです。

    通常、着信を転送すると、転送先までの通話料がかかってしまいます。
    しかし、これをAsteriskとFUSIONのコラボレーションで無料にします。



    【 原理 】

    原理なんていう難しいものはありません。
    ただ、相手からの着信を2回転送するだけです。(厳密には1回は転送ではなくて発信です。)
    1. 相手からの着信を、Asteriskで受けます。(「ブラステル」や「つなぐ」など)
    2. 電話に○○秒間出なければ、着信をAsterisk内部でFUSION(A)に転送します。(無料)
    3. FUSION(A)からFUSION(B)に発信します。(無料)
    4. FUSION(B)は留守電設定をしておきます。(無料)
    ここでは、わかりやすくするために、あえて「FUSION(A)、(B)」としましたが、実はこの(A)と(B)は同一アカウント(同じ番号)で構いません。

    FUSIONは自分で自分に発信すると、必ず留守電になります。
    これは、発信したことで、その回線が話し中となるためです。

    これで複数アカウント取得による、追加料金も掛かりません。



    【 Asteriskの設定方法 】

    ◆ ブラステルをメインで使い、留守電はFUSIONで構築する設定例を紹介します。

    [sip.conf]
    [general]
    context=default
    bindaddr=0.0.0.0
    bindport=5062
    language=ja
    allowguest=no
    localnet=192.168.0.0/255.255.255.0
    
    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    allow=g729
    
    
    ; Brastel 050 Free
    register => ユーザID:パスワード@softphone.spc.brastel.ne.jp/201
    
    ; FUSION IP-Phone SMART
    register => ユーザID:パスワード@smart.0038.net
    
    
    [brastel]
    type=friend
    username=ユーザID
    fromuser=ユーザID
    secret=パスワード
    fromdomain=softphone.spc.brastel.ne.jp
    host=softphone.spc.brastel.ne.jp
    context=default
    insecure=invite
    canreinvite=yes
    
    [FUSION]
    type=friend
    username=ユーザID
    fromuser=ユーザID
    secret=パスワード
    host=smart.0038.net
    fromdomain=smart.0038.net
    context=default
    insecure=invite
    canreinvite=yes
    
    [201]
    type=friend
    defaultuser=201
    secret=sugoi_nagai_pasuwa-do
    canreinvite=yes
    host=dynamic
    context=201
    


    [extensions.conf]
    [default]
    exten => _X.,1,Dial(SIP/201,30)
    ; ↑30秒間呼び出す。
    exten => _X.,n,Answer()
    ; ↑Asterisk側が受話
    exten => _X.,n,Wait(1)
    ; ↑1秒待機して
    exten => _X.,n,Dial(SIP/05012345678@FUSION)
    ; ↑FUSION回線で自分から自分に発信
    exten => _X.,n,Hangup
    
    [201]
    ; 国際電話の禁止
    exten => _00.,1,Answer()
    exten => _00.,n,Wait(1)
    exten => _00.,n,Hangup
    
    exten => _010.,1,Answer()
    exten => _010.,n,Wait(1)
    exten => _010.,n,Hangup
    
    ; 緊急通報と各種案内へ発信(現在、緊急通報は未対応)
    exten => _1XX,1,Dial(SIP/${EXTEN}@brastel,120,r)
    exten => _1XX,n,Hangup
    
    ; 通常発信
    exten => _0.,1,Dial(SIP/${EXTEN}@brastel,120,r)
    exten => _0.,n,Hangup
    


    【まとめ・感想】

    通常のダイヤルプランにたった3行追加するだけで、高音質・高機能で無料の留守電が構築できました。

    使って頂ければわかりますが、2回転送していても交換機(Asterisk)内での処理となるため、音質の劣化はありません。

    難点は、留守電メールでは相手先の番号がわからないことでしょうか。
    これは、留守電に自分のFUSION回線から発信するため、留守電メールに自分の番号が記載されることによります。

    とは言っても、同一時刻に相手の電話番号からの不在着信がSIPクライアントに通知されています。よって、これは特に問題にはならないと思います。


    以前は、キャリアの転送機能を使ってFUSIONに転送していたため、その分の通話料が掛かっていました。
    今回のAsteriskとFUSIONのコラボにより、通話料も一切かからない留守電が構築できました。

    かなり満足です♪