《Asterisk 使用资料》
- 格式:doc
- 大小:156.00 KB
- 文档页数:33
Asterisk目录及配置文件/etc/asterisk/Asterisk主目录,包含其它关于Asterisk的配置文件;*zaptel.conf这个配置文件放在/etc,因为其它软件也可以使用Zaptel这个硬件及其驱动,所以不是放在/etc/asterisk里./usr/lib/asterisk/modules/这个目录包含所有可以加载Asterisk模块(应用程序\编辑器\格式和有用通道),在Asterisk启运时会加载这些模块(可以编辑modules.conf)./var/lib/asterisk/比较重要的是astdb文件与agi-bin目录;astdb包含Asterisk当地数据库信息.sounds/所有声音提示的文件在里面,包括Asterisk原代码中的sounds.txt文件mohmp3/如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签).keys/使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub和.keyfirmware/这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像.images/只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联./var/lib/asterisk/agi-bin agi-bin包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接./var/spool/asteriskoutgoing/gcall/tmp/voicemail/================配置文件================/etc/asterisk/asterisk.conf主要配置文件,/etc/zaptel.conf硬件接口的基本层.修改这个配置文件要用modprobe装载Linux Kernel使用模块./etc/asterisk/zapata.conf为硬件配置Asterisk的接口./etc/asterisk/extensions.conf拨号方案./etc/asterisk/sip.conf SIP协议配置文件/etc/asterisk/iax.conf呼入和呼出IAX通道/etc/asterisk/extensions.conf拨号方案配置文件/etc/asterisk/moduprobe.conf加载模块配置文件Asterisk developer\'s documentation 翻译计划by serva今天,Asterisk已经成为一个VOIP业界使用最广泛的一个集成电信级别P BX的工具,IPPBX如今已经成为VOIP商家争夺的一块重要市场,在我们越来越熟悉使用Asterisk的同时,我们希望能够越来越深入的了解asterisk,特别是对于开发人员,如果有自己特定的需求,在复杂的asterisk文件夹和asteri sk的源代码文件中迷失了方向,不知所措。
在使用asterisk后,我们知道,Asterisk就是一台企业级的电话交换机,它功能的特点有:语音邮件,电话会议,呼叫路由,呼叫列队,呼叫转移,音乐保持等。
然后这些功能是如何实现的,SIP和H323之间是如何进行通话的?甚至,我们也许也要问更基础一点的问题,SIP和SIP之间是如何进行通话?信令是如何控制,通话流程是怎么样?包括语音是如何进行交换传输的?这些都是我们开发人员希望了解,或者说对asterisk有不同需求的人,需要了解的。
但是对于那么复杂的asterisk的代码,我们如何下手?飞云提出了对http://www.as /doxygen/进行中文的翻译,这样可以使得有需要的人,能够初步的了解Asterisk的文件结构和文件的大概功能,可以使得更多的人参与到我们的队伍中来,一起完成对asterisk所有源码的注释。
在/doxygen/中,我们可以看到modules这个选项,在1.4版本中,出现了Main文件夹,将之间版本的直接放在asteris k的根目录下的一些文件,转移到Main文件夹中,其中Main文件夹中很多文件就是对应的Main_options module。
AMI functions 主要对应的源码放在manager.c文件中。
此外,还有CLI_functions,CDR,Asterisk Channel Drivers,Dial plan applications等。
对asterisk源码的重要性和规整,如下表,按照modules来放置。
Format和codec的部分,由于需要的知识比较广,也比较专业,偏向于编码方面,而对于asterisk本身而言,在意的不是format或者codec本身,而是他们提供出来的接口,使得asterisk在媒体数据交换的时候,可以查到对应的编码,或者可以调用对应的压缩算法而已。
所以我建议,只需要翻译有代表的几个。
上面的列表中,列出来的只是.c的文件,我们翻译的时候,会对应到很多相应的.h文件,其中很多.h文件包含了大量的数据结构的定义,是对于理解asterisk非常有帮助的。
在/doxygen/中,file list中对应的文件,都会有Data Structures,而每个文件的Data Structures里面包含的结构,都可以Data Structures总的列表中找到Struct Reference,所以,我们在翻译的时候,以.c文件为主要翻译的对象,其中有函数的说明,程序中代码段的注释,还有其他的一些文字性的说明,然后.c文件对应的Data Structures需要翻译到总的列表中的Struct Reference、也是归于.c文件翻译的范围之内。
此外,在/doxygen/中,还有Modules,Dir ectories和Related Pages目录,Modules,Directories目录需要翻译当前页连接文件的内容。
这个对于代码是相关联的。
而Related Pages目录的东西,属于周围相关文档,可以参照翻译的人数来决定。
翻译只是我们熟悉的第一步,其实/doxygen/中,做的代码注释和介绍,是比较有限的,很多方面都没有补齐,我们的最终的目的是注释并掌握整个asterisk的源代码,便于我们自己利用。
我们需要通过上面的翻译完成之后,按照翻译整理出一个asterisk的框架结构,包括,核心,扩展,以及应用等。
这样可以使得,在代码注释有更多的人,真正能够入手到代码注释,这样可以保证代码注释的质量。
模块文件功能重要性分工Main_optionsasterisk.c ASTERISK的核心执行程序,执行着PBX的核心程序和CLI的接口程序* 飞云pbx.c PBX的核心程序* 大头,篇幅较大,后期还要增加人手channel.c channel驱动的管理和功能接口* voipmaker&steven(原来是serv a,篇幅较大,后期还要增加人手)rtp.c rtp和rtcp协议的实现,NAT的RTP穿越的实现,转换成asterisk特有的f rame形式的实现* amyconfig.c 配置文件的读取和解析,转换成对应的数据结构file.c 通用文件读写接口,包括日志,音频文件等。
frame.c asterisk的特有的音频形式的处理io.c I/O管理,对所有的asterisk的channel,或者是rtp做统一的管理loader.c asteriskl的模块启动程序app.c extension功能的调度和通用功能的接口* meng9999say.c asterisk报声音等的接口sched.c asterisk的任务调度管理函数(有定时器的功能)dsp.c 软件方式实现dsp的功能db.c asterisk的数据库管理接口translate.c 语音或者视频数据的codec转换程序astmm.c asterisk内存管理程序Dial planapplications app_exec.c 所有的app总的执行调度程序* liuminapp_dial.c dial函数和retrydial 函数对应的实现* wky,篇幅较大,后期还要增加人手app_macro.c macro函数执行和实现app_echo.c echo 函数实现app_meetme.c meetme会议的实现,提供函数接口给extension调用app_mixmonitor.c MixMonitor函数,录音包括混音的功能app_queue.c 队列的实现app_read.c Read函数的实现,可以用来读取变量的值app_voicemail.c 语音信箱,包括录制语音,读取语音,发送语音邮件等功能app_stack.c Stack 应用,Gosub, Return等函数的实现app_dictate.c Dictate函数实现,模拟指示的生成和发送app_chanspy.c 监听所有channel语音信息的实现app_mp3.c mp3文件播放函数的实现app_playback.c 可以播放任何的asterisk支持的声音文件格式* (前面有两个空格的)QQ糖app_softhangup.c 挂机extension函数的实现app_transfer.c extension函数,转移一路通话Asterisk ChannelDrivers chan_sip.c SIP协议实现* 大唐盛世,篇幅较大,后期还要增加人手chan_h323.c H323协议的实现* 肉夹馍chan_local.c local的实现,asterisk在extension中独有的channel驱动程序* kiceschan_agent.c * leebchan_zap.c zaptel的应用层驱动,为zaptel的硬件调用和控制提供接口chan_features.cchan_mgcp.c mgcp协议实现chan_iax2.c iax2协议实现,asterisk特有的通信协议,信令和媒体属于同一端口 chan_phone.cchan_skinny.cCDR Driverscdr.c Call Detail Record的生成程序cdr_csv.c 文本方式的cdrcdr_custom.c 用户化的cdrcdr_manager.c CDR的管理程序cdr_tds.c free tds方式的cdrcdr_odbc.c odbc环境的cdr生成cdr_pgsql.c pagesql方式的cdrcdr_radius.c radius方式的cdr * VOIP计费cdr_sqlite.c sqlite方式的cdrAMI functionsmanager.c asterisk的管理接口* do-feelastman.c 经过封装的asterisk管理接口Media FileFormats format_g723.c 723的asterisk编码实现format_g729.c 729的asterisk编码实现format_h263.c h263的asterisk编码实现format_wav.c 线性的asterisk编码实现format_pcm.c pcm的asterisk编码实现format_h264.c h264的asterisk编码实现Codec functionscodec_a_mu.c alaw到ulaw的编码转换实现codec_ulaw.c ulaw的解编码codec_alaw.c alaw的解编码Res functionsres_features.c 呼叫转移,呼叫等待等功能的实现* servares_musiconhold.c musiconhold的实现Asterisk基本配置Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括:1、模拟接接口,如你的电话线或模拟电话.2、数字线路,如T-1和E-1线路3、Voip协议,如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信令的配置:信令协议:Loop start(ls),ground start(gs),kewlstart(ks),使用ks外信令协议,把fxo ks中的ks替换ls或gs,Asterisk的模拟电路推荐ks信令协议.******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和chan_sip.soZapata配置允许zaptel和其它设备通过PCI硬件安装到系统中,编辑udevDialplan配置基本的拨号方案,使用Echo()校验工作通道双向通讯;SIPSIP(会话初始协议),通常用于VOIP电话,进行呼叫建立,呼叫协商,呼叫结束.它帮助两个端互相通认,但它不处理媒体;当呼叫建立后,他通过实时传输协议(RTP)在电话A到电话B直接传输媒体.SIP和RTPSIP是一个应用层的信令协议.他使用的端口是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文件中:用户户类型是用于认证呼入呼叫;端类型用于呼出呼叫;朋友类型两种都用.(这个常用在sip.conf与iax.conf中用到)IAXIAX(Inter Aasterisk eXchange)协议通常用于服务器间通信.IAX和SIP协议最大区别在于媒体(语音)在端点之间传输的方式不同.Asterisk默认情况是在5060端口接收SIP信令,在10000-20000端口接收RTP(媒体)流.而IAX所有的信令和媒体流都通过一个端口4569进行传输.这种方式的好处是IAX协议能更适合在NAT相关拓扑的应用.IAX用户习惯对进入PBX系统的呼叫进行鉴权和处理.对从PBX系统呼出的呼叫,Asterisk 应用IAX的iax.conf文件的端点进入(条目)对远端进行鉴权)通过iax.conf设置进行呼叫的鉴权和处理:--------以上是IAX入局配置,下面配置出局IAX连接--------在iax.conf设置呼出条目在extensions.conf设置拨号方案语法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由三部分组成:应用(或者命令),针对呼叫完成一些动作这三个部分用英文逗号分开,如:priorities:每个extension都可以有几个步骤,称作priorities如:必须确保priority从1开始并且连续的编号application:动作,比如:播放声音,接受音频拨号输入或者挂断电话等.关于拨号方案基础见:/viewdiary.13461506.html如有引用本文/control/diary/preview.b请注册版权所有Asterisk PBX 配置文件简介Asterisk PBX 有一套自定义的配置文件格式,通过一个内置的配置文件解析器(Parser)进行配置文件的读写操作。