NTTのひかり電話を契約しているフレッツ光ユーザーは、「ひかり電話ルーター」をレンタルします。私は、RV-S340(以下、ルーター)を借りています(VDSL回線用ですね)。このルーターのSIP機能に関するメモです。日曜プログラマ向け。
pjsipでSIPクライアントを作るときに注意すること
REGISTERは、すんなり成功します。
が、発信のためにINVITE(w/SDP)を送信すると、488応答で拒否されてしまいます。488応答ということは、SDPを許容できないとルーターが判断したことを意味します。同様に、着信時に200OK(w/SDP)を返信すると、やはりルーターはSDPを拒否します。
ということで、pjsipのSDPに関する挙動を変更する必要があります。コード変更するの面倒・・・と悩んでいたら、先人のいい情報見つけました。
最新のpjsua単体でひかり電話の発着信ができない - IGINブルネイ/syasudaの日記(MT版)
つまり、pjsip/include/pjsua-lib/pjsua.h の
# define PJSUA_SDP_SESS_HAS_CONN 0
↓
# define PJSUA_SDP_SESS_HAS_CONN 1
として、makeするとよいです。
公衆電話からの着信
Fromヘッダは、
From:"Coin line/payphone"<sip:anonymous@anonymous.invalid>;tag=hogehoge
のようになります。anonymous@anonymous.invalidは、非通知を表します。公衆電話からの発信なので非通知だよ、ということを表すために、 "Coin line/payphone" をつけているんでしょうね。
さいごに
「収容」の説明を探していて、面白いページを見つけたので、ご紹介。