使うもの
-
Asterisk(IP-PBX)
- 要するにIP電話のRoutingやってくれるサーバー
- CSシステムとかよく使われる
-
FUSION IP-Phone SMART
- IP-PBXと電話回線を繋ぐサービス(050で番号ふってくれる => 外部へ電話かけたり、受信できる)
-
FreePBX(X-Lite,Zoiper)
- iphoneとかMac用のIP電話クライアント
Asteriskサーバーセットアップ手順
setup-asteriks.sh
## 必要なパッケージ
yum groupinstall "Development Libraries" "Additional Development"
yum install gcc gcc-c++
yum install libxml2 libxml2-devel openssl-devel ncurses-devel sqlite-devel newt-devel
yum install libuuid-devel uuid-devel
yum install subversion
yum install unixODBC unixODBC-devel mysql-connector-odbc
yum install libtool-ltdl libtool-ltdl-devel
## Asteriskインストール
cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11.8.1.tar.gz
tar xvzf asterisk-11.8.1.tar.gz
cd asterisk-11.8.1
./configure
make; make install; make samples
make config
ldconfig
Asteriskに接続する端末登録
- SIP接続 --> sip.conf
- IAX2接続 ---> iax.conf
例
sip.conf
[general]
maxexpirey=3600
defaultexpirey=3600
context=default
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=ja ;localnet=192.168.0.0/255.255.0.0
allowguest=no
register=>58846059:23X8k75f@smart.0038.net
[201]
type=friend
defaultuser=201
secret=hogehoge
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
callgroup=1
pickupgroup=1
[202]
type=friend
defaultuser=202
secret=hogehoge1
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
callgroup=1
pickupgroup=1
[fusion-smart]
type=friend
username==xxxxxxx
fromuser==xxxxxxx
secret=yyyyyyy
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=prot,invite
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
dtmfmode=inband
nat=yes
ダイヤルプラン登録
- extentions.conf
- ダイヤルプラン: 着信&発信の呼をどう処理するか決めるもの
- ダイヤルプランはコンテキスト([]で題名つけたグループ)と呼ばれる複数のセクションに分かれる
- 各コンテキスト内には、エクステンションを定義できる
- エクステンションの構成要素
エクステンション名
プライオリティ
アプリケーション
ex:)201をダイヤルしたらダイヤルされた番号を呼び出す
exten => _201,1,Dial(SIP/${EXTEN},30,tTwW)
exten => _201,n,Hangup
ダイヤルプラン参考例
- 自作の時報と内線通話ができる最低限の設定
extensions.conf
[general]
writeprotect=no
priorityjumping=no
[globals]
SPEAKINGCLOCK=317
ECHOTEST=333
SMARTNO=xxxxxxx
[default]
; Speaking Clock(時報)
exten => ${SPEAKINGCLOCK},1,Answer()
exten => ${SPEAKINGCLOCK},n,Wait(1)
exten => ${SPEAKINGCLOCK},n,Set(FutureTime=$[${EPOCH} + 5])
exten => ${SPEAKINGCLOCK},n,SayUnixTime(${FutureTime},Japan,YbdAPHM)
exten => ${SPEAKINGCLOCK},n,Playback(jp-desu)
exten => ${SPEAKINGCLOCK},n,playback(beep)
exten => ${SPEAKINGCLOCK},n,Hangup
; Echo Test(エコーテスト)
exten => ${ECHOTEST},1,Answer
exten => ${ECHOTEST},n,Wait(1)
exten => ${ECHOTEST},n,Playback(demo-echotest)
exten => ${ECHOTEST},n,Playback(beep)
exten => ${ECHOTEST},n,Echo
exten => ${ECHOTEST},n,Playback(demo-echodone)
exten => ${ECHOTEST},n,Playback(vm-goodbye)
; 内線呼出
; Local SIP phones 201-209
exten => _20Z,1,Dial(SIP/${EXTEN},,tT)
exten => _20Z,n,Hangup
exten => ${SMARTNO},1,Dial(SIP/201)
exten => ${SMARTNO},2,Hangup
exten => _9.,1,Dial(SIP/fusion-smart/${EXTEN:1})
Asteriskサーバー起動
/etc/init.d/asterisk start
Asterisk CLI
asterisk -vvvcr
で接続
# CLI終了
asterisk-test1*CLI> quit
# Asterisk再起動
asterisk-test1*CLI> core restart gracefully
# peer接続状態確認
asterisk-test1*CLI> sip show peers
# sip.conf再読み込み
asterisk-test1*CLI> sip reload
# extensions.conf再読み込み
asterisk-test1*CLI> dialplan reload
# Registの確認
asterisk-test1*CLI> sip show registry