Raspberry Piでひかり電話を持ち歩こう④屋外使用&PUSH着信編

Raspi_Colour_R

 Raspberry PiでIP-PBX構築第4弾!

 

Asteriskにひかり電話を収容して発着信出来る段階まで来た。 次は自宅外でAsteriskに接続して通話出来るようにしてみる。

 

ここから先はルーターやISPによって変わって来るのでうまくいかない場合は調べて試してください。

我が家の環境はNTT西フレッツ光ネクストでASAHI-NETを使用中。

ルーターはフレッツ光純正のPR-400KIです。

 

FreePBXのAsterisk SIP Settingの項目を編集。

Clipboard01

我が家は固定IPではないのでDDNSを使用中。

環境に合わせてStaticやPrivateで設定してください。

 

NATの項目はどれを選んでも結果的に変化なしだったのでどれを選ぶのか良くわかってませんw

そのすぐ下にコーデックの選択があるのでここも適当に・・・

Clipboard01

自分の場合はFUSION IP-PHONE SMARTを使ってきた経験から通信の殆どをGSMでやってます。

いろいろ試したけれどGSM縛りが一番音声に遅延がなくストレス無く話せます。

ひかり電話の回線網はulawかalawを使うことになるのでソレもお忘れなく。

 

MEDIA & RTP Settingsの項目はデフォルトのままで使ってます。

Clipboard01

Jitter Bufferは通信時に追加のバッファーを付けて音声の途切れや音質改善する機能らしいです。

ただし、バッファーをつけると受信した音声を再生するまでに僅かにタイムラグが発生するので音声遅延につながります。

特別、音質が悪くて話せなかったり音切れが激しいと言うことがなければ使わないほうがいいかも?

Clipboard01

Languageは日本語音声ファイルが入ってる場合日本語を指定しておくと自動メッセージが日本語化されます。

今回は日本語音声を入れてないので何の意味もありませんw

Bind PortはSIPサーバーのポートを変更する場合に記述します。

空欄の場合は標準の5060が使われます。

不正利用対策としてこのポート番号をデフォルト以外に変更しておくとSIPサーバーの存在が不正利用者にバレにくくなります。

FreePBXでの設定はこんな感じです。

 

続いてルーターのNAT設定。

Clipboard01

静的NAT設定でポート5060をRaspberry PiのIPアドレスに通す。

以上。

我が家でNAT設定はコレだけで通ってます。

環境によっていはRTPのポートも開放の必要があるのでポート幅をデフォルトの10000-20000から10000-10005等に狭くして開放するのがオススメです。

 

これでPC側の設定は完了。

スマホのサーバーアドレスをDDNSのドメインやルーターのグローバルアドレスに変更して接続出来るか確認してみる!

 

コレで一発で接続出来る場合もあればダメな場合もあるっぽい?

我家の場合は一発で接続出来た・・・かと思いました。

Screenshot_2014-03-21-22-18-30

 こんな感じに登録済み・・・と出るのだけど実際にダイヤルしてみると・・・

Screenshot_2014-03-21-22-18-17

 Cellularの横に「?」と表示されて音声が流れません。

RTPポートの通信が通っていないので音声の圧縮形式が表示されてない状態です。

 

この場合のAcrobits Softphoneでの設定方法を説明します。

SIPアカウントの設定から・・・

Advanced Setting > NAT Traversal を開いて

Mediaの項目を変更します。

Screenshot_2014-03-21-22-19-00

 設定を変更してもう一回通話テスト。

Screenshot_2014-03-21-22-32-24

今度は「?」と表示されずに音声もちゃんと通じてます。

自動ではRTPが通らなかったのでICEを選択したところ我が家の環境では音声がつながりました。

ICEがダメな場合はSTUNを選択して STUNサーバーを入力してください。

STUNサーバーは自前で構築するのもありだけど面倒なので・・・どこかのサーバーにタダ乗りするのが早いかも・・・

試しにSTUNを選択して3CXが公開しているサーバー(stun.3cx.com stun2.3cx.com)に接続してもちゃんと音声が通りました。

取り敢えず自宅LANの外からでも発信できる事が確認出来ました。

 

続いて着信テスト。

 Screenshot_2014-03-21-22-37-28

 タブレットPC(内線200番)からダイヤルいて着信もOK!

 もちろん音声通話も問題なし。

ただ、このままでは待機中もSIPサーバーと通信したままになって消費電力がかなり大きくなってしまうのでPUSH待機可能にする。

 

Acrobits SoftphoneはAndroidで唯一PUSH着信 に対応しているSIPアプリなので有料で600円しますが買う価値ありです!

設定のIncoming CallsUse Push Notificationsに変更するだけ!

そしてAcrobitsを閉じるとステータスの「登録中」が「未登録」に切り替わります。

Screenshot_2014-03-21-22-36-22

コレでPUSHサーバーへの登録が完了してます。

Clipboard01

着信可能を意味するこのマークが表示されます。(Acrobits Softphoneを起動中は矢印が双方向になって発着信OKを意味します。)

 

ためしに電話をかけてみると・・・

 

着信しねぇorz

 

なぜ着信出来ないのか色々と設定を弄っているとやっと原因発見!

FreePBXの内線設定(Extensions)のDevice OptionsnatがデフォルトでNOになっているのでコレをYESに変更!

 

Acrobits Softphoneを一度開いてから閉じてPUSHサーバーに再登録してから・・・

再度、内線を鳴らしてみると・・・

Screenshot_2014-03-21-22-37-28

 今度はちゃんと着信できました!!!

 

ここまで設定完了したらひかり電話が完全に屋外で使用可能になってます。

PUSH待機にも対応したのでバッテリーの消費もほとんど気にすることなく利用可能です!

 

ただし・・・欠点が・・・

屋外からの接続はDDNSを使ったドメイン接続なのに自宅でWIFI接続になった時にはサーバーにドメインが適応されないのでサーバーアドレスを変更しなければいけません・・・

 

次回はこの問題を解決します!