前回の記事(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#
-
インストール済みの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#
-
PJSIPを組み込むようにして、Makefileを作成。
- 当初、pjproject-2.5.5.tar.bz2をダウンロードしようとして、失敗していました。
- 原因は、UTMのせいでした。
- ウチのネットワーク構成として、ルータ(ひかり電話対応)とLANの間にSophos UTM Home Editionを置いていますが、これを通さずに、ルータにラズパイを直結したら成功しました。同様の環境の方は多くないと思いますが、一応書き残しておきます。
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#
- 当初、pjproject-2.5.5.tar.bz2をダウンロードしようとして、失敗していました。
-
Asrerisk13のビルドとインストール
- まず、「make menuselect」で、組み込むモジュールを選択する。
- 名称に「PJSIP」を含むものを組み込んでおけば間違いないと思います。
- ついでに、日本語の音声を組み込んでおくとよいかもしれません。
- 「Core Sound Modules」
- CORE-SOUNDS-JA-ULAW
- CORE-SOUNDS-JA-GSM
- 「Core Sound Modules」
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#
- まず、「make menuselect」で、組み込むモジュールを選択する。
ひかり電話対応機器の設定
- ウチでは、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」
- 「Chan PJSIP Settings」タブ
- 上部のボタンで、接続ートランク
- 「トランクを追加」ボタンから、「SIP(Chan_PJSIP)トランクを追加」
- 「General」、「ダイヤル番号の操作ルール」、「pjsip設定」の各タブを設定します。具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
- 右上の「設定適用」ボタンで設定内容を反映します。
- ここまでで、ひかり電話対応機器にレジストできているはずです。(この後の設定完了まで通話はできません)
- 「トランクを追加」ボタンから、「SIP(Chan_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シグナル | はい |
着信確認
-
携帯電話などでひかり電話に電話をかけてみます。
-
対処としては、extensions_custom.confを少しいじる必要があるようです。
- こちらのFreePBX情報を参考にしました。
-
上部のボタンで、アドミンー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に合致する電話番号なので、国内に限ります。(いきなり、国際電話で実験しようとする方はあまり居ないとは思いますが、一応。)