twilio に SIPクライアントを追加するときの注意(特にスマホ)

twilio で電話をクラウド化という記事の中で、SIPクライアントとしてスマホ用アプリの GS Wave と Windows用ソフトの MicroSIP の設定をご紹介しましたが、運用していく中で問題が出てきたので共有したいと思います。

この問題については、「スマホを外に持ち出す」環境で使う場合が該当します。もっぱら社内Wi-Fi だけで使ってるような場合は、ほぼ関係ありません。

今回起きた問題というのが、twilio の1つのエンドポイントに 1IPアドレスからは最大10個までしか SIP REGISTER できない、という制限です。

twilio の各種制限についてはドキュメントに書いてあります。


要約すると、


・SIP Domain は 1アカウントあたり、100個まで

・SIP Endpoint に登録できるのは 1IPアドレスにつき 10個まで

・登録できる SIP Credential List は 1 SIP Domain あたり 100個まで。かつ、各リストに登録できるユーザは 1,000ユーザまで


となり、今回問題となっているのは 2つめの、「SIP Endpoint に登録できるのは 1IPアドレスにつき 10個まで」という内容です。

さて、SIP REGISTER はステートレスな作業のため、いつの間にかセッションが切れている、ということがおきます。たとえば、ユーザの回線が切れてしまった、ユーザ側の IPアドレスが変わって、途中の NAPTルータが NAPT変換テーブルを破棄した、などが考えられます。

そこで、SIP REGISTER には消費期限(Session Expiration)があって、定期的に SIP REGISTER を行う必要があります。Session Expiration は SIP REGISTER するときに、SIPクライアント側からリクエストします。

twilio の仕様では、この SIP REGISTER について、最小600秒(10分)から最大3,600秒(60分)の間で設定しろ、となっています。

twilio はこの 600~3,600秒の Session Expiration から外れる値のリクエストについては "423 Interval too brief" エラーを返します。

そして、このリクエストされた Session Expiration の間は、SIP REGISTER の情報を保持します。

さて、クライアント側では Session Expiration をリクエストしますが、このリクエストした Session Expiration まで待っていてはセッションが切れてしまいます。

そこで、自分がリクエストした Session Expiration より短い時間の中で、再度、SIP REGISTER を送ります。

例えば、Session Expiration を 800秒に設定した場合、400秒ごとに SIP REGISTER を送れば、途切れることなく登録し続けることが期待されます。

ただし、IPアドレスが変わった際などは、前のセッション情報はすでに意味をなしませんから、改めて SIP REGISTER を送ることになります。

ここで社内Wi-Fi などで運用している場合は、最大でも 2個程度のセッションしか残らないので問題ありません。(古いセッションは消費期限をすぎれば消されていくため)

ただ、スマホを使っているユーザは頻繁に IPアドレスが変わるなどの理由で、頻繁に SIP REGISTER が送られることがあります。

これを繰り返すと前述した、「SIP Endpoint に登録できるのは 1IPアドレスにつき 10個まで」の成約に引っかかってしまうのです。


GS Wave の場合、デフォルトの設定ではリクエストする Session Expiration は 3,600秒(60分)、SIP REGISTER は 180秒ごとに送るようになっています。

これは場合によっては 10回目のリクエスト(初登録から 30分後)には、制限に引っかかることになってしまいます。一応、SIP REGISTER を送る前に、SIP UNREGISTER(登録解除)も送るので、本来はフローを起こすはずはないのですが、前述したスマホで移動してるときなど、IPアドレスが頻繁に変わるような状況だと、SIP UNREGISTER もうまく動かず、10個以上のアクティブな SIP REGISTER が残ってしまうことがあります。

解決方法はカンタンです。GS Wave の設定を変えてしまいます。

GS Wave を開き、Settings、Account Settings、該当のSIPクライアント設定に進みます。


画像1


Unregister Before New RegistrationUnregister All に変更します。

Register Expiration(m)10 に変更します。単位は、分です。

これだけで ok です。

twilio console の Registered SIP Endpoints から確認すると、2個程度のアクティブな SIP REGISTER だけが確認できると思います。



目次

twilio で電話をクラウド化

クラウドPBX、twilio で 050番号から外線発信

クラウドPBX、twilio で着信

クラウドPBX、twilio で内線通話

twilio に SIPクライアントを追加するときの注意(特にスマホ) (この記事)

クラウドPBX、twilio を VoIPフォンで使う(Panasonic KX-UT248)

VoIP回線でファックスを使う

twilio + GRANDSTREAM GRP2613

twilio + GRANDSTREAM GXP1625

twilio + GRANDSTREAM VoIPフォンでカスタム保留音

アナログ電話回線を FXO ATA、Grandstream HT813 を使って Twilio に収容

この記事が気に入ったらサポートをしてみませんか?