asterisk 基本配置

摘要:
配置了入站和出站IAX通道的文件的FXO和FXS通信的区别在于,当有呼叫时会提醒用户。两个接口都提供双向通信(同时双向通信传输)。如果Asterisk具有兼容的FXO端口,您可以定义FXS端口和FXO信令的配置:使用通道1和ks信令协议定义FXS端口;定义fxo端口以采用信道2和ks信令协议loadzone=usdefaultzone=us信令协议:
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

 

  信令协议:Loop 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口不能检测到挂机信号。
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直接传输媒体.

 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文件中:

[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 ;

mailbox=10000@device

callerid=test1 <10000>

canreinvite=no  ;

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

  

  IAX  

  IAX(Inter Aasterisk eXchange)协议通常用于服务器间通信.IAX和SIP协议最大区别在于媒体(语音)在端点之间传输的方式不同.

  Asterisk默认情况是在5060端口接收SIP信令,在10000-20000端口接收RTP(媒体)流.而IAX所有的信令和媒体流都通过一个端口4569进行传输.这种方式的好处是IAX协议能更适合在NAT相关拓扑的应用.

  IAX用户习惯对进入PBX系统的呼叫进行鉴权和处理.对从PBX系统呼出的呼叫,Asterisk应用IAX的iax.conf文件的端点进入(条目)对远端进行鉴权)

  通过iax.conf设置进行呼叫的鉴权和处理:

[general] ;至少需要一个主要段落,主要定义IAX协议的相关设置.

jitterbuffer=no

register => remote_number:password@domain ;注册到远程服务器上,告诉服务器当前位置(互联网位置)在哪

[REC_SERVER]

type=user ;用user来定义呼入呼叫的类型

context=incoming ;进行呼入呼叫鉴定

auth=rsa

inkeys= ;公钥,是Asterisk标准

通过extensions.conf设置一个incoming的context:

[incoming]

exten => remote_number,1,Dial(SIP/number) ;拨打远程号码时(呼入)转移到number(内部)号码上

   --------以上是IAX入局配置,下面配置出局IAX连接--------

  在iax.conf设置呼出条目

[REMOTE_SERVER]

type=peer  ;用peer定义呼出类型

host=my.receiving.server.ca  ;接收服务器域名或IP地址

username=number  ;接收服务器认证用户(账户号码)

secret=password  ;接收服务器认证密码(账户密码)

qualify=yes  ;不时检查远端的服务器是否响应用

disallow=all  ;用于复位原来设置的所有编码信息

allow=gsm  ;支持gsm编码

allow=libc  ;支持libc编码

allow=g726  ;支持持g726编码

****使用disallow复位原来设置的所有编码信息.再重新设置支持的编码,优先级从高到低

  在extensions.conf设置

[to_remove]

exten => remove_number,1,Dial(IAX2/REMOVE_SERVER/number)

拨号方案语法

  

  Asterisk的拨号方案在文件extensions.conf中定义(/etc/asterisk/extensions.con)

  extensions.conf(四部分:context,extension,priorities,application)

  context:用于对extensions组命名,把拨号方案的不同部分进行分离,免得交织在一起.

  表示方法是把名字放在[]的中间,名字只能用a~z,A~Z,0~9,以及连字号和下划线组成(空格不在允许的字符里面,context中不要使用空格).如:[context1],[incoming],[default];所有放在context定义的之后的指令都是这个context一部分,直到下一个context定义的开始.

  context的一个重要用途就是加强安全性.如果没有仔细设计拨号方案,可能会造成别人盗用你的系统的不良后果.

  extensions:extensions是asterisk要执行的指令,由来电或通道上所拨数字来触发.可以定义电话分机  

  extension的语法是单词exten后面跟着一个由等号和大于号组成的箭头,如:exten => extension的名字

  一个完整的extension由三部分组成:

extensions的名字或号码

priority(每个extension可以有多个步骤,步骤的编号称作priority)

    应用(或者命令),针对呼叫完成一些动作

  这三个部分用英文逗号分开,如:

    exten => name,priority,application()

  priorities:每个extension都可以有几个步骤,称作priorities

  如:

exten=>50001,1,Answer()  #编号为1的priority,执行接听电话

exten=>50001,2,Hangup()  #编号为2的priority,然后挂电话

  必须确保priority从1开始并且连续的编号

  application:动作,比如:播放声音,接受音频拨号输入或者挂断电话等.

免责声明:文章转载自《asterisk 基本配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇powerbuilder连接oracle数据库js遍历json数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

1、前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑。但是在ArcGIS Runtime SDK for Android的版本中并没有提供类似的功能,实现过程相对较复杂。(10.2.8及以下版本需要用户自定义扩展...

重新整理 .net core 实践篇—————中间件[十九]

前言 简单介绍一下.net core的中间件。 正文 官方文档已经给出了中间件的概念图: 和其密切相关的是下面这两个东西: IApplicationBuilder 和 RequestDelegate(HttpContext context) IApplicationBuilder : public interface IApplicationBuilde...

Activity的生命周期详讲及其的生命周期监视,应用程序启动过程,

1:应用程序的启动过程 应用程序的图标被点击-》启动activitythread-》线程的入口main函数-》创建activitythread-》绑定activitythread thread.attach(false,startSeq)-》创建仪表类生命周期,管理程序的生命进程mInstrumentation = new Instrumentation(...

在Hibernate中使用Oracle的sequence主键

在Oracle中建立sequence,名称为pk:create sequence pk    start with 1    increment by 1    maxvalue 2000    nocycle    cache 30;在映射文件中修改:<class name="com.kay.pojo.Student" table="STUDENT...

Oracle读取Blob数据-通过hibernate

通过hibernate向Oracle存储字节类型的数据(如byte[]等),在定义实体对象的时候不能用"private byte[] content", 这样定义我试过,在存储数据的时候(session.save(user))是没有问题的,但是在读取Blob字段(Oracle中存储byte[]使用的是"BLOB"类型)时就会出现问题,读出来的东西就成了乱码...

自定义View的实现流程

1.继承View组件,比如,LabelView继承了View   2.重写两个构造方法,比如,对于自定义View LabelView   LabelView(Context context),如果该自定义View是通过代码来实例化的,那么,就需要该构造方法; LabelView(Context context, AttributeSet attrs),通过...