LoginSignup
16
18

More than 5 years have passed since last update.

Asterisk + FUSION IP-PhoneでIP電話サーバーの構築

Posted at

使うもの

  • 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
16
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18