Help us understand the problem. What is going on with this article?

RasPBXの導入(ひかり電話編)

More than 3 years have passed since last update.

RasPBXの導入(ひかり電話編)

by katsumin
1 / 9

前回の記事(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必須となってしまいました。
  • 手順は、以下の通り。
  1. 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# 
    
  2. インストール済みのAsterisk13を削除。

    root@raspbx:/usr/src# apt-get purge asterisk13
    パッケージリストを読み込んでいます... 完了
    :
    root@raspbx:/usr/src# apt-get autoremove
    パッケージリストを読み込んでいます... 完了
    :
    root@raspbx:/usr/src# 
    
  3. 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# 
    
  4. 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# 
    
  5. Asrerisk13のビルドとインストール

    • まず、「make menuselect」で、組み込むモジュールを選択する。
      • 名称に「PJSIP」を含むものを組み込んでおけば間違いないと思います。
      • ついでに、日本語の音声を組み込んでおくとよいかもしれません。
        • 「Core Sound Modules」
          • CORE-SOUNDS-JA-ULAW
          • CORE-SOUNDS-JA-GSM
    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
  • 対処としては、extensions_custom.confを少しいじる必要があるようです。

  • 上部のボタンで、アドミンー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)」を編集
      • 下表の設定を追加し、「設定適用」ボタンで反映させます。
タブ 設定項目 設定値 備考
pjsip設定 コンテキスト from-pjsip-custom
  • ここで、再度ひかり電話に電話をかけてみると、今度は子機に電話がかかりました。
    • CDRレポートを見ると、発信先に「600」と着信グループ番号が入っています。 スクリーンショット 2017-04-22 18.18.26.png

RasPBXの設定(発信設定)

  • 上部のボタンで、接続ーアウトバウンドルート
    • 「アウトバウンドルートを追加」ボタン
      • 「経路設定」、「Dial Patterns」、「パターンをインポート・エクスポート」、「詳細設定」の各タブを設定します。具体値は下表の通りです。特に明記していない設定項目は、デフォルトのままとしてください。
      • 右上の「設定適用」ボタンで設定内容を反映します。
タブ 設定項目 設定値 備考
経路設定 経路名 hikari-out 何でもよい
経路設定 一致したルートのトランクシーケンス hikari-denwa(pj) トランクとの紐付け
Dial Patterns match patten 上から順に、「0120XXXXXX」「1XX」「0N0XXXXXXXX」「0ZZXXXXXXX」「0ZZXXXXXXXX」 このパターンに当てはまる電話番号に発信しようとした場合に、このアウトバウンドルートが使用される
  • ここまでの設定で、子機からの発信が可能となっているはずです。
    • ただし、上記match patterに合致する電話番号なので、国内に限ります。(いきなり、国際電話で実験しようとする方はあまり居ないとは思いますが、一応。)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away