RT-200NE対応パッチ

提供: VoIP-Info.jp
2007年4月17日 (火) 08:49時点におけるTakahashi (トーク | 投稿記録)による版 (ダウンロード)
移動先: 案内検索

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

ダウンロード

  • Asterisk 1.2系
ftp://ftp.voip-info.jp/asterisk/patch/local/1.2/channels/chan_sip.c.rt200ne.070417-01.patch

Asterisk 1.2.7~1.2.17 で使用可能です。

  • Asterisk 1.4系
- Asterisk 1.4.0
ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-01.patch
- Asterisk 1.4.1
ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-02.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は発信者番号を通知してこない相手からの接続を受け付けるのに必要なはずです。

[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を自分のひかり電話番号に設定していますが、これは要らないかもしれません。

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

どの番号に着信したかを知る方法はSIPのヘッダを見ることでも可能ですが、RT-200NE側が着信番号を特定の端末(アナログでもIPでも)に縛るのを利用すると、Asteriskは複数の端末としてRT-200NEに対してRegisterすることで複数番号で別な処理を走らせることができます。

-----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=very
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=very
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