Asterisk-*Asterisk是什么•asterisk是一个ippbx的开源代码•应该把它想象成制作ippbx的一个原材料,或者ippbx的一个软件的“操作系统”•可以修改任何东西:界面、数据库、数据结构、协议栈等等,让它变成你想要的产品,或者利用这个过程提供服务•什么是Asterisk?•Asterisk是一个应用于VoIP的开放源代码PBX系统,有两个不同的版本:核心的Asterisk软件和用户界面更友好的Asterisk@Home(AAH),后者有一个基于GUI的WEB界面。Asterisk@Home允许用户从一个控制面板来管理所有的VoIP活动连接,这个控制面板在每一台被接入网络中的计算机中都是可见,AAH安装在一台专门的计算机上用来充当网络中的PBX,用户可通过web浏览器来管理这个系统,甚至通过因特网也可管理它。•Asterisk@Home,为什么要使用一个这样的名称,主要是它打算用来为家庭用户简化Asterisk产品的操作。虽然这个软件在设计上相对来说已简化了不少,但Asterisk绝大部分主要功能功能还依旧是保留着。如果使用的服务器够强劲的话,AAH能够管理的电话线可达数百条,基本上一台2GHz左右的机器就可处理数十条连接,对于需要廉价的VoIP装置来处理多条呼入的小企业和家庭用户来说,AAH可是一个相当不错的选择。gnugk是要做一个gatekeeper•在采用h.323标准的ip电话网络中,主要有4种实体:终端、网关(gw,gateway)、网守(gk,gatekeeper)和多点控制单元(mcu,multipointcontrolunit)。•网守处于高层,提供对端点(终端、网关、多点控制单元统称为端点)和呼叫的管理功能,是ip电话网络系统中的重要管理实体。•网守的主要功能有:地址解析、接入控制、带宽管理、区域管理等四项基本功能;此外,还能提供呼叫控制信令、呼叫管理等其他功能。asterisk能做什么•asterisk,英文是“星号”的意思,设计的初衷是,任何和电话系统有关的东西,它都能做–并不是所有和电话有关的功能靠asterisk实现都是最好的•asterisk最擅长的就是做一个ippbx,–当然有人用它来做voicemail服务器、ivr服务器、会议服务器、中继网关、sipserver、发卡系统等等如何学习asterisk•了解互联网和通信网两方面的知识–普通电话是如何打通的,–voip网络是如何架构的•••能作什么•ippbx分类,–pbx插以太网板子(程控交换机内加了数据功能)–tdm和ip混合核心(路由器内加了语音功能)–纯ip核心(Asterisk)•在融合通信方面,ippbx要起到重要作用–有的要和呼叫中心结合,有的要和crm结合,有的呢,和erp结合,还有的和im结合asterisk和trixbox有何关系•asterisk是基础–对于开发者而言,还是要研究asterisk本身的•trixbox是在此基础上的一个封装–对于初学者来说,或者只是简单应用者来说,trixbox已经足够了–界面相对友好,配置相对好理解•从功能和稳定性上,两者没有区别asterisk和digium的板卡有何关系•开源不代表不赚钱,开源的目的就是东方不亮西方亮,靠硬件赚钱,那就是板卡•很多国外的人对digium是崇拜的,所以再贵他们也要买digium的卡•aserisk不是必须插板卡的,但是如果有板卡,ippbx的外部接口会更丰富•其它一些公司的板卡也能兼容asterisk,比如eicon,比如yate。asterisk能够支持传统的线路•tdm(timedivisionmultiplexing)•t1/e1pri/pra&rbs(robbedbitsignal)modesanalogphonelines/phones(pots)•isdn(integratedservicesdigitalnetwork)bothbri(basicrate)andpri(primaryrate)•asterisk需要的带宽,一般为:32kb/线路。也就是说每支持一条线路,只需要增32kb的带宽,但是需要网络质量良好asterisk支持的协议包括•sessioninitiationprotocol(sip)•H.323(itustandard,contributedsupport)•inter-asteriskexchange(iax)•mediagatewaycontrolprotocol(mgcp)安装Asterisk-1•安装CentOS5•检查系统内核版本–#uname–a–Linux:57:35EDT2007i686i686i386GNU/Linux•检查是否已经安装kernel-devel–rpm-qkernel-devel•kernel-devel-2.6.18-8.1.15.el5–yuminstallkernel-devel(安装)–在/usr/src/路径下不存在linux目录,可以建立内核源码的软链接–Yumupdatekernel(更新内核)安装Asterisk-2•安装辅助软件包–yuminstallbisonncursesncurses-develzlibzlib-developensslgnutls-develbison-develhttpdgccgcc-c++libxml2-devellibtiff-develmysql-serverphp-gdphp-mysqlkernel-develaudiofile-develsubversionlibogg-develphp-cliphp-pearphpmysql-devel•下载libpri,zaptel,asterisk软件包–––––•解压缩软件包–#tar-xvzflibpri-1.4.1.tar.gz–#tar-xvzfzaptel-1.4.4.tar.gz–#tar-xvzfasterisk-1.4.8.tar.gz–#tar-xvzfasterisk-addons-1.4.2.tar.gz–#tar-xvzfasterisk-sounds-1.2.1.tar.gz安装Asterisk-3•安装libpri•-makeclean–#cdlibpri-1.4.1–#make–#makeinstall•安装zaptel•--makeclean–#./configure–#make–#makeinstall–#makeconfig(toaddzaptelstartupscript/etc/init.d/zaptel)安装Asterisk-4•安装asterisk–#./configure–#make(makemenuselect)–#makeinstall–#makesamples–#Makeconfig•安装asterisk-addons(mysql支持,H.323支持)–#./configure–#make(makemenuselect)–#makeinstall–#makesamples•安装asterisk-sounds–#make–#makeinstallAsterisk目录及配置文件-1•/etc/asterisk–Asterisk主目录,包含其它关于Asterisk的配置文件;–*zaptel.conf这个配置文件放在/etc,因为其它软件也可以使用Zaptel这个硬件及其驱动,所以不是放在/etc/asterisk里.•/usr/lib/asterisk/modules–包含所有可以加载Asterisk模块(应用程序\编辑器\格式和有用通道),在Asterisk启运时会加载这些模块(可以编辑modules.conf).Asterisk目录及配置文件-2•/var/lib/asterisk比较重要的是astdb文件与agi-bin目录–Astdb/•包含Asterisk当地数据库信息–sounds/•所有声音提示的文件在里面,包括Asterisk原代码中的sounds.txt文件–mohmp3/•如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签).–keys/•使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub和.key–firmware/•这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像–images/•只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联–agi-bin/•包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接•/var/spool/asterisk–包括outgoing/gcall/tmp/voicemail/Asterisk目录及配置文件-3•etc/asterisk/asterisk.conf–主要配置文件•/etc/zaptel.conf–硬件接口的基本层–修改这个配置文件要用modprobe装载LinuxKernel使用模块•/etc/asterisk/zapata.conf–为硬件配置Asterisk的接口•/etc/asterisk/extensions.conf–拨号方案•/etc/asterisk/sip.conf–SIP协议配置文件•/etc/asterisk/iax.conf–呼入和呼出IAX通道•/etc/asterisk/moduprobe.conf–加载模块配置文件•/etc/asterisk/features.conf–特征码配置文件拨号方案基础-extensions.conf-1•Application–Answer(),Playback()和Hangup()–Goto()–……..•变量–全局变量•在extensions.conf文件的开始利用[globals]这个context定义或利用SetGlobalVar()应用.–通道变量•通道变量与特定的呼叫相关的变量,通道变量只能在当前呼叫存在其间定义,并只能用于参与该呼叫的通道.通道变量使用Set()应用来设置.–环境变量•环境变量是一种在Asterisk中访问操作系统环境变量的方法.这些变量以${ENV(var)}形式引用,其中的var是所要引用的操作系统环境变量拨号方案基础-extensions.conf-2•模式匹配–使用模式及匹配是用不同的字母和符号来代表可能要匹配的数字.模式总是用一个下划线(_)开始,它告诉Asterisk要做模式匹配,这不是一个extension名字.(这意味着不能使用下划线作为extension名字的开始字符.)–X:匹配0-9的任何数字–Z:匹配1-9的任何数字–N:匹配2-9的任何数字–.(句号)通配符,匹配一个或多个字符–[15-7]:匹配1,5,6,7–使用${EXTEN}通道变量•Asterisk会把通道变量${EXTEN}设置为所拨的