Asteriskに接続している一部のクライアントはIAX2で通信するようにしたのだが、 もう1台はZoiPerではなくbaresip+を使っているので、 IAX2にすることはできない。 そこで、この端末についてもchan_sipではなくPJSIPに乗り換えることにした。
PJSIP自体は、既にひかり電話のホームゲートウェイに接続するのに利用しているので、それも合わせて、以下のように設定すれば良い。
PJSIPでAsteriskにregisterするには、Asterisk 16はデータベースを使えるようになっている必要がある。
pkgsrc/comms/asterisk16の場合には、標準ではSQLite3が利用され、/var/db/asterisk/astdb.sqlite3にデータベースファイル
が置かれている。
今回は、なぜかこのデータベースファイルの所有者が別ユーザーになっており、SQL errorが起きていたのを無視していたため、
端末がAsteriskにregisterできなかった。ユーザーIDとパスワードの認証までは通過できるのだが、着信できない状態になってしまった。
pjsip.confは、以下のようにした。
[general] match_auth_username = yes [system] type = system disable_rport = yes [transport-udp] type = transport protocol = udp bind = 0.0.0.0 ; 外線: ひかり電話 [hikari-denwa] type = registration transport = transport-udp outbound_auth = hikari-trunk server_uri = sip:10.81.0.1 client_uri = sip:3@10.81.0.1 retry_interval = 60 [hikari-trunk] type = auth auth_type = userpass username = 0003 password = 0003_password [hikari-trunk] type = aor contact = sip:3@10.81.0.1 [hikari-trunk] type = endpoint transport = transport-udp context = default disallow = all allow = ulaw outbound_auth = hikari-trunk aors = hikari-trunk direct_media = no from_user = 3 from_domain = 10.81.0.1 dtmf_mode = inband [hikari-trunk] type = identify endpoint = hikari-trunk match = 10.81.0.1 ; 内線: baresip+ on Amazon Kindle Fire HD 8 gen10 [fire8] type = aor max_contacts = 1 qualify_frequency = 60 remove_existing = yes [fire8] type = auth auth_type = userpass username = fire8 password = user3_password [fire8] type = endpoint transport = transport-udp context = default disallow = all allow = ilbc,ulaw,alaw,gsm,g729,g723 aors = fire8 auth = fire8 ;outbound_auth = fire8 dtmf_mode = rfc4733 force_rport = yes ice_support = no rtp_symmetric = yes direct_media = no rewrite_contact = yes device_state_busy_at = 1
これに合わせて、extensions.confも変更し、発信・着信できるようにする。
[default]
;include => stdexten
; 着信
;; 内線
;;; 自動応答
exten => 1290,1,Playback(demo-congrats) ; 動作チェック用
;;; 各端末
exten => 101,1,Dial(IAX2/user1,20,rt)
exten => 103,1,Dial(IAX2/user2,20,rt)
exten => 104,1,Dial(PJSIP/fire8,20,rt)
;; 外線
exten => 55863768,1,Dial(IAX2/user1&IAX2/user2&PJSIP/fire8,20,rt)
exten => 53077771,1,Dial(IAX2/user1&lIAX2/user2&PJSIP/fire8,20,rt)
exten => s,1,Dial(IAX2/user1&IAX2/user2&PJSIP/fire8)
; 発信
;; Fusion SMARTalkの場合には9で発信する。
exten => _9.,1,NoOp(Fusion発信9)
exten => _9.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _9.,n,Dial(PJSIP/${EXTEN:1}@fusion1,120,T)
exten => _9.,n,Hangup()
;; Fusion SMARTalkの場合には8で発信する。
exten => _8.,1,NoOp(Fusion発信8)
exten => _8.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _8.,n,Dial(PJSIP/${EXTEN:1}@fusion2,120,T)
exten => _9.,n,Hangup()
;; ひかり電話の場合には7で発信する。
exten => _7.,1,NoOp(ひかり電話で発信7)
exten => _7.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)
exten => _7.,n,Hangup()

