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

提供: VoIP-Info.jp
移動先: 案内検索

ひかり電話のホームゲートウェイ(HGW)はそれ自体が一種の交換機なので、内線を持っています。内線番号はHGW側でも設定可能なため、本来は番号をうまく設定すればAsteriskのシステムにもうまく組み込めるのですが、HGW、FreePBX双方の設定を合わせないと面倒なことになるので、HGW側はデフォルトのままで使う方法を解説します。
なお、この方法を使うには、ひかり電話ホームからDIDで着信させる必要があるのでFreePBX:5:トランク:ひかり電話(ホーム)を見て、DID着信の設定を行っておいてください。

HGWの内線

HGWの内線は一般的には次のように設定されているはずです(デフォルト)

内線
 1 -- アナログポート1
 2 -- アナログポート2
 3 -- IP電話機1
 4 -- IP電話機2
 5 -- IP電話機3
 6 -- IP電話機4
 7 -- IP電話機5

というわけでHGWの『中』の内線番号は数字1桁で1~7ということになります。例えばアナログポートの1からIP電話機の1にダイヤルするには"3"とダイヤルするだけです。この時のDIDは sip:3@hgw-ipaddre で、CIDは sip:1@hgw-ipaddr で着信してきます。これが前提条件になります。

作戦

1桁内線を使うとトラブルの元になるのはわかりきっているので、これを変換することにします。
FreePBX内での扱いを簡単にするために『ひかり電話の内線にダイヤルするには"999"をプレフィクスにする』という作戦を使うことにしましょう。

カスタムextenを変更する

extensions_custom.confを以下のように修正します。

[hgw-custom]
exten => s,1,Set(DESTNUM=${SIP_HEADER(To)})
exten => s,n,NoOp(${DESTNUM})
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "1"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "2"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "3"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "4"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "5"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "6"]?inter)
exten => s,n,GotoIf($["${DESTNUM:1:1}" = "7"]?inter)
exten => s,n,Set(DESTNUM=${DESTNUM:1:10})
exten => s,n,Goto(from-trunk,${DESTNUM},1)
exten => s,n(inter),Set(DESTNUM=999${DESTNUM:1:1})
exten => s,n,Set(CALLERID(num)=999${CALLERID(num)})
exten => s,n,Goto(from-trunk,${DESTNUM},1)

着信のDIDとして先頭に999をつけて9991や9993のようにします。またCIDの頭にも999を付けて、発信元が9991や9993であるように変換しておきます。

着信経路

FreePBXのGUIからInbound Routeで、ダイヤルイン番号(DID)を9993などで作ります。これは、FreePBXのトランクとして、ひかり電話に接続した際の内線番号の頭に999を付けたものにします。
着信させたらどの内線を鳴らすか、あるいはリンググループ等に着信させるかなどを設定するだけです。

発信経路

ちょっとしたトリックが必要です。
Outbound Routesで発信経路を作りますが、この時の設定を以下のようにします。

Route CIDをAsteriskがぶら下がっている1桁の内線番号(3など)にする
Override Extensionをチェック

Dial Patterns...

Prefix 999
パターンを X だけ

Trun Sequenceは当然ながら、トランクとして設定したひかり電話の経路にします。

これでFreePBX側からは 999 に続けてHGWの内線番号をダイヤルするとダイヤルでき、また、HGWの内線からFreePBXを呼び出すこともできるようになります。