ひかり電話HGW Pjsip

2022年10月17日 (月) 13:21時点におけるMakoto3 (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

ひかり電話のホームゲートウェイを使用する場合の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番号までで、合計5番号が使用できる。