轉自: http://hi.baidu.com/%BF%AA%D4%B4%BC%BC%CA%F5/blog/item/0298b00aa5515c3be824884b.html
都是初学者,我把看过的一些比较容易懂的文章做些剪接,都是些入门的东西,大家看了,不要笑话 开始上菜.... ■ 什么是 Asterisk? 于 1999 才21岁的Mark Spencer 还在奥本大学读书时,写出一套电话语音交换系统引擎.并且是以开放源代码释出,除拥有庞大社群的开发群外,其成熟的引擎核心也被各界广为採用以取代传统电话交换机的应用。 ■ Asterisk的架构 PBX Switching Core PBX交换核心 Scheduler and I/O Manager 排序与I/O层 Application Launcher 应用层 Codec Translator 编码转换核心 Dynamic Module Loader CDR Core 帐务核心 VoIP 应用架构示意图 |
Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括:
1模拟接接口,如你的电话线或模拟电话.
2数字线路,如T-1和E-1线路
3Voip协议,如SIP和IAX
目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2
使用接口配置文件
1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道.
2.zapata.conf:硬件配置Asterisk的接口.
3.extension.conf:拨号方案文件.
4.sip.conf:配置SIP协议的文件
5.iax.conf:配置呼入和呼出IAX通道的文件
FXO与FXS通信
区别:区别简单,就在于连接的那端提供拨号音.FXO不生成拨号音,而是接收.FXS端口提供拨号音和震铃电压,在有呼叫的时候提醒用户.两者接口都提供双向通讯(同时双方向的通讯传输).
如果Asterisk有个兼容FXO端口,就可以把电话线接入这端口,可以使用这根电话线呼叫和接收电话呼叫.同理,如果有个FXS端口,可以连接一部模拟电话,Asterisk就可以呼叫这部电话,可能也可以呼叫.(端口:通过配置使用的信令进行定义)
FXS卡必须像中心局(CO)进行运转,使用FXO信令.同理,FXO卡连接CO,就意味着它需要像终端进行运转,使用FXS信令.
Zaptel配置(FXO)
在/etc/zaptel.conf文件,用于配置硬件,可以定义FXS端口与FXO信令的配置
fxsks=1 ;定义fxs端口采用通道1以ks信令协议 ;fxoks=2 ;定义fxo端口采用通道2以ks信令协议 loadzone=us defaultzone=us |
信令协议oop start(ls),ground start(gs),kewlstart(ks),使用ks外信令协议,把fxoks中的ks替换ls或gs,Asterisk的模拟电路推荐ks信令协议.
******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和chan_sip.so
Zapata配置
[trunkgroups] ;定义一个主干组 ; define any trunk groups [channels] ;硬件通道和他们选项信令方式. ; hardware channels ;硬件通道 ; default ;默认 busydetect=yes ;增加这两行,要不FXO口不能检测到挂机信号。 usecallerid=yes ;设置来电显示 hidecallerid=no ;设置去电不隐藏号码 callwaiting=yes ;设置呼叫等待 threewaycalling=yes ;开启三方通话(先闪断,再呼叫第三方,再闪断,就可以实现三方通话) transfer=yes ;转叫前转(需要三方通话支持) echocancel=yes ;回声消除 echotraining=yes ;回音练习(会话前发个声音,用于测试回声) ; define channels ;定义通道 context=from-test ; Context内执行指令需要在extensions.conf内定义 signalling=fxs_ks ;FXO通道使用FXS信令 channel => 2 ; PSTN放在端口2上 |
允许zaptel和其它设备通过PCI硬件安装到系统中,编辑udev
[root@ask asterisk]# vi /etc/udev/rules.d/50-udev.rules #在末尾添加上以下 KERNEL="zapctl", NAME="zap/ctl" KERNEL="zaptimer", NAME="zap/timer" KERNEL="zapchannel", NAME="zap/channel" KERNEL="zappseudo", NAME="zap/pseudo" KERNEL="zap[0-9]*", NAME="zap/%n" |
Dialplan配置
SIP
SIP(会话初始协议),通常用于VOIP电话,进行呼叫建立,呼叫协商,呼叫结束.它帮助两个端互相通认,但它不处理媒体;当呼叫建立后,他通过实时传输协议(RTP)在电话A到电话B直接传输媒体. SIP和RTP SIP是一个应用层的信令协议.他使用的端口是5060(通常)进行通信.SIP可以通过UDP和TCP传输层协议进行传输.Asterisk目前没有TCP用于传输SIP信息. RTP用于端点间传输媒体(语音),Asterisk中RTP使用大数字的无特权端口(默认10,000到20,000) SIP优点:普通的被接受和结构灵活.其它的VOIP协议还有H.323,IAX,MGCP. SIP配置 /etc/asterisk/sip.conf文件中:
|