FreePBX:5:トランク:ひかり電話(ホーム)

ひかり電話のホームゲートウェイ(HGW)をFreePBXのトランク(FXO)として使用します。ビジネス/オフィス/直収のページではありません。

目次

方針

これまで、ひかり電話のゲートウェイ(ルータ)の認証がAsteriskではうまくできないためにAsterisk本体用のパッチを用意していました。ところがFreePBXの場合にはAsterisk自体にパッチをあてることができないので別な方法を使うことにします。
Asteriskとひかり電話ホームを繋ぐ場合の問題はREGISTER時の認証におけるURIの問題だけで、それ以降のINVITEや実際の通話には問題はありませんでした。このため提供しているパッチではREGISTER時の認証の際のURIを組み立てなおしているだけです。実はこのREGISTERさえ回避できれば、Asteriskでひかり電話ホームを使うためのそれほど大きな問題はありません。
認証で問題が発生するのであれば、要するに認証を使わなければ良い話です。これは、ひかり電話のゲートウェイ(ルータ/HGW)の設定を変更するだけで実は可能です。
(この方法は"生の"Asteriskでも使えます)

ひかり電話ルータ(HGW)の設定

以下の例はRT-200NEのものですが、最近のルータでも同様の設定があるはずです。電話設定から内線設定を開き、FreePBXで使いたい内線番号(HGWの内線番号)を指定して設定します。

Fpx018.jpg

内線番号 : 通常はHGW内の内線番号です。ここでは例として3と想定します。
ニックネーム : デフォルトのままでかまいません。
端末属性 : 音声専用端末に指定しておきます。
MACアドレス : FreePBXをインストールしているマシンのMACアドレスを指定します。XX:XX:XX:XX:XX:XX の形式です。
ダイジェスト認証 : 「行わない」を指定するのですが一旦「行う」にして下記のユーザIDとパスワードを設定しておいてください。ユーザIDとパスワードを指定してから行わないに指定してください。
ユーザID : この端末のユーザIDですが、ここでは例として3と想定します。
パスワード : この端末のパスワードですが、ここでは例としてpass1234と想定します。


要するにダイジェスト認証をやめてMACアドレスで認証するようにします。
着信番号の設定はFreePBXに着信させたい番号を設定しておきます。
FreePBX側でDIDによって着信ルートを変えない場合(キャッチオールさせる)場合には着信番号の設定はここで行います。
着信番号制御を使う場合には複数の番号をここで指定します。この場合にはダイヤルインの制御はFreePBX側で行えます。

FreePBXの設定

Trunk

  • MenuBar -> Connectivity -> Trunks

Add SIP Trunk で新しいトランクを設定します。
設定項目は以下だけ設定すればかまいません。

Trunk Name : トランク名を指定します(例: hikaridenwa)
Outbound CallerID : 発信用の通知番号(ひかり電話の自分の番号)を指定します。
Maximum Channles : 1チャンネル契約なら1、2チャンネル契約なら2を指定します。

Dialed Number Manipulation Rulesの項目はここでは何も指定しません。 Outgoing Settingsの項目には以下を指定します。

Trunk Name : トランク名を指定します。例えばhikari-outなど。
PEER Details : ここが少しトリッキーです。上のHGWの設定にあわせて以下のように記述します。
type=peer
secret=pass1234
username=0003
fromuser=3
domain=ひかり電話ルータのIPアドレス
fromdomain=ひかり電話ルータのIPアドレス
host=ひかり電話ルータのIPアドレス
insecure=port,invite
dtmfmode=inband

USER Contextは"hikari-in"など適当な名前を指定しておきます。
Register Stringには以下を指定します。実際にはダイジェスト認証は行われないのですが、ユーザ名とパスワードを指定してREGISTERするようにしておきます。

3:pass1234@ひかり電話ルータのIPアドレス

以上の設定で、ひかり電話ホームがFreePBXのトランクとして使用できるようになります。

着信設定

単純に着信させたい場合

  • Menu Bar -> Connectivity -> Inbound Routes

Add Incoming Routeで新しい着信ルートを設定します。FreePBXでは発信と着信は"別な"設定として定義されます。
とりあえず以下の項目だけ設定できれば着信するようになります。
(注意:事前に内線電話機の登録と設定を行っておいてください-> FreePBX:内線設定)

Description : この経路の名前を指定します。hikari-inなど適当な名前を指定しておきます。
DID Number : (要注意箇所) 通常はここには着信する番号(DID)を指定するのですが、ひかり電話ホームのルータの場合には着番号は落ちてこず、sエクステンションに落ちてくるため、ここにはsを指定してください。

注:FreePBX 12以降と思われますが全てのDIDを受け付ける場合には's'を指定せず空白にしておけば全てキャッチします。
あとはページの下の方にあるSet Destinationを設定します。ここでは左のプルダウンからExtensionsを選択し、着信させたい内線番号を右のプルダウンから選んでおいてください。
以上で、ひかり電話に着信があると内線電話機が鳴動するようになります。
この方法は一番簡単な方法で、カスタムのextenを書く必要もありませんが、もし他にも着番(DID)なしで着信してくるような回線を併用していると、着信経路が明確ではなくなってしまうため着信の経路制御がうまくいかなくなります。

DID制御(着番での宛先制御)

ひかり電話のホームの場合、ルータからはDIDは渡されず登録している内線に紐付けられている番号で着信するだけです。このため、ひかり電話のHGWを使って着番を制御を行うには少しトリックが必要です。
上記の単なる着信の場合と同じに設定すると大混乱を招きますので、併用してはいけません!

まずカスタムのコンテキストを作成します。FreePBXにssh等でログインして、extensions_custom.conf に以下のコンテキストを作成します。

[hgw-custom]
exten => s,1,Set(DESTNUM=${SIP_HEADER(To)})
exten => s,n,NoOp(${DESTNUM})
exten => s,n,Set(DESTNUM=${DESTNUM:1:10})
exten => s,n,Goto(from-trunk,${DESTNUM},1)

電話番号の桁数が異なる場合には 1:10 の部分を調整してください。1文字目から10文字の意味です。

次にトランクから着信でこのコンテキストを通します。
Trunkの設定を上記のものに加えて、context= を足します。

type=peer
secret=pass1234
username=0003
fromuser=3
domain=ひかり電話ルータのIPアドレス
fromdomain=ひかり電話ルータのIPアドレス
host=ひかり電話ルータのIPアドレス
insecure=port,invite
dtmfmode=inband
context=hgw-custom

これでトランク(ひかり電話HGW)の着信からはhgw-customコンテキストを経由してから、トランクでの着信に制御が渡ります。
この際、DIDとしてSIPヘッダから取得した宛先の着番に変換されているので以下のように普通のインバウンドルートを設定します。

  • Menu Bar -> Connectivity -> Inbound Routes

Add Incoming Routeで新しい着信ルートを設定します。FreePBXでは発信と着信は"別な"設定として定義されます。
とりあえず以下の項目だけ設定できれば着信するようになります。
(注意:事前に内線電話機の登録と設定を行っておいてください-> FreePBX:内線設定)

Description : この経路の名前を指定します。hikari-inなど適当な名前を指定しておきます。
DID Number : 自分の着信番号、0312345678 のように指定するだけです。

もし以前にs着信(キャッチオール)の経路を作成していた場合には必ず削除しておいてください。

発信設定

  • Menu Bar -> Connectivity -> Outbaound Routes

Add Routeで発信を定義します。以下の項目を設定します。なおここでは外線は0でダイヤルされるとそのまま外線発信されるものとします(プレフィクスなし0xxxxの番号は外線とみなす)。

Route Name : hikaridenwa とか適当な名前を設定します。
Route CID : この番号を使ってHGWに行こうとするので内線番号(ここの例では3)を指定し、右側のOverride Extensionをチェックしておきます。

Dial Patterns that will use this Routeはこの経路を使って発信する際の番号パターンを指定するものです。ここでは0で始まり次が番号であれば外線(ひかり電話)に出したいので、以下の画面のように0X.を指定してあります。
Fpx019.jpg
最後にTrunk Sequence for Matched Routesで、この経路の行き先、つまり、ひかり電話のトランクを指定します。
これで、ひかり電話ホームを使って発信できるようになります。

外線発信ができない場合

内線電話機から外線発信ができない場合には内線電話機の使用するトランク設定が正しくない場合がありますのでFreePBX:5:内線設定のページを参考に使用するトランクの設定を行ってください。

注意

FreePBXのデフォルト設定では以下の警告が出ます

 WARNING[2121]: chan_sip.c:23527 handle_response_register: Got 423 Interval too brief for service 3@192.168.xxx.xxx, minimum is 3600 seconds

これはお馴染みのREGISTER時間の警告なので気になる場合にはSIPのグローバルセッティングをMenuBar -> Settings -> Asterisk SIP Settingsで修正してください。

HGWの内線を使いたい場合

次のステップ