Asteriskで内線電話を構築

Posted by joeartsea on 2009-03-22

Asteriskで内線電話を構築するのは比較的簡単です。ユーザを作成し内線番号がダイアルされた時の処理をextensions.confに記述すれば良いだけです。まず以下のようにユーザを2つ追加します。これで6000番と6001番の内線番号が使用可能になります。Asteriskのインストールを参照して適当なクライアントPCを登録してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# vi /etc/asterisk/users.conf
#以下を追加
[6000]
type=friend
username=6000
secret=1234
canreinvite=no
host=dynamic
[6001]
type=friend
username=6001
secret=1234
canreinvite=no
host=dynamic

次にそれぞれの番号がダイアルされた時の処理をextension.confに記述します。

1
2
3
4
5
6
7
# vi /etc/asterisk/extensions.conf
#[default]の下に以下を追加
[default]
exten = 6000,1,Dial(SIP/6000)
exten = 6000,n,HangUp
exten = 6001,1,Dial(SIP/6001)
exten = 6001,n,HangUp

これで2つの番号で内線を利用できるようになるでしょう。必ずdefaultコンテキスト([default])の下に記述してください。デフォルトではdefaultコンテキストの中に書かれた処理しか実行されません。exten構文についての詳細はExtension道場をご覧ください。実際は以下のように構文を駆使して冗長な書き方を回避します。

1
2
3
4
5
6
exten = _60XX,1,Dial(SIP/${EXTEN},,tT)
exten = _60XX,n,GotoIf($["${DIALSTATUS}"="BUSY"]?busy)
exten = _60XX,n,GotoIf($["${DIALSTATUS}"="CONGESTION"]?busy)
exten = _60XX,n,Hangup
exten = _60XX,n(busy),Playback(vm-nobodyavail)
exten = _60XX,n,WaitExten(90)