26
3月

Asteriskとひかり電話で外線接続

AsteriskはIP-PBXなのでひかり電話とつなぐのは簡単です。ひかり電話のゲートウェイ、通常は光回線の終端装置&ルータにAsteriskをregisterすればすぐ使えるようになります。ルータ側の設定は機種やファームウェアのバージョンによって少し違うようです。うちの環境はPR-200NEという機種でファームウェアのバージョンは6.38でした。

まずAsteriskをひかり電話に対応させるにはパッチを当てる必要があります。基本的にはAsteriskのソースにパッチを当てて再コンパイルすればOKです。パッチを当てる具体的な手順は以下のようなやり方になります。なお設定ファイルが初期化されてしまうのでmake configは実行しないでください。

# cd asterisk-1.4.24
# wget ftp://ftp.voip-info.jp/asterisk/patch/local/1.4/channels/chan_sip.c.rt200ne.070417-02.patch
# patch -p0 < chan_sip.c.rt200ne.070417-02.patch ./channels/chan_sip.c
# ./configure
# make
# make install
# cd

ここでは話を単純にするためにmake installするように書きましたが実は再コンパイル後にchannels/chan_sip.soを/usr/lib/asterisk/modules/に上書きするだけでも構いません。

次にブラウザでPR-200NEの管理画面にアクセスして「電話設定」→「内線設定」で内線の設定を行います。とりあえず3番から空いていたので3番にAsteriskを登録することにします。ユーザーIDに「0003」とパスワードに「1234」としました。内線番号とニックネームはそのまま。端末属性は必ず「音声専用端末」を選択してください。古いバージョンでは「音声端末」という表記らしいです。

送信者 Blog

ではAsteriskをPR-200NEに登録します。登録はsip.confのgeneralセクションに記述します。同時にPR-200NEのセクションを追加します。ルータの機種名はPR-200NEですがパッチがRT-200NE用なのでセクション名は「rt200ne-1」としました。

ちなみにdefaultexpireyとmaxexpireyの記述がないと「423 Interval Too Brief」というエラーでレジストできないそうなので必ず記述してください。なお使用するルータのIPアドレスは192.168.1.1というケースでの記述になります。環境に合わせて書き換えてください。

# vi /etc/asterisk/sip.conf
#[general]セクションに以下を追加
[general]
maxexpirey=3600
defaultexpirey=3600
rt200ne=192.168.1.1
register => 3:1234:0003@rt200ne-1/6000

[rt200ne-1]
type=friend
secret=1234
username=0003
fromuser=3
fromdomain=192.168.1.1
host=192.168.1.1
context=default
insecure=very
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw

登録されたかどうかの確認は以下のようにします。

# asterisk -vvvvvr
asterisk*CLI> ←Asterisk CLIが起動する
asterisk*CLI> sip show registry
rt200ne-1:5060    3     3585 Registered    Fri, 26 Mar 2009 10:00:10

さらにusers.confに6000をユーザとして記述します。また電話機側のユーザとして7000も追加します。

# vi /etc/asterisk/users.conf
#以下を追加
[6000]
type=friend
username=6000
secret=1234
canreinvite=no
host=dynamic

[7000]
type=friend
username=7000
secret=1234
canreinvite=no
host=dynamic

あとはextension.confで外線の発着信設定を記述するだけです。

# vi /etc/asterisk/extensions.conf
#[default]セクションに以下を追加
[default]
;;7000番台内線着信
exten = _70XX,1,Dial(SIP/${EXTEN},,tT)
exten = _70XX,n,GotoIf($["${DIALSTATUS}"="BUSY"]?busy)
exten = _70XX,n,GotoIf($["${DIALSTATUS}"="CONGESTION"]?busy)
exten = _70XX,n,Hangup
exten = _70XX,n(busy),Playback(vm-nobodyavail)
exten = _70XX,n,WaitExten(90)

;;外線着信
exten = 6000,1,Dial(SIP/7000,,tT)
exten = 6000,n,Hangup

;;外線発信
exten = _1XX,1,Dial(SIP/${EXTEN}@rt200ne-1,,tT)
exten = _1XX,n,Hangup
exten = _0.,1,Dial(SIP/${EXTEN}@rt200ne-1,,tT)
exten = _0.,n,Hangup
exten = _[3456]XXXXXXX,1,Dial(SIP/${EXTEN}@rt200ne-1,,tT)
exten = _[3456]XXXXXXX,n,Hangup

外線着信はregisterで6000番が呼ばれるように設定したので6000に対してextenを記述します。ちなみに_1XXが117(時報)とか177(天気予報)などの特番、_0.はゼロ発信なので市外局番から押した番号全て、[3456]XXXXXXXは東京を市内通話でかけられる感覚で3、4、5、6で始まる番号は東京とみなして発信する設定です。


タグ

, , , , , ,

関連する投稿

コメントはまだありません

コメントはまだありません。

コメントを書く

コメントRSS   トラックバックURL

?>-->