RT-200NE対応パッチ

2009年2月16日 (月) 19:51時点におけるKei ef 2000 (トーク | 投稿記録)による版 (マイナンバー(複数番号)を使用する場合)

NTT東日本のひかり電話対応ルータ RT-200NE をAsteriskで使用するためのパッチです。
なお、RT-200NEを使用しない場合には、このパッチを適用する必要はありません。

目次

ダウンロード

Asteriskのバージョンによって使用可能なパッチが異なりますので注意してください。

  • Asterisk 1.2系
- Asterisk 1.2.7~1.2.17 までで使用可能版
ftp://ftp.voip-info.jp/asterisk/patch/local/1.2/channels/chan_sip.c.rt200ne.070417-01.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.2/channels/chan_sip.c.rt200ne.070417-01.patch
- Asterisk 1.2.18~1.2.25 までで使用可能版
ftp://ftp.voip-info.jp/asterisk/patch/local/1.2/channels/chan_sip.c.rt200ne.070719-01.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.2/channels/chan_sip.c.rt200ne.070719-01.patch
  • Asterisk 1.4系
- Asterisk 1.4.0 (注:Asterisk 1.4.0でのみ使用可能)
ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-00.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-00.patch
- Asterisk 1.4.1 (注:Asterisk 1.4.1でのみ使用可能)
ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-01.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-01.patch
- Asterisk 1.4.2~(今のところ1.4.31まで使用可能なのを確認しています)
ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-02.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-02.patch
  • Asterisk 1.6系
- Asterisk 1.6.0(パッチ・イニシャル・リリース)
ftp://ftp.voip-info.jp/asterisk/patch/local/1.6/channels/chan_sip.c.rt200ne.081006-01.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.6/channels/chan_sip.c.rt200ne.081006-01.patch
- Asterisk 1.6.0(差分修正版:通常はこちらを使用してください)
ftp://ftp.voip-info.jp/asterisk/patch/local/1.6/channels/chan_sip.c.rt200ne.090204-01.patch
http://ftp.voip-info.jp/asterisk/patch/local/1.6/channels/chan_sip.c.rt200ne.090204-01.patch

パッチ方法

Asteriskのソースディレクトリにダウンロードし

# patch -p0 < パッチファイル

で、実行してください。パッチファイルはソースのベースディレクトリからの差分になっています。

使用方法

sip.confの[general]セクションにRT-200NEのIPアドレスを書きます。

rt200ne=192.168.0.1

複数台のRT-200NEを接続する場合には次のように複数行で書きます。

rt200ne=192.168.0.1
rt200ne=192.168.0.2
rt200ne=192.168.0.3

なおデフォルトでは最大、4台までのRT-200NEが登録可能です。この数を増やすにはMAX_RT200NEの数値を増やしてmakeしなおしてください。資源節約のため、この値はコンパイル時オプションです。
Expireyは現在のところ以下のように3600で指定しています。

maxexpirey=3600
defaultexpirey=3600

REGISTERは普通に書きます。

;RT-200NE
register => 内線番号:パスワード:ユーザID@192.168.0.1/exten

例えばこんな感じです。

register => 3:pass:0003@192.168.0.1/1000

なおAsteriskを登録する内線番号の端末属性はRT-200NE側で「音声端末」に設定しておく必要があります。

RT-200NE用のセクションは次の例を参考にしてください(要らないものもあるかも)。
insecure=veryは発信者番号を通知してこない相手からの接続を受け付けるのに必要なはずです(注:Asterisk 1.4系ではinsecure=inviteを指定してください_。

[192.168.0.1]
type=friend
secret=pass
Port=5060
username=0003
fromuser=3
host=192.168.0.1
contexet=default
insecure=very
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
pickupgroup=1

RT-200NEが複数台ある場合には、それぞれのIPアドレスについてセクションを作成してください。

ダイアルするにはextensions.confに以下のように記述します(0で始まる場合は、ひかり電話でダイアルする例)。

exten => _0.,1,Set(CALLERID(num)=03xxxxxxxx)
exten => _0.,2,Set(CALLERID(name)=03xxxxxxxx)
exten => _0.,3,Dial(SIP/${EXTEN}@192.168.0.1,60,T)

念のためCaller IDを自分のひかり電話番号に設定していますが、これは要らないかもしれません。

着信番号

複数番号を契約しており、どの番号に着信したかを知るには RT-200NE を参照してください。

マイナンバー(複数番号)を使用する場合

どの番号に着信したかを知る方法はSIPのヘッダを見ることでも可能ですが、RT-200NE側が着信番号を特定の端末(アナログでもIPでも)に縛るのを利用すると、Asteriskは複数の端末としてRT-200NEに対してRegisterすることで複数番号で別な処理を走らせることができます。
注意:機種によっては複数REGISTERできないものもあります。また複数REGISTERしても同時には使用できない場合もありますので注意してください。
注意2:RT-200NE,PR-200NEでもファームの最新バージョンでは複数Registerができません。

Registerひとつで着信番号を切り分ける方法はRT-200NE#複数番号の切り分け


-----sip.conf
;RT-200NE-1
register => 内線番号1個目:パスワード1個目:ユーザID1個目@rt200ne-1/1番目の着信exten
;RT-200NE-2
register => 内線番号2個目:パスワード2個目:ユーザID2個目@rt200ne-2/2番目の着信exten

内線番号やユーザ名はRT-200NEに登録したそれぞれ「別な」IP端末のものを指定します。

それぞれのセクションをsip.confに記述します。

[rt200ne-1]
type=friend
secret=パスワード1個目
username=ユーザID1個目
fromuser=内線番号1個目
fromdomain=192.168.0.1
host=192.168.0.1
contexet=default
insecure=port,invite
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
pickupgroup=1

[rt200ne-2]
type=friend
secret=パスワード2個目
username=ユーザID2個目
fromuser=内線番号2個目
fromdomain=192.168.0.1
host=192.168.0.1
contexet=default
insecure=port,invite
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
pickupgroup=1

この場合にはfromdomainを付けないとregisterできません。
着信extenの書き方は通常通りです。先のregister=>で別な着信用extenを指定しておけばいいだけです。 発信する場合にはそれぞれの番号に対応する内線(SIPピア)からダイアルします。発信者番号に何を通知するかの指定がRT-200NEでしかできないためです。
1個目の番号から発信するならば

Dial(SIP/${EXTEN}@rt200ne-1)

2個目の番号から発信するならば

Dial(SIP/${EXTEN}@rt200ne-2)

のようにしてそれぞれの内線から発信を実行する必要があります。 この方法で、マイナンバーで5番号を取り、それを全部Asteriskで使用する場合には、Asteriskが5つの内線としてregisterする必要があるためRT-200NEのアナログポートは使えなくなります。

しくみ

rt200ne= に設定したIPアドレスとピアのIPアドレスが一致した場合、URIを組み立てなおします。rt200ne= に一致しないアドレスに関してはURIを組み立て直さないためRT-200NE以外のSIPチャネルには影響を与えない「はず」です。 最初[general]のところでパラメータ名を複数指定するのにスマートな方法がないので悩んでたんですが、Asteriskのパラメータ取り込み構造上、同じ名前でエントリを複数書くと次々と取り込まれるので、内部の配列に書き込んでいけばよかったわけでして。

CLIコマンド

CLIコマンドに sip show rt200neが追加されています。

*CLI> sip show rt200ne
RT-200NE at ..
- 192.168.0.1
- 192.168.0.2