「ひかり電話HGW Pjsip」の版間の差分

提供: VoIP-Info.jp
移動先: 案内検索
 
(2人の利用者による、間の10版が非表示)
1行目: 1行目:
 
{{Template:書きかけ}}
 
{{Template:書きかけ}}
{{カテゴリ:pjsip}}
+
[[カテゴリ:pjsip]]
{{カテゴリ:Asterisk}}
+
[[カテゴリ:Asterisk]]
[[カテゴリ:ひかり電話}}
+
[[カテゴリ:ひかり電話]]
 +
 
 
ひかり電話のホームゲートウェイを使用する場合のpjsipの設定例。<br>
 
ひかり電話のホームゲートウェイを使用する場合のpjsipの設定例。<br>
 
とりあえずレジ、発着信ができるとこまで確認しましたが、この設定が完璧かどうかは疑問なので気付いた点のある方はページを更新してください。
 
とりあえずレジ、発着信ができるとこまで確認しましたが、この設定が完璧かどうかは疑問なので気付いた点のある方はページを更新してください。
12行目: 13行目:
 
*pjsip.conf
 
*pjsip.conf
 
:エンドポイント/トランク名として hikari-trunk を使用しています
 
:エンドポイント/トランク名として hikari-trunk を使用しています
まずトランスポートを書きます
+
*まずトランスポートを書きます
 
  ;トランスポートの設定
 
  ;トランスポートの設定
 
  [simpletrans]
 
  [simpletrans]
18行目: 19行目:
 
  protocol=udp
 
  protocol=udp
 
  bind=xxx.xxx.xxx.xxx ;グローバルを持っている場合には外へ出ていかないようにローカルIPを書く
 
  bind=xxx.xxx.xxx.xxx ;グローバルを持っている場合には外へ出ていかないようにローカルIPを書く
レジスタ情報を書きます
+
注) マシンがグローバルとローカルを持っている場合、挙動がおかしい気がします。どっちのアドレスを自分の『出』側にするかの問題なので、たぶんlocal_netを書けば大丈夫なはず(未検証)。
 +
*レジスタ情報を書きます
 
  ;トランク設定(レジストあり)
 
  ;トランク設定(レジストあり)
 
  [hikari-denwa]
 
  [hikari-denwa]
27行目: 29行目:
 
  client_uri=sip:内線番号@:xxx.xxx.xxx.xxx ;内線番号はHGWの内線の1桁番号(例:5@192.168.0.1)
 
  client_uri=sip:内線番号@:xxx.xxx.xxx.xxx ;内線番号はHGWの内線の1桁番号(例:5@192.168.0.1)
 
  retry_interval=60
 
  retry_interval=60
認証情報を書きます
+
*認証情報を書きます
 
  [hikari-trunk]
 
  [hikari-trunk]
 
  type=auth
 
  type=auth
33行目: 35行目:
 
  password=内線のパスワード
 
  password=内線のパスワード
 
  username=内線のユーザID ;通常は0005のようなやつ
 
  username=内線のユーザID ;通常は0005のようなやつ
AOR(Address Of Record)を書きます
+
*AOR(Address Of Record)を書きます
 
  [hikari-trunk]
 
  [hikari-trunk]
 
  type=aor
 
  type=aor
 
  contact=sip:xxx.xxx.xxx.xxx ;HGWのIPアドレス
 
  contact=sip:xxx.xxx.xxx.xxx ;HGWのIPアドレス
エンドポイントを定義します<br>
+
*エンドポイントを定義します<br>
 
from_userとfrom_domainが必要です。これはHGWが内線からの発信かどうかを識別するためです。<br>
 
from_userとfrom_domainが必要です。これはHGWが内線からの発信かどうかを識別するためです。<br>
 +
(注: from_userとfrom_domainです。fromuserとfromdomainではありません。英語のドキュメントでも間違っているのがあります)
 
  [hikari-trunk]
 
  [hikari-trunk]
 
  type=endpoint
 
  type=endpoint
50行目: 53行目:
 
  from_user=内線番号          ;1桁の内線番号
 
  from_user=内線番号          ;1桁の内線番号
 
  from_domain=xxx.xxx.xxx.xxx ;HGWのIPアドレスを指定します
 
  from_domain=xxx.xxx.xxx.xxx ;HGWのIPアドレスを指定します
トランク識別のためidentfyを書きます
+
dtmf_mode=inband
 +
*トランク識別のためidentfyを書きます
 
  [hikari-trunk]
 
  [hikari-trunk]
 
  type=identify
 
  type=identify
 
  endpoint=hikari-trunk
 
  endpoint=hikari-trunk
 
  match=xxx.xxx.xxx.xxx ;HGWのIPアドレス
 
  match=xxx.xxx.xxx.xxx ;HGWのIPアドレス
 +
 +
==リロード時の注意==
 +
一部の設定はモジュールのリロード(core module reload res_pjsip)では反映されないものがあるので、完全に反映させたい場合にはAsteriskの再起動が必要です。
 
==レジストの確認==
 
==レジストの確認==
 
  *CLI> pjsip show registrations
 
  *CLI> pjsip show registrations
62行目: 69行目:
 
   
 
   
 
   hikari-denwa/sip:xxx.xxx.xxx.xxx                        hikari-trunk      Registered
 
   hikari-denwa/sip:xxx.xxx.xxx.xxx                        hikari-trunk      Registered
 +
 
==ダイヤルプラン==
 
==ダイヤルプラン==
 
*発信
 
*発信
68行目: 76行目:
 
  exten => _0.,1,Set(CALLERID(num)=${MYNUMBER})
 
  exten => _0.,1,Set(CALLERID(num)=${MYNUMBER})
 
  exten => _0.,n,Set(CALLERID(name)=${MYNUMBER})
 
  exten => _0.,n,Set(CALLERID(name)=${MYNUMBER})
  exten => _0.,n,Dial(PJSIP/${EXTEN}@hikari-trunk
+
  exten => _0.,n,Dial(PJSIP/${EXTEN}@hikari-trunk)
 
*着信
 
*着信
 
pjsip.confで指定したコンテキストのsに飛んでくるだけです。
 
pjsip.confで指定したコンテキストのsに飛んでくるだけです。
 
  ;pjsip ひかり電話着信
 
  ;pjsip ひかり電話着信
 
  [from-hikari]
 
  [from-hikari]
  exten => s,1,Dial(SIP/201)
+
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}に入る。<br>
 +
続いて
 +
  exten => s,n, Goto(${toDN},1)
 +
のようにすると、
 +
03xxxx1234の追加番号に着信があるときは、
 +
exten => 03xxxx1234,1,Dial(SIP/201)
 +
に飛ぶ。<br><br>
 +
なお、NTT東日本の家庭用プランでの追加番号は最大4番号までで、合計5番号が使用できる。

2022年10月17日 (月) 13:21時点における最新版

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