AsteriskとISDN回線で外線接続

電話やFAXというツールは言わずと知れたレガシーツールでビジネスの生命線であるため、ひかり電話の不具合などVoIPに対する信頼の低さから経営者は公衆電話網からの完全移行には慎重です。良くて「IP電話網も取り入れるが公衆電話網も維持する」といったところでしょう。

インターネット回線は光だけど現在でも電話・FAXはISDN回線で運用しているという企業は意外と多いと思います。今回はISDN回線をLANにつなぎ、外線にAsteriskをregisterして外線発着信する設定を行います。ISDN回線をLANにつなぐゲートウェイにはICOMのVE-IG1を使用します。

VE-IG1にはDHCPクライアント機能がなく固定IPでしか動かないので適当なPC端末と直接つなぎます。VE-IG1のデフォルトのIPアドレスは192.168.0.1です。VE-IG1をつないでブラウザで192.168.0.1を開くとルータの設定画面のような画面が開きます。今回設定した画面はVer. 2.06です。Ver. 1.01の設定はICOM VE-IG1をどうぞ。

まずは「ネットワーク設定」で本体名称・IPアドレス・サブネットマスク・デフォルトゲートウェイを設定して再起動します。ローカルネットワーク環境に合わせた設定が完了すればLANに接続しても構いません。例ではVE-IG1のipアドレスを192.168.1.1にしたとします。

| 送信者 Blog |

次に「電話設定」→「ISDN回線設定」の「契約者回線番号設定」に電話番号(契約回線)・着信内線番号・ISDN回線専用発信番号を設定します。着信内線番号はAsteriskで使用される番号です。空き内線番号を割り振ってください。

| 送信者 Blog |

そして「電話設定」→「主装置設定」の「主装置接続設定」で内線ドメイン・パスワード、「内線設定」で主装置名称・内線番号を設定し1番目の登録に追加します。登録されると「現在の登録」リストに表示されます。主装置とか内線ドメインと言われるといかにもAsteriskのことを指してそうですが、これはVE-IG1自身のことです。

内線ドメインにはVE-IG1のIPアドレスを入力します。例であれば192.168.1.1です。このあとVE-IG1にAsteriskを登録します。その登録が完了すれば「現在の登録」リストの右端の「IPアドレス」欄にAsteriskのIPアドレスが表示されます。ちなみに例ではAsteriskのIPアドレスを192.168.1.2とします。

| 送信者 Blog |

ちなみにVE-IG1にISDN回線を接続しても電話回線が正常に利用できない場合は「U点極性」を疑ってください。NTT指定業者などが電話回線を引く際、2股に分かれた電話線をどちら向きに接続したかは案外適当なもので、VE-IG1にISDN回線を挿す「U点」に対する向きと逆であれば電話回線は正常に使えません。

VE-IG1の裏面に「ISDN-U」というスイッチがありますのでコレを切り替えることによってU点の向きを変えることができます。U点の向きを変えて回線の向きと合わせればつながります。

ではAsteriskをVE-IG1に登録します。登録はsip.confのgeneralセクションに記述します。同時に主装置名称のセクションを追加します。

vi /etc/asterisk/sip.conf
[general]
context = default
maxexpirey = 3600
defaultexpirey = 3600
allowoverlap = no
bindport = 5060
bindaddr = 0.0.0.0
srvlookup = yes
language = jp
register = 6003:pass@VE-IG1-1/8003

[VE-IG1-1]
type = friend
username = 6003
secret = pass
context = default
canreinvite = no
host = 192.168.1.1
fromdomain = 192.168.1.1
fromuser = 6003
insecure = very
disallow = all
allow = ulaw

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

asterisk -vvvvvr
asteriskCLI> ←Asterisk CLIが起動する 
asteriskCLI> sip show registry 
VE-IG1-1:5060 6003 3585 Registered Fri, 27 Mar 2009 19:27:13

```

このようにRegisteredと表示されればVE-IG1にAsteriskが登録されました。

次にVE-IG1の内線番号をusers.confに記述します。ついでに前回記述したusers.confをもう少し効率良く書き直します。users.confにもgeneralセクションを記述して全てのユーザが共通する設定はgeneralセクションに書いてしまいます。こうすれば各ユーザ設定の記述は簡略化されます。

今回追加するユーザはVE-IG1の内線番号で6003です。通常のユーザはVE-IG1と区別するため6000番台から7000番台に変更しました。

# vi /etc/asterisk/users.conf
[general]
fullname = New User
userbase = 6000
hasvoicemail = no
vmsecret = 1234
hassip = yes
hasiax = no
hasmanager = no
callwaiting = no
threewaycalling = no
callwaitingcallerid = no
transfer = yes
canpark = yes
cancallforward = no
callgroup = 1
pickupgroup = 1
host = dynamic
localextenlength = 4
allow_aliasextns = no
allow_an_extns = no
hasagent = no
hasdirectory = no
type = friend
canreinvite = no

[6003]
cid_number = 6003
fullname = 6003
secret = pass

[7000]
cid_number = 7000
fullname = 7000
secret = pass

[7001]
cid_number = 7001
fullname = 7001
secret = pass

最後にextensions.confに外線発着信設定を記述します。これも効率的に書き直します。

vi /etc/asterisk/extensions.conf
[default] 
;;7000番台内線着信 
exten = _70XX,1,Dial(SIP/*EXTEN*,,*tT*)*
exten*=70*XX*, *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 = 8003,1,Dial(SIP/7000&SIP/7001,,tT) 
exten = 8003,n,GotoIf($["${DIALSTATUS}“=”BUSY“]?busy) 
exten = 8003,n,GotoIf($["${DIALSTATUS}”=“CONGESTION”]?busy) 
exten = 8003,n,Hangup 
exten = 8003,n(busy),Playback(vm-nobodyavail) 
exten = 8003,n,Hangup

;;外線発信 
exten = *1XX,1,Dial(SIP/9EXTEN : 1@VE − IG1 − 1,,tT)
exten=1XX, n, Hangup
exten=0., 1, Dial(SIP/9{EXTEN:1}@VE-IG1-1,,tT) 
exten = 0.,n,Hangup 
exten = [3456]XXXXXXX,1,Dial(SIP/9${EXTEN:1}@VE-IG1-1,,tT) 
exten =* [3456]XXXXXXX,n,Hangup```

外線着信はregisterで8003番が呼ばれるように設定したので8003に対してextenを記述します。外線発信はVE-IG1の「ISDN回線専用発信番号」の項目をプレフィクス「9」にしましたので9${EXTEN:1}として、押した番号の先頭に自動的に9が付与されるように記述します。

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