前回の記事(RasPBXの導入(内線通話ができるまで))で、RasPBXに接続した2台のソフトフォン同士の内線通話ができるようにしました。
今回は、ひかり電話を外線として使えるようにします。
ひかり電話とは
- ひかり電話は、光回線で使えるIP電話サービスで、NTT(フレッツ光)や光コラボ事業者との契約で使用可能となります。
- ひかり電話対応機器(ルータ)を宅内に設置しますが、このルータのLAN側に接続された端末からはSIPサーバに見えます。
- このSIPサーバに、RasPBXをレジストして使用することになります。
PJSIPのインストール
- 結論から言うと、必要ありませんでした。FreePBXの画面でPJSIPの設定が見えなかったのは、「高度な設定」で、「SIP Channel Driver」を「chan_sip」から「both」に変更していなかったからでした。
- ウチで使っている2016-03-06版では、Asterisk11が組み込まれていて、別途PJSIP込みのAsterisk13をインストールする必要がありました。
- 新しい2017−01-28版では、Asterisk13が組み込まれていて、PJSIPも組み込まれているようです。前々回の記事で、PJSIPが組み込まれているか不明としていたんですが、ちゃんと組み込まれていました。
- PJSIPを組み込んだAsterisk13のビルド手順も示しておきます。新しい版のRasPBXを使用している方は読み飛ばしてください。
PJSIPのインストール(古いRasPBX向け)
-
ひかり電話HGWパッチをあてて、Asteriskをビルドする方法もありますが、PJSIPをインストールすることにします。
- ウチでも、最初はパッチをあててたんですが、後でブラステルを使うことになって、結局はPJSIP必須となってしまいました。
- 手順は、以下の通り。
-
Asterisk13のソースをダウンロードして、解凍。
root@raspbx:~# cd /usr/src
root@raspbx:/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
root@raspbx:/usr/src# tar zxvf asterisk-13-current.tar.gz
root@raspbx:/usr/src# ls
asterisk-13-current.tar.gz asterisk-13.14.0
root@raspbx:/usr/src#
1. インストール済みのAsterisk13を削除。
```
root@raspbx:/usr/src# apt-get purge asterisk13
パッケージリストを読み込んでいます... 完了
:
root@raspbx:/usr/src# apt-get autoremove
パッケージリストを読み込んでいます... 完了
:
root@raspbx:/usr/src#
-
PJSIPを含む、依存ライブラリ群をインストール。
- だいぶ試行錯誤したので、不要なライブラリもあるかもしれません。
root@raspbx:/usr/src# apt-get install ncurses-dev libxml2 libxml2-dev sqlite libsqlite3-dev libssl-dev
root@raspbx:/usr/src# apt-get install uuid uuid-runtime uuid-dev
root@raspbx:/usr/src# apt-get install libjansson4 libjansson-dev
root@raspbx:/usr/src# apt-get install libclalsadrv2 libclalsadrv-dev
root@raspbx:/usr/src# apt-get install libpjsip-simple2 libpjsip-ua2 libpjsip2 libpjproject-dev libsrtp-dev srtp-utils
root@raspbx:/usr/src# apt-get install subversion
root@raspbx:/usr/src#
1. PJSIPを組み込むようにして、Makefileを作成。
- 当初、pjproject-2.5.5.tar.bz2をダウンロードしようとして、失敗していました。
- 原因は、UTMのせいでした。
- ウチのネットワーク構成として、ルータ(ひかり電話対応)とLANの間に[Sophos UTM Home Edition](https://www.sophos.com/ja-jp/products/free-tools/sophos-utm-home-edition.aspx)を置いていますが、これを通さずに、ルータにラズパイを直結したら成功しました。同様の環境の方は多くないと思いますが、一応書き残しておきます。
```
root@raspbx:/usr/src# cd asterisk-13.14.0
root@raspbx:/usr/src/asterisk-13.14.0# ./configure --with-pjproject-bundled
checking build system type... armv7l-unknown-linux-gnueabihf
checking host system type... armv7l-unknown-linux-gnueabihf
:
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure: Package configured for:
configure: OS type : linux-gnueabihf
configure: Host CPU : armv7l
configure: build-cpu:vendor:os: armv7l : unknown : linux-gnueabihf
:
configure: host-cpu:vendor:os: armv7l : unknown : linux-gnueabihf
:
root@raspbx:/usr/src/asterisk-13.14.0#
-
Asrerisk13のビルドとインストール
- まず、「make menuselect」で、組み込むモジュールを選択する。
- 名称に「PJSIP」を含むものを組み込んでおけば間違いないと思います。
- ついでに、日本語の音声を組み込んでおくとよいかもしれません。
- 「Core Sound Modules」
- CORE-SOUNDS-JA-ULAW
- CORE-SOUNDS-JA-GSM
- 「Core Sound Modules」
- まず、「make menuselect」で、組み込むモジュールを選択する。
root@raspbx:/usr/src/asterisk-13.14.0# make menuselect
:
Generating input for menuselect ...
menuselect changes saved!
make[1]: Leaving directory '/usr/src/asterisk-13.14.0'
root@raspbx:/usr/src/asterisk-13.14.0# make
CC="cc" CXX="g++" LD="" AR="" RANLIB="" CFLAGS="" LDFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts
:
+--------- Asterisk Build Complete ---------+
- Asterisk has successfully been built, and +
- can be installed by running: +
-
+
-
make install +
+-------------------------------------------+
root@raspbx:/usr/src/asterisk-13.14.0# make install
CC="cc" CXX="g++" LD="" AR="" RANLIB="" CFLAGS="" LDFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts
:
+---- Asterisk Installation Complete -------+
-
+
- YOU MUST READ THE SECURITY DOCUMENT +
-
+
- Asterisk has successfully been installed. +
- If you would like to install the sample +
- configuration files (overwriting any +
- existing config files), run: +
-
+
- For generic reference documentation: +
- make samples +
-
+
- For a sample basic PBX: +
- make basic-pbx +
-
+
-
+
+----------------- or ---------------------+
-
+
- You can go ahead and install the asterisk +
- program documentation now or later run: +
-
+
-
make progdocs +
-
+
- Note This requires that you have +
- doxygen installed on your local system +
+-------------------------------------------+
root@raspbx:/usr/src/asterisk-13.14.0#
---
# ひかり電話対応機器の設定
- ウチでは、PR−400NEを使っています。違う機種の場合は、画面の表現が異なるかもしれません。
- 画面左側の「電話設定」ー「内線設定」をクリック。
- 端末属性が「IP端末(音声専用)」となっている行の「編集」をクリック。
- ユーザIDとパスワードが設定されているので、それぞれ控えておいてください。
- パスワードは、設定し直す方が望ましいかもしれません。
- ここでは、ユーザIDを「0004」、パスワードを「0004pass」として説明します。
---
# RasPBXの設定(レジストと着信設定)
- WebブラウザでRasPBXにアクセスします。
- RasPBX Administrationをクリックして、管理者でログインします。
- デフォルト設定は、ユーザ名:admin、パスワード:admin
- 上部のボタンで、設定ー高度な設定
- ダイヤルプランと操作可能
- SIP Channel Driverを「both」に。
- 画面右下の「送信」ボタンをクリック。
- 上部のボタンで、設定ーAsterisk SIP 設定
- 「Chan PJSIP Settings」タブ
- Show Advanced Settingsを「はい」
- 「udp - 192.168.1.120 - eth0\」を「はい」(192.168.1.120はRasPBXのIPアドレス)
- 「Port to Listen On」に「5061」
- 上部のボタンで、接続ートランク
- 「トランクを追加」ボタンから、「SIP(Chan_PJSIP)トランクを追加」
- 「General」、「ダイヤル番号の操作ルール」、「pjsip設定」の各タブを設定します。具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
- 右上の「設定適用」ボタンで設定内容を反映します。
- ここまでで、ひかり電話対応機器にレジストできているはずです。(この後の設定完了まで通話はできません)
|タブ|設定項目|設定値|備考|
|---|---|---|---|
|General|トランク名|hikari_denwa(pj)|何でもよい|
|General|アウトバウンドCID|1234567890|ひかり電話の電話番号|
|General|最大チャネル数|1||
|pjsip設定|ユーザ名|0004|控えておいたユーザID|
|pjsip設定|Secret|0004pass|控えておいたパスワード|
|pjsip設定|SIP Server|192.168.1.1|ひかり電話対応機器(ルータ)のIPアドレス|
|pjsip設定|Transport|192.168.1.120-udp|192.168.1.120はRasPBXのIPアドレス|
|pjsip設定|From Domain|192.168.1.1||
|pjsip設定|From User|4||
|pjsip設定|クライアントURI|sip:4@192.168.1.1||
- 上部のボタンで、アプリケーションー着信グループ
- 「着信グループを追加」ボタン
- 具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
- 右上の「設定適用」ボタンで設定内容を反映します。
|設定項目|設定値|備考|
|---|---|---|
|着信グループ|600||
|グループの説明|hikari-grp(600)|何でもよい|
|内線リスト|101、102|右側にある「User Quick Select」ボタンで選択可能|
|応答がない場合の転送先|「通話終了」、「発信者が切電するまで呼出し音を再生します」||
- 上部のボタンで、接続ーインバウンドルート
- 「インバウンドルートを追加」ボタン
- 「General」、「高度な設定」、「プライバシー」、「Other」の各タブを設定します。具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
- 右上の「設定適用」ボタンで設定内容を反映します。
- ここまでで、着信だけは可能になっているはずです。
|タブ|設定項目|設定値|備考|
|---|---|---|---|
|General|説明|hikari-in||
|General|ダイヤルイン番号|1234567890|ひかり電話の電話番号|
|General|宛先をセット|「着信グループ」、「600 hikari-grp(600)」|着信グループで設定したもの|
|高度な設定|RINGINGシグナル|はい||
---
# 着信確認
- 携帯電話などでひかり電話に電話をかけてみます。
- なぜか、子機に着信せず、RasPBXの自動応答(英語音声)となってしまいます。
- CDRレポートを見ても、「Playback」となっており、自動応答が働いたことがわかります。
- 発信先が「s [from-pstn]」となっていて、着信グループが反応できていないことが原因だと思われます。
- 着信グループは、対応するインバウンドルートで設定したダイヤルイン番号によって振り分けられるようです。
![スクリーンショット 2017-04-22 17.30.42.png](https://qiita-image-store.s3.amazonaws.com/0/166435/097db553-45f5-466d-5457-0872017b950b.png)
- 対処としては、extensions_custom.confを少しいじる必要があるようです。
- [こちらのFreePBX情報](http://www.voip-info.jp/index.php/FreePBX:10:%E3%83%88%E3%83%A9%E3%83%B3%E3%82%AF:%E3%81%B2%E3%81%8B%E3%82%8A%E9%9B%BB%E8%A9%B1(%E3%83%9B%E3%83%BC%E3%83%A0):Chan_PJSIP)を参考にしました。
- 上部のボタンで、アドミンーConfig Edit
- 「Config Edit」はデフォルトでインストールされていないかもしれません。その場合は、「アドミンーモジュール管理」から追加してください。
- extensions_custom.confを選択して、下記の通りに設定します。
- 「保存」ボタンで保存します。
```
[from-pjsip-custom]
exten => _.,1,Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)},1)
- さらに、トランク設定も必要となります。
- 上部のボタンで、接続ートランク
- 「hikari_denwa(pj)」を編集
- 下表の設定を追加し、「設定適用」ボタンで反映させます。
- 「hikari_denwa(pj)」を編集
タブ | 設定項目 | 設定値 | 備考 |
---|---|---|---|
pjsip設定 | コンテキスト | from-pjsip-custom |
RasPBXの設定(発信設定)
- 上部のボタンで、接続ーアウトバウンドルート
- 「アウトバウンドルートを追加」ボタン
- 「経路設定」、「Dial Patterns」、「パターンをインポート・エクスポート」、「詳細設定」の各タブを設定します。具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
- 右上の「設定適用」ボタンで設定内容を反映します。
- 「アウトバウンドルートを追加」ボタン
タブ | 設定項目 | 設定値 | 備考 |
---|---|---|---|
経路設定 | 経路名 | hikari-out | 何でもよい |
経路設定 | 一致したルートのトランクシーケンス | hikari-denwa(pj) | トランクとの紐付け |
Dial Patterns | match patten | 上から順に、「0120XXXXXX」「1XX」「0N0XXXXXXXX」「0ZZXXXXXXX」「0ZZXXXXXXXX」 | このパターンに当てはまる電話番号に発信しようとした場合に、このアウトバウンドルートが使用される |
- ここまでの設定で、子機からの発信が可能となっているはずです。
- ただし、上記match patterに合致する電話番号なので、国内に限ります。(いきなり、国際電話で実験しようとする方はあまり居ないとは思いますが、一応。)