『轉』asterisk入门连载一

轉自: 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-1E-1线路

  3Voip协议,SIPIAX

  目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2

  使用接口配置文件

  1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道.

  2.zapata.conf:硬件配置Asterisk的接口.

  3.extension.conf:拨号方案文件.

  4.sip.conf:配置SIP协议的文件

  5.iax.conf:配置呼入和呼出IAX通道的文件

FXOFXS通信


区别:区别简单,就在于连接的那端提供拨号音.FXO不生成拨号音,而是接收.FXS端口提供拨号音和震铃电压,在有呼叫的时候提醒用户.两者接口都提供双向通讯(同时双方向的通讯传输).


如果Asterisk有个兼容FXO端口,就可以把电话线接入这端口,可以使用这根电话线呼叫和接收电话呼叫.同理,如果有个FXS端口,可以连接一部模拟电话,Asterisk就可以呼叫这部电话,可能也可以呼叫.(端口:通过配置使用的信令进行定义)

FXS卡必须像中心局(CO)进行运转,使用FXO信令.同理,FXO卡连接CO,就意味着它需要像终端进行运转,使用FXS信令.

Zaptel配置(FXO)


/etc/zaptel.conf文件,用于配置硬件,可以定义FXS端口与FXO信令的配置

fxsks=1  ;定义fxs端口采用通道1ks信令协议

;fxoks=2  ;定义fxo端口采用通道2ks信令协议

loadzone=us

defaultzone=us

 


信令协议oop start(ls),ground start(gs),kewlstart(ks),使用ks外信令协议,fxoks
中的ks替换lsgs,Asterisk的模拟电路推荐ks信令协议.

  

******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.confiax.conf文档后,分别需要装载chan_iax2.sochan_sip.so


Zapata配置

[trunkgroups]  ;定义一个主干组

; define any trunk groups

[channels] ;硬件通道和他们选项信令方式.

; hardware channels  ;硬件通道

; default  ;默认 

busydetect=yes   ;增加这两行,要不FXO口不能检测到挂机信号。
busycount=5 

usecallerid=yes ;设置来电显示

hidecallerid=no ;设置去电不隐藏号码

callwaiting=yes ;设置呼叫等待

threewaycalling=yes ;开启三方通话(先闪断,再呼叫第三方,再闪断,就可以实现三方通话)

transfer=yes ;转叫前转(需要三方通话支持)

echocancel=yes ;回声消除

echotraining=yes ;回音练习(会话前发个声音,用于测试回声)

; define channels  ;定义通道

context=from-test ; Context内执行指令需要在extensions.conf内定义
[from-test]

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配置


基本的拨号方案,使用Echo()校验工作通道双向通讯; 

[from-test]

exten => s,1,Answer()

exten => s,n,Echo()

SIP

  

SIP(会话初始协议),通常用于VOIP电话,进行呼叫建立,呼叫协商,呼叫结束.它帮助两个端互相通认,但它不处理媒体;当呼叫建立后,他通过实时传输协议(RTP)在电话A到电话B直接传输媒体.

 SIPRTP

SIP是一个应用层的信令协议.他使用的端口是5060(通常)进行通信.SIP可以通过UDPTCP传输层协议进行传输.Asterisk目前没有TCP用于传输SIP信息.

RTP用于端点间传输媒体(语音),AsteriskRTP使用大数字的无特权端口(默认10,00020,000)

SIP优点:普通的被接受和结构灵活.其它的VOIP协议还有H.323,IAX,MGCP.

 SIP配置

/etc/asterisk/sip.conf文件中:

[general]

context=default

srvlookup=yet  ;建立一个逻辑和可解析地址的方法,你可以达到这个地址,还可以获取DNS很多好处

[10000]

username=10000  ;用户名

type=friend   ;可以定义用户(user)\(peer)\朋友(friend)

secret=123456  ;认证密码

record_out=Always;去电录音Adhoc须要时,Never从不,Always总是
record_in=Never ;来电录音

callgroup    ;呼叫组,默认为"1"

pickupgroup   ;代接组

disallow     ;不允许编码

allow      ;允许编码

port=5060    ;端口号

qualify=yes   ;监视Asterisk服务器与电话之间是否延时(默认2,000可达;yes可替换毫秒)

context=default ;指令的地点

host=dynamic  ;要求号码要注册,以便Asterisk如何找到电话.(static则不需要注册)

dtmfmode=rfc2833 ;

[email=mailbox=10000@device]mailbox=10000@device[/email]

callerid=test1 <10000>

canreinvite=no  ;


用户户类型是用于认证呼入呼叫;端类型用于呼出呼叫;朋友类型两种都用.(这个常用在sip.confiax.conf中用到)

原文地址:https://www.cnblogs.com/abinxm/p/1658088.html