asterisk学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近一直在研究asterisk,也算小小的入门一下,现在就学习的过程整理总结一下。
Asterisk学习进阶
介绍篇
抛开所有概念,首先从单词学起。估计很多人和我一样没有明白这个词是什么意思,或许猜测他还可能是一个组合词。其实它就是“*”,作为搞程序的我们看到这个东东想到的也许会是乘号,当然有另外一大帮人想到的是通配符,在这儿恭喜想到通配符的兄弟,你们答对啦,这儿我们认定它的含义就是如此。
通过我上面牵强附会的关联,Asterisk的含义就浮出水面了,它就是一个通配的电话,这样组合的话看起来应该有点难受,我们重新润色它就变成了无所不能的电话系统。有了上面的这段废话,我其实只想传达asterisk的两个特点:
1. 功能巨强大
2. 是一个支持语音的系统
追本溯源,下面还是看看官方是怎么定义它的:
Asterisk is the most popular and extensible open source telephone system in the world, offering flexibility, functionality and features not available in advanced, high cost proprietary business systems. Asterisk is a complete IP telephony platform for business, and can be downloaded for free.
通过这段话我琢磨出下面一些意思,不晓得各位的想法。首先就是它功能很强大,成本低廉,另外就是它是免费的。
展开一下,因为它是开源代码,就容许你在已有的基础上进行修改定制,削弱了开发成本,另外就是asterisk可以跑在多个通过操作系统上,而且基本x86 这个通用平台,降低了专用系
统昂贵的成本。但是功能强大这个我们先悬着这个疑问,下面在慢慢的进行剖析。我们现在只要从概念上晓得asterisk是一个功能强大的IP PBX就够了。
安装篇
使用之前请购买这个陋习可以更改一下啦,因为我们已经进入GNU主义,get what you want。
下载通道为/pub/asterisk/releases/,选择一个稳定版本下载就是了。对于一个程序员而言,获得了代码还有什么不能做的。难道你给士兵一把枪还怕他打不死腿上的蚊子?解压倒合适的目录,按照他的指导手册操作就是了,不过看文档提示里面建议释放在/usr/src下面。
而且看到手册上面要下载一堆的东西,例如zaptel*,libpri*等等,这些对于我们目前都是不需要的,因为我们想构建的是一个纯粹的IP TEL,其他和老式电话的接口暂时都由我们的网关
路由器完成,例如E1/T1,ISDN BRI/PRI,FXO,FXS等等,我们通过asterisk想完成的只是IP TEL,例如sip,h323等等。
我们需要下载的只是asterisk,后续操作步骤如下:
cd /usr/src
tar zxvf asterisk-*.tar.gz
通过上述命令,文件就被解压出来,接下来肯定就是编译了,略过不表,步骤如下:
#cd /usr/src
#cd asterisk-*
# ./configure
#make
#make install
#make samples 安装默认的配置文件
#make webvmail 安装语音信箱图形界面
#make config
如果对于上面的命令以及作用有疑惑的话,建议多花时间看看linux的基本操作维护命令,然后再回头继续往下。这儿需要提及的最后一点,增加了一个make samples,正如其名,他的作用就是生成默认的配置文件。众多的编译选项我也不介绍了,详细参见手册。
常见问题解决方案:
1.如出现找不到 PTLIB 库,则找到在LOG输出上找到有 ...ptlib.h----YES 的那一条,找到对应目录把文件改名,就不会再出错了,一般目录为:/usr/lib/ptlib.h。
2.如果出现 func_rurl.c: 106 常量无定义之类的错误,则直接在MAKEFILE中取消此文件的编译,因为Makefile中是定义 func_*.c 参与编译,所以修改此文件为其它名字即可,如
__func_rurl.c 。
这儿我们就假设编译很成功,没有遇到任何编译问题,当然不可能100%都不遇到的,一部分问题在手册里面给了指点,另外的问题则需要你个人多动手,多动脑,而且baidu,google也不会拒绝你使用他的。
使用篇
经过前面的步骤,代码已经编译完了,可执行文件安装完毕同时默认的配置文件也安装了,那么我们就从使用上首先简单的做个介绍,给大家带来一个直观的认识。下文所举例子都会以sip为例,其他h323,iax,mgcp等等类似,不再赘述。
使用之前大致说明一下安装后的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和.key
firmware/这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像.
images/只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联.
/var/lib/asterisk/agi-bin agi-bin包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接.
/var/spool/asterisk
outgoing/ 现在打电话的通道——呼叫信息目录普遍使用。
gcall/ 撤销了——包含了特殊呼叫方法的呼叫信息文件——不是打电话的好方法,因为这种方式太硬性了——不再使用。使用outgoing替代