2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ひかり電話のサブ番号での発着信をasteriskで実施する話

Posted at

ひかり電話では、ISDNの時のように、回線1本で電話番号を2つとることができるマイナンバーというオプションがあります。
カードではありません。

企業では、電話とFAXを番号分けて利用していることが多いのであれを自宅+Asteriskで実現してみます。
後、家にはfaxが複合機しかありませんし、通常のアナログ電話機もありません。

回線は1本なので、FAX受信中に通話はできませんし、着信もできません。ですが、個人宅なので全く問題ありません。

FAX複合機は、Brother製MFC-L3770CDW。
SIP自体は実装されていますが、NTTのもつNGN網だけでやり取りが可能なデータコネクトのみがサポートされていて
ひかり電話には接続できません。
仕方がないので、GrandStream社製のHT801というVoIPアダプタを挟んで変換します。
Amazonでは7000円ぐらいで売られていて高い。中古を探すも割とニッチな商品のようで見つからない。
見つかっても高い。

結局、Aliexpressで中古品は怖かったけど探して購入しました。2101円でした。
1/3ぐらいの価格で入手でき、ちゃんと動いたので良かった。

HT801はUSBで動く優れものです。
LinkSysのものも5V2AなのでUSBでも動かせそうですが、本体側の端子が〇型です。

届いたHT801を初期化して、LINEを複合機へ、LANはSWへつなぎ、DHCPでアドレスをとってweb経由で設定。
IPアドレスを特定するために、電話機側から***をダイヤルした後、02とするとIPアドレスを英語でしゃべります。
それをメモしてもいいのですが、DHCPの設定でmacアドレスによる固定IP配布にしてもいいし、switchへログインして
arpをみるのも特定する方法の一つかと。

asteriskはバージョン13を使用、NTTへ直接接続しているため、HGW向けのパッチなどはあてることなく使えました。

HT801と外線発信向けのsip.conf

register => 048xxxxxxx:@ntt-east.ne.jp/048xxxxxxx

;NTTのひかり電話網へ接続する設定
[ntt]
type=peer
host=118.177.125.1
nat=never
;fromdomain=118.177.125.114
canreinvite=no
caninvite=no
session-expires=300
defaultexpiry=3600
;dtmfmode=rfc2833
dtmfmode=inband
context=pstnin
qualify=yes

;HT801との接続をした設定
[902]
type=friend
username=902
secret=xxxxxxxx
canreinvite=no
host=dynamic
dtmfmode=rfc2833
context=pstnfaxout
qualify=yes

extentions.conf
faxに関連する部分のみ抜粋

MAINNUMBER=048xxxxxxx
SUBNUMBER=048yyyyyyy

[pstnfaxout]

exten => _0.,1,Set(CALLERID(num)=${SUBNUMBER})
exten => _0.,n,Set(CALLERID(name)=${SUBNUMBER})
exten => _0.,n,SIPAddHeader(P-Preferred-Identity:<sip:${SUBNUMBER}@ntt-east.ne.jp>)
exten => _0.,n,Dial(SIP/${EXTEN}@ntt)

SIPAddHeaderの、P-Preferred-Identityを追記して、SUBNUMBERを指定すると発信することができました。
このヘッダは、ひかり電話の仕様書に書いてあったり、voip-info.jpのサイトの最下部にも書いてあったのですが、
PBXに知見が全くないため設定を見つけるのに苦労しました。

参考情報
https://voip-info.jp/index.php/%E3%81%B2%E3%81%8B%E3%82%8A%E9%9B%BB%E8%A9%B1HGW_MAC%E8%AA%8D%E8%A8%BC

着信が来た時の振り分け処理

[pstnin]

; 発信先電話番号を取得
exten => ${MAINNUMBER},1,Set(TO_DIAL=${SIP_HEADER(TO):5})
exten => ${MAINNUMBER},2,Set(TO_DIAL=${CUT(TO_DIAL,@,1)})
; 振り分け処理
exten => ${MAINNUMBER},3,GotoIf($[${TO_DIAL} = ${MAINNUMBER}]?dial1)
exten => ${MAINNUMBER},4,GotoIf($[${TO_DIAL} = ${SUBNUMBER}]?dial2)
;
; メイン回線の場合、通話録音をセット
exten => ${MAINNUMBER},5(dial1),Set(CALLFILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-IN-${EXTEN})
exten => ${MAINNUMBER},6(dial1),Monitor(wav,${CALLFILENAME},m)
; 901着信
exten => ${MAINNUMBER},7(dial1),Dial(SIP/901,25)
; 留守電応答
exten => ${MAINNUMBER},8(dial1),Wait(1)
exten => ${MAINNUMBER},9(dial1),Voicemail(901)
exten => ${MAINNUMBER},n,Hangup()
; サブ回線の場合、FAX受信
exten => ${MAINNUMBER},n(dial2),Dial(SIP/902,25)
exten => ${MAINNUMBER},n,Hangup()

sip set debug on
をいれて着信番号をテストした結果、SIP_HEADERの5に着信番号が載っていたのでそれをもとにfaxである902に直接転送。

動作テストでは、いちいち複合機の電話番号を入れるのが面倒なので、内線番号903を作ってAGEPhoneアプリから発信して
確認していました。

外線は、この設定で3年は使えているので仕様変更が入らないことを祈ります。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?