ひかり電話HGW Pjsip
ひかり電話のホームゲートウェイを使用する場合のpjsipの設定例。
とりあえずレジ、発着信ができるとこまで確認しましたが、この設定が完璧かどうかは疑問なので気付いた点のある方はページを更新してください。
目次
注意!!
chan_sipとpjsipを併用する場合にはどちらかのSIPポートをずらしてください。デフォルトではどちらも5060を使用しようとします。
概念がこれまでのchan_sipと少し違うので混乱するかもしれません。[ ] のセクションに対して type= でそのセクションのタイプが別々に記述されますので注意してください。
設定ファイル
- pjsip.conf
- エンドポイント/トランク名として hikari-trunk を使用しています
- まずトランスポートを書きます
;トランスポートの設定 [simpletrans] type=transport protocol=udp bind=xxx.xxx.xxx.xxx ;グローバルを持っている場合には外へ出ていかないようにローカルIPを書く
注) マシンがグローバルとローカルを持っている場合、挙動がおかしい気がします。どっちのアドレスを自分の『出』側にするかの問題なので、たぶんlocal_netを書けば大丈夫なはず(未検証)。
- レジスタ情報を書きます
;トランク設定(レジストあり) [hikari-denwa] type=registration transport=simpletrans ;トランスポートとして上のsimpletransをみる outbound_auth=hikari-trunk ;発信時認証にhikari-trunkのauthを使う server_uri=sip:xxx.xxx.xxx.xxx ;HGWのIPアドレス client_uri=sip:内線番号@:xxx.xxx.xxx.xxx ;内線番号はHGWの内線の1桁番号(例:5@192.168.0.1) retry_interval=60
- 認証情報を書きます
[hikari-trunk] type=auth auth_type=userpass password=内線のパスワード username=内線のユーザID ;通常は0005のようなやつ
- AOR(Address Of Record)を書きます
[hikari-trunk] type=aor contact=sip:xxx.xxx.xxx.xxx ;HGWのIPアドレス
- エンドポイントを定義します
from_userとfrom_domainが必要です。これはHGWが内線からの発信かどうかを識別するためです。
(注: from_userとfrom_domainです。fromuserとfromdomainではありません。英語のドキュメントでも間違っているのがあります)
[hikari-trunk] type=endpoint transport=simpletrans ;使用するトランスポート context=from-hikari ;着信コンテキスト disallow=all allow=ulaw outbound_auth=hikari-trunk aors=hikari-trunk direct_media=no from_user=内線番号 ;1桁の内線番号 from_domain=xxx.xxx.xxx.xxx ;HGWのIPアドレスを指定します dtmf_mode=inband
- トランク識別のためidentfyを書きます
[hikari-trunk] type=identify endpoint=hikari-trunk match=xxx.xxx.xxx.xxx ;HGWのIPアドレス
リロード時の注意
一部の設定はモジュールのリロード(core module reload res_pjsip)では反映されないものがあるので、完全に反映させたい場合にはAsteriskの再起動が必要です。
レジストの確認
*CLI> pjsip show registrations <Registration/ServerURI..............................> <Auth..........> <Status.......> ========================================================================================= hikari-denwa/sip:xxx.xxx.xxx.xxx hikari-trunk Registered
ダイヤルプラン
- 発信
chan_sipの場合とほぼ同様です。0から始まる番号はすべて、ひかり電話経由で発信する場合の例
;Hikari-Denwa Dial-out Sample(PJSIP) exten => _0.,1,Set(CALLERID(num)=${MYNUMBER}) exten => _0.,n,Set(CALLERID(name)=${MYNUMBER}) exten => _0.,n,Dial(PJSIP/${EXTEN}@hikari-trunk)
- 着信
pjsip.confで指定したコンテキストのsに飛んでくるだけです。
;pjsip ひかり電話着信 [from-hikari] exten => s,1,Dial(SIP/201)
- 着信(複数電話番号)
HGWの内線に複数番号を着信する設定をした際に、Asterisk側で振り分けることが出来る。 exten => s,1,Set(toDN=${PJSIP_HEADER(read,TO)}) exten => s,n,Set(toDN=${CUT(toDN,@,1)}) exten => s,n,Set(toDN=${CUT(toDN,:,2)}) とすることで、着信先の番号が変数${toDN}に入る。 続いて exten => s,n, Goto(${toDN},1) のようにすると、 03xxxx1234の追加番号に着信があるときは、 exten => 03xxxx1234,1,Dial(SIP/201) に飛ぶ。
なお、NTT東日本の家庭用プランでの追加番号は最大4番号まで