自分用メモとしての記載
ひかり電話のIPv6
ひかり電話ではIPv4/v6の両方でSIPを受けることができる。IPv4のみの対応の場合、相手がIPv6でかけてきた場合、受けることができない。
参考:スマホ de ひかり電話 で一部電話番号に発信できない
そこでIPv6のRegisterを行う必要がある。IPv6をRegisterする場合IPv4でのRegister時にまとめてIPv6のアドレスをContactヘッダーに乗せる必要がある。
参考:音声利用 IP 通信網サービス(第 2 種サービス タイプ 2)
Asteriskでの設定
Asteriskのpjsip.confを見るとcontactをRegister時に追加で送るような設定は見当たらない。
しかし、type=registerのcontact_header_paramsを設定するとContactヘッダーの後ろにkey=valueのような形式でパラメータをつけることができる。
目標とするContactヘッダーの中身は以下の通りである(IPv6アドレスは[]で囲む)。
Contact: <sip:電話番号@v4アドレス:5060>,<sip:電話番号@v6アドレス:5060>;
試行錯誤したところ、","をcontact_header_paramsで送るには二重引用符でくくってAsteriskで特殊文字でなく文字として判定させればいいことが分かった。
その結果、以下のような形で設定を行うとRegister時に余計なパラメータが付くがIPv4/v6のRegisterが行えることが分かった。
contact_header_params = a="\",<sip:電話番号@v6アドレス:5060>\;a=\"v"
Register以外の設定について
transport, aor, identify, endpointについてはIPv4と同様の設定をIPv6アドレスで行う必要がある。
SIPサーバーのIPv6アドレスはDHCPv6で取得することが可能。