把Asterisk装备上FXO做成IPPBX.docx
《把Asterisk装备上FXO做成IPPBX.docx》由会员分享,可在线阅读,更多相关《把Asterisk装备上FXO做成IPPBX.docx(19页珍藏版)》请在冰豆网上搜索。
把Asterisk装备上FXO做成IPPBX
Asterisk系统能够配合一种叫做Zaptel的通信板卡,这种板卡上面又可以支持好多模块实现多种功能。
可以连接PSTN、ISDN等等电路网络,从而变成真正意义上的IPPBX,变成中继网关,使得Asterisk的功能再一次更加丰富强大起来。
系统环境:
CentOS4.4,并且预安装开发库以及开发工具(编译需要)。
Zeptel四语音模块TDM400板卡,以及4个FXO语音模块。
基本上需要的源码包有两个:
zaptel-1.4.6.tar.gz
asterisk-1.4.13.tar.gz
注意:
安装顺序必须是先Zaptel再安装Asterisk。
由于这里不涉及中继电路,所以暂不包含LibPRI部分。
一.编译安装Zaptel:
1.解压Zaptel源码包
[root@IPPBX~]#tar-zxvfzaptel-1.4.6.tar.gz
2.进入Zaptel包内
[root@IPPBXzaptel-1.4.6]#cdzaptel-1.4.6
3.进行编译Zaptel前的预配置
[root@IPPBXzaptel-1.4.6]#./configure
4.清除陈旧的已编译文件
[root@IPPBXzaptel-1.4.6]#makeclean
5.编译Zaptel
[root@IPPBXzaptel-1.4.6]#makeall
6.安装Zaptel
[root@IPPBXzaptel-1.4.6]#makeinstall
二.编译安装Asterisk源码包:
1.解压Asterisk源码包
[root@IPPBX~]#tar-zxvfasterisk-1.4.13.tar.gz
2.进入Asterisk包内
[root@IPPBX~]#cdasterisk-1.4.13
3.进行编译Asterisk前的预配置,并制定安装路径。
[root@IPPBXasterisk-1.4.13]#./configure--prefix=/usr/local
4.清除陈旧的已编译文件
[root@IPPBXasterisk-1.4.13]#makeclean
5.编译Asterisk
[root@IPPBXasterisk-1.4.13]#makeall
6.安装Asterisk
[root@IPPBXasterisk-1.4.13]#makeinstall
7.安装配置文件模版
[root@IPPBXasterisk-1.4.13]#makesamples
8.安装Asterisk程序文档
[root@IPPBXasterisk-1.4.13]#makeprogdocs
三.前期准备工作:
1.符号连接Asterisk主配置文件路径,为了方便。
[root@IPPBX~]#ln-s/etc/asterisk/astetc
2.通过符号连接就可以进入Asterisk主配置文件路径。
[root@IPPBX~]#cdastetc/
3.备份SIP配置文件
[root@IPPBXastetc]#cpsip.confsip.conf.backup
4.备份IAX2配置文件
[root@IPPBXastetc]#cpiax.confiax.conf.backup
5.备份拨号规则配置文件
[root@IPPBXastetc]#cpextensions.confextensions.conf.backup
6.备份Zapata板卡主配置文件
[root@IPPBXastetc]#cpzapata.confzapata.conf.backup
7.确认Asterisk的各种主要调用路径
[root@IPPBXastetc]#catasterisk.conf
--------------------------------------------------
[directories]
astetcdir=>/etc/asterisk
astmoddir=>/usr/local/lib/asterisk/modules
astvarlibdir=>/var/lib/asterisk
astdatadir=>/var/lib/asterisk
astagidir=>/var/lib/asterisk/agi-bin
astspooldir=>/var/spool/asterisk
astrundir=>/var/run
astlogdir=>/var/log/asterisk
以上这些都是Asterisk各种主要调用的路径,这些路径上都分类放置了Asterisk的如配置文件、模块、AGI程序、日志等等各种重要部件。
反过来,如果当要卸除Asterisk的时候,也可以参考这些给出的路径,将Asterisk进行完整删除。
之前我就卸载过一次Asterisk,直接就是“rm-fr”掉这些路径。
;[options]
;internal_timing=yes
;systemname=my_system_name;prefixuniqueidwithasystemnameforglobaluniquenessissues
;Changingthefollowinglinesmaycompromiseyoursecurity.
;[files]
;astctlpermissions=0660
;astctlowner=root
;astctlgroup=apache
;astctl=asterisk.ctl
--------------------------------------------------
8.确认Zaptel的模块
[root@IPPBXastetc]#ll/usr/local/lib/asterisk/modules/|grepchan_zap
--------------------------------------------------
-rwxr-xr-x1rootroot 511766Nov 914:
26chan_zap.so
这个chan_zap.so就是Zaptel的主要模块,如果能够找到这个模块的话那么说明Zaptel基本上成功编译,初步工作成功。
--------------------------------------------------
注意:
这个模块的来源是chan_zap.c这件代码,如果当Asterisk进行configure进行环境预检查配置的时候没有发现Zeptel的时候,他不会对chan_zap.c进行编译,所以也不会有chan_zap.so这个模块,因此必定要先搞定Zaptel的安装,然后Asterisk才会把这chan_zap.c代码件部分加入进去编译成chan_zap.so模块。
四.对Asterisk进行主要配置:
1.配置SIP部分
[root@IPPBXastetc]#visip.conf
--------------------------------------------------
[sip](!
)
type=friend
host=dynamic
disallow=all
allow=gsm
context=test
[9901](sip)
username=9901
secret=123456
[9902](sip)
username=9902
secrest=123456
--------------------------------------------------
2.配置IAX部分
[root@IPPBXastetc]#viiax.conf
--------------------------------------------------
[iax](!
)
type=friend
context=test
disallow=all
allow=gsm
qualify=yes
host=dynamic
transfer=no
auth=md5
context=test
[8801](iax)
username=8801
secret=123456
[8802](iax)
username=8802
secret=123456
--------------------------------------------------
3.配置拨号规则部分
[root@IPPBXastetc]#viextensions.conf
--------------------------------------------------
[test]
exten=>_880X,1,Dial(IAX2/${EXTEN},,r)
exten=>_990X,1,Dial(SIP/${EXTEN},,r)
[zapfxo2sip]
exten=>s,1,Dial(SIP/9901,,r)
exten=>h,1,Hangup()
当FXO接受到呼叫拨入的时候,自动转呼叫SIP终端9901。
[zapfxo2iax]
exten=>s,1,Dial(IAX2/8801,,r)
exten=>h,1,Hangup()
当FXO接受到呼叫拨入的时候,自动转呼叫IAX终端8801。
--------------------------------------------------
五.对Zeptel进行主要配置:
首先要交代Zaptel的几个相关文件。
(1)zapata.conf:
这个是Zaptel的主配置文件。
(2)zaptel.conf:
这个是Zaptel的硬件配置文件。
(3)zaptel-channels.conf:
这个是Zaptel的通道配置文件,它是由zapata.conf生成的,而且它也不是必须的。
它是通过include的方式附加在zapata.conf主配置文件外的,完全也可以把通道的配置定义在zapata.conf文件中而不需要该文件。
在安装好的默认情况下,主配置路径/etc/asterisk/下会有一个Zaptel的主属性配置文件zapata.conf,在这个文件中配置了Zaptel部件的全部属性,而且一开始的时候Zeptel也只有这一个配置文件。
但是实际上Zeptel不仅仅只有这一个配置文件,它仍然需要其它配置文件,如zaptel.conf以及zapata-channels.conf,但是后来两者是需要由zapata.conf这个主配置文件生成并在这个基础上修改才能使Asterisk-Zaptel工作起来的。
接下来就简要交代一下步骤。
1.生成zaptel.conf以及zapata-channels.conf配置文件。
[root@IPPBXastetc]#genzaptelconf
使用这个命令会生成以下两个硬件和通道配置文件,而这两个配置文件是一开始没有的。
(1)/etc/zaptel.conf(注意,这个文件是直接在/etc/目录下的。
)
(2)/etc/asterisk/zapata-channels.conf
2.分析硬件通道配置文件生成命令
[root@IPPBXastetc]#mangenzaptelconf
--------------------------------------------------
NAME
命令名
genzaptelconf--generateszaptelconfiguration(TDMadaptors)
生成zaptel配置(时分多路适配器)
DESCRIPTION
描述
genzaptelconf is a scripttodetectzapteldevices(currentlymostly
TDMcards are supported). It generates both /etc/zaptel.conf and
/etc/asterisk/zapata-channels.conf
这是一个用来探测zaptel设备(TDM卡通常支持)的脚本。
它会同时生成/etc/zaptel.conf以及/etc/asterisk/zapata-channels.conf这两个文件。
FILES
相关的文件
/etc/zaptel.conf
The configuration file used by ztcfg to configure zaptel
devices.re-writtenbygenzaptelconf
.Abackupcopyissavedto/etc/zaptel.conf.bak
/etc/zaptel.conf是用来被ztcfg命令调用来配置zaptel设备配置文件。
可以通过genzaptelconf命令来通过重新生成的方式来改写。
每次重新生成时,会把原来的配置文件备份成/etc/zaptel.conf.bak。
/etc/asterisk/zapata.conf
Theconfigurationfileof Asterisk鈙 chan_zap. Not modified
directly bygenzaptelconf. Ifyouwantgenzaptelconf鈙setting
totakeeffect,addthe following line at the end of zap-
ata.conf:
#include"zapata-channels.conf"
/etc/asterisk/zapata.conf是模块chan_zap.so会首先调用读取的主配置文件。
而其它的zaptel配置文件都是由genzaptelconf生成出来而不是手动写出来的。
它其中一个会生成的通道配置文件就是zapata-channels.conf。
在zapata.conf的最后加入#include"zapata-channels.conf"来使zapata.conf主配置文件外连接这个通道配置文件。
/etc/asterisk/zapata-channels.conf
This is the snippet ofchan_zapconfigurationfilethatgen-
zaptelconfgenerates.
. A backup copy is saved to /etc/asterisk/zapata-chan-
nels.conf.bak
/etc/asterisk/zapata-channels.conf是由genzaptelconf生成的zaptel通道配置文件,每次重新生成时,会把原来的配置文件备份成/etc/asterisk/zapata-channels.conf.bak。
--------------------------------------------------
3.配置zaptel硬件配置文件
[root@IPPBXastetc]#vi/etc/zaptel.conf
--------------------------------------------------
#Autogeneratedby/usr/sbin/genzaptelconf--donothandedit
#ZaptelConfigurationFile
#
#ThisfileisparsedbytheZaptelConfigurator,ztcfg
#
#Itmustbeinthemoduleloadingorder
这个是通过/usr/sbin/genzaptelconf脚本命令生成而来,然后我在这个基础上作一些配置修改。
#Span1:
WCTDM/0"WildcardTDM400PREVIBoard1"
fxsks=1
fxsks=2
fxsks=3
fxsks=4
这里是四个模块接口。
注意,这里的fxsks的信令模式,其实是表示该四个接口为FXO通道接口。
(理由:
FXO通道使用FXS信令,连接的对端是FXS端口,在Asterisk中,配置就是这样反着写的!
这个会在Asterisk很多其它地方出现,这里特别声明!
)
#Globaldata
#loadzone =us
#defaultzone =us
这里是指定区域,默认的us被我后来注释掉了。
loadzone =cn
defaultzone =cn
在这里我指定为cn。
--------------------------------------------------
4.察看zaptel的通道配置
[root@IPPBXastetc]#ztcfg-vvv
--------------------------------------------------
ZaptelVersion:
1.4.6
EchoCanceller:
MG2
Configuration
======================
Channelmap:
Channel01:
FXSKewlstart(Default)(Slaves:
01)
Channel02:
FXSKewlstart(Default)(Slaves:
02)
Channel03:
FXSKewlstart(Default)(Slaves:
03)
Channel04:
FXSKewlstart(Default)(Slaves:
04)
四条FXO端口已经被配置,再特别提醒一边,这里的FXS指的是“FXO端口-使用FXS信令模式-连接FXS对端”,所以标示为FXS。
也说明它自己是一个FXO端口。
在Asterisk中都是这样“显示相反的”。
这个会在Asterisk很多其它地方出现,是使人感到困惑的地方之一,请务必注意。
4channelstoconfigure.
--------------------------------------------------
5.察看ztcfg命令
[root@IPPBXastetc]#ztcfg--help
--------------------------------------------------
ztcfg:
invalidoption---
Usage:
ztcfg[options]
Validoptionsare:
-c --Use insteadof/etc/zaptel.conf
-d[level] --Generatedebuggingoutput.(Defaultlevelis1.)
-f --Alwaysreconfigureeverychannel
-h --Generatethishelpstatement
-s --Shutdownspansonly
-t --Testmodeonly,donotapply
-v --Verbose(more-v'smeansmoreverbose)
--------------------------------------------------
6.配置zaptel通道
[root@IPPBXastetc]#vizapata-channels.conf
--------------------------------------------------
;Autogeneratedby/usr/sbin/genzaptelconf--donothandedit
;ZaptelChannelsConfigurations(zapata.conf)
;
;Thisisnotintendedtobeacompletezapata.conf.Rather,itisintended
;tobe#include-dby/etc/zapata.confthatwillincludetheglobalsettings
这个文件也是通过/usr/sbin/genzaptelconf生成的,然后我在这个基础上作一些配置修改。
;Span1:
WCTDM/0"WildcardTDM400PREVIBoard1"
;;;line="1WCTDM/0/0FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=zapfxo2sip
这个是在拨号方案extenions.conf中的context名称。
channel=>1
context=default
;;;line="2WCTDM/0/1FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=zapfxo2sip
channel=>2
context=default
;;;line="3WCTDM/0/2FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=zapfxo2iax
channel=>3
context=default
;;;line="4WCTDM/0/3FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=zapfxo2iax
channel=>4
context=default
以上指定了四个通道,并对每个通道进行了一些配置修改。
--------------------------------------------------
7.修改zapata主配置文件