Asterisk + FreePBX に NTT西日本のひかり電話を直接収容
NTT西日本のひかり電話の直収はあっさりできるようになってました。
(参考にさせていただきありがとうございます。謝意
https://note.com/tsq/n/n54ffb5edf451
https://qiita.com/kmorimoto/items/d99cd9edcf7436eea7cc
)
まずは NTT のひかり電話サーバーや自局のアドレスを確認します。
うちはもともと and One さんの primus Gateway 使ってたんですが、ホスト OS が古くなり更新することにしました。上記のリンクにアドレスの確認方法はあるので各自ご確認ください。
で、取得したアドレスは(当然一部改変してあります)
前提条件
ONU 直下に HUB をつけ、ルーターと電話サーバーに枝分かれ。電話サーバーは通常の dhcp で NTT からアドレスをもらってくれるので dhcp に関して特に設定はありません。ルーター直下に電話サーバーを置いた場合については別途書きます。
dhcp の情報
address=124.111.111.111
netmask=255.255.255.xxx
gateway=124.222.222.222
basephonenumber=電話番号1
phonenumbers=電話番号2
phonenumbers=電話番号3
sipdomain=ntt-west.ne.jp
sipserver=124.333.333.1
interface "enpXXXXXX";
fixed-address 124.111.111.111;
option subnet-mask 255.255.255.xxx;
option dhcp-lease-time 14400;
option routers 124.222.222.222;
option dhcp-message-type 5;
option dhcp-server-identifier 124.222.222.222;
option dhcp-renewal-time 7200;
option dhcp-rebinding-time 10800;
option sip-server.ipv4 124.333.333.1;
option NTT.subphonenumber "電話番号2,電話番号3";
option NTT.sipdomain "ntt-west.ne.jp.";
option NTT.hgwmanagemtnserver "www.verinfo.hgw.flets-west.jp.";
option NTT.macaddress なんちゃら;
option NTT.phonenumber "電話番号1";
/etc/asterisk/extensions_custom.conf
[from-HIKARI]
exten => _.,1,Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)},1)
[header-custom]
exten => addheader,1,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${CUT(CALLERID(name),:,2)}@ntt-west.ne.jp>)
/etc/asterisk/pjsip.transports_custom.conf
[hikari-tp]
type = transport
protocol=udp
bind=0.0.0.0
/etc/asterisk/pjsip_custom.conf
[HIKARI-DENWA]
type=registration
contact_user=電話番号1
transport=hikari-tp
expiration=3600
fatal_retry_interval=60
forbidden_retry_interval=60
client_uri=sip:電話番号1@ntt-west.ne.jp
server_uri=sip:ntt-west.ne.jp
[HIKARI-DENWA]
type=aor
contact=sip:124.333.333.1
[HIKARI-DENWA]
type=identify
endpoint=HIKARI-DENWA
match=124.333.333.1
[HIKARI-DENWA]
type=endpoint
transport=hikari-tp
dtmf_mode=inband
language=ja
send_pai=yes
tos_audio=0xb8
from_user=電話番号1
context=from-HIKARI
disallow=all
allow=ulaw
rtp_symmetric=no
force_rport=no
rewrite_contact=no
direct_media=no
from_domain=ntt-west.ne.jp
aors=HIKARI-DENWA
/etc/hosts
最終行に
124.333.333.1 ntt-west.ne.jp
ntt-west.ne.jp に一度 ping 飛ばしとけば(返事は返ってこなかったような)認識されます。
FreePBX で、CUSTOM トランクを電話番号の数だけ作成
- アウトバウンドCID
電話番号 - Asteriskトランクダイヤルオプション
オーバーライドで Ttb(header-custom^addheader^1)
インバンドルールは電話番号の数だけ ダイアルイン番号に電話番号を書いて作成
このとき CallerID は特に指定しなくても問題なく着信します。
思ったよりも簡単に接続できたんで、昔より良くなったなぁと感動しました。
NTT西日本に届けが必要(電話で良かったかと)なのでお忘れなく。
注意事項
標準の PJSIP のポート番号は 5060 から適当な番号に変更してください。
「設定」->「Asterisk SIP 設定」-> 「SIP Settings [cjam_pjsip]」->「Port to Listen On」
これでも電話番号や PJSIP Trunk 等から 5060 で受けれます。気持ち悪いので全部変えましたけど。
どうやら Asterisk は複数の IP アドレスで個別にポート番号を設定できないようです。(確かではないですが、英語での書き込みがありました)なので全部のアドレスで全部のポートに着信するようです。
同じポート番号の設定(多分同じアドレスもかな)が複数あると後のを認識しないようで、設定があっても無視されて「0.0.0.0-udp の設定がないから拒否した」みたいなエラーを吐いて着信を拒否します。
着信グループに外線を着信させると、電話機からの応答で NTT が回線を切る仕様の様子です。(たぶん)
結果、インバンドルールで着信グループにひかり電話の着信先を指定すると、繋がりません。
結構はまりました。
対策は、システム録音無指定のアナウンスを作成し、これを着信先に指定します。
アナウンスの設定でアナウンス後の宛先を着信グループに設定しておけばうまくいきます。
時々 FastAGI がおちて、電話がつながらなくなります。「設定」->「高度な設定」->「」をいいえにしとけば問題なし。大規模なシステムでなければメリットはほぼない様子なので。