有关开源软件最令人激动的事情之一就是其创建超越传统的IT基础架构的应用程序的方式。一个恰当的例子是称作“Asterisk”的电话应用程序。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能。也许它最著名的应用是当作一台交换机(PBX),因为Asterisk能够把你的x86机器变成你自己的交换机。
Asterisk还能做什么?它能够当作一台企业级的商用交换机。下面是它全套功能的特点:
·语音邮件
·呼叫桥接(多个主叫方拨入以参加电话会议)
·呼叫路由
·呼叫列队
·呼叫转移
·与主叫方有关的独特的铃声
·音乐保持(在电话转接过程中,让呼叫方听音乐)
Asterisk让人激动的事情是它在小企业预算可承受的范围内提供了商业交换机的功能和可伸缩性。你可以使用一台老式的奔腾3计算机,让你的机构看起来就同世界上的大企业一样。
Asterisk甚至能够使你的机构看起来就像是全球最大的企业一样。Asterisk用户的一个可以使用的资源是Allison Smith。她的声音是全球最著名的电话语音。如果你使用Verizon、Cingular或者其它公司的电话,你就会听到她的声音。
如何设置Asterisk
你如何在你的企业开始使用Asterisk?这个过程需要三个步骤:
第一,在你的工作场所接入一条或者多条电话线。把这些电话线连接到你的奔腾3计算机的电话卡。这些电话卡本身需要购买,但是,价格比较便宜。Asterisk能够处理POTS线路或者在接入方处理数字线路。这个选择由你确定。
第二,根据你的需要设置Asterisk。你可以设置根据主叫方拨打的电话号码分配电话。(另外的选择包括设置电话组。这个选择类似于告诉电话“要销售请按1”)。为每一个Asterisk用户和电话组设置语音邮件。定义你的音乐保持。坦率地说,设置音乐保持是设置过程中最困难的部分,因为Asterisk提供的选择很多。
设置正确也很困难,因为Asterisk按照Unix/Linux的传统,使用了过分讲究的晦涩难懂的设置文本文件。阅读这个配置文件找出正确的方法才能够完成这个设置。完成设置之后才能让初级用户掌握Asterisk。
第三,设置你的内部电话网络。再说一次,Asterisk是非常灵活的,允许使用模拟信号的电话或者VOIP电话,甚至两种电话可以混合使用。如果你的办公区有电话线网络,模拟电话是有意义的。如果你缺少电话线基础设施,你可以使用以太网基础设施,然后把IP电话挂在以太网基础设施上,并且把Asterisk集成到你的计算基础设置中。VOIP电话目前是最便宜的,使这成为一种诱人的替代方法。
就这些。按照这些步骤,你只用不到二千美元就可以安装和运行你自己的交换机系统。Asterisk可伸缩性非常大,也就是说,随着你的机构的规模扩大,你可以扩大它的应用。最可取的是,当你扩大Asterisk的应用范围时,你不需要全面的升级。换句话说,你不需要抛弃以前的解决方案,一切从头开始。
战胜设置的难题
只有一件美中不足的事情:设置。如果你同我一样,无论什么时候你听说使用文本文件设置一个Linux应用程序,你都要在产品论坛中花几个小时寻找信息,创造性地使用Google。
对于Asterisk来说,有一个称作“Asterisk@Home” (AAH)的选择。它提供了很多恰当地设置Asterisk的方法。AAH以一种安装CD盘的形式提供。你把这个CD盘插入你的奔腾3电脑中,大约一个小时之后你就拥有一个安装和设置完毕的Asterisk。
如果你使用AAH,你甚至不需要在电脑中安装Linux。AAH在安装Asterisk软件之前将首先安装CentOS操作系统。这是Red Hat Linux操作系统的克隆版本。
AAH还包含Asterisk管理门户(AMP)。AMP预装了默认的Asterisk设置以及为Asterisk设置文件提供了一个图形界面。你可以把AMP当作Asterisk的网络管理员。而且Asterisk确实有一个网络管理员插件。
由Asterisk服务提供商Coalescent系统公司开发的AMP使Asterisk成为一种更容易管理的产品。
另外,Asterisk@Home的绰号仅仅是绰号。它还能很容易地应用到办公环境中。在你的办公室中,你也许不需要把你的交换机与个人视频录像机连接起来。但是,AMP提供的自动安装功能和默认设置功能是非常有用的。
这就是说,AAH确实拥有非常适合家庭使用的某些功能。AAH拥有连接xPL的接口,使这种设备能够与其它设备连接起来。然而,许多人在家中使用AAH。有些人使用AAH的功能筛选电话,让主叫方等候。AAH在家庭商业中使用也是很自然的。在家庭商业应用中,Asterisk的企业级功能是非常有用的。
Asterisk的局限性
当然,Asterisk也存在一些缺陷,特别是在SOHO领域。关于使用POTS基础设施或者在互联网基础设施上搭载这个功能的讨论实际上暗示上述一个或者两个条件都存在。在家庭环境中以及许多小企业环境中,根本就没有有线的基础设施。这也是Wi-Fi网络在过去几年里快速增长的主要原因。
Coalescent系统公司首席执行官Jason Becker称,对于没有有线基础设施的地方来说,你需要拥有更多的创造力。Wi-Fi电话确实存在,但是还没有得到证明。Becker建议在一个拥有Wi-Fi连接的计算机中插入一个VoIP电话,或者在那台计算机上运行一个softphone电话软件。另一个选择是HomePlug。HomePlug使用现有的电源基础设施作为IP发布机制。尽管存在这些困难,Asterisk仍以不同寻常的价格提供了非常好地功能。
作者观点
开源软件正在进入很多不同的领域。Asterisk把开源软件方便的发布方式与节约成本的数字化结合在一起,已变成一种对于任何企业都非常有用的功能强大的产品。Asterisk对于小机构是非常有用的,因为它以合理的价格提供了广泛的功能。Asterisk使小企业看起来,更确切地说是听起来非常像一个大型的机构。
##############################################################################
安装FXO和Asterisk
到这儿,笔者准备使用它的远程管理功能了,关闭掉我的显示器,然后转移到我的Windows工作站上来继续组建自己的电话应答机。据笔者所了解的,现在最流行的Windows环境下的SSH客户端软件是PuTTY吧,这也正是我想要使用来远程管理这台Debian计算机的软件。把PuTTY的可执行程序下载后,双击它,然后再输入这台Asterisk计算机的IP地址,再点击“open”按钮就行了。然后,就会出现有关的安全警告信息以提醒用户注意,询问用户是否愿接受一个密钥,选择“Yes”,然后当“login as:”提示出现后再输入“root”(当然,是不要这两个引号的)。一旦登录进入到系统中后,就好像你正在那台真正的计算机上操作一样,能够拥有对这台机器的全部控制权限。当然,我们也可打开多个SSH会话进程连接到这台Asterisk计算机上,这样等下的操作时也许能够派得上用场。
现在,我们需要获得和安装所使用的那块X100P接口卡的驱动程序了(aka内核模块),输入如下的命令来完成这一过程:
aptitude install module-assistant
aptitude install kernel-headers-`uname -r`
m-a prepare
apt-get build-dep zaptel-source
m-a a-i zaptel
depmod -a
modprobe zaptel
modprobe wcfxo
到这儿,如果每一步都是正常运行的话,那你就应该能够输入如下的命令了:
lsmod | grep zaptel
执行完这个命令后,返回的信息看上去应该跟下面的这段信息差不多:
zaptel 182020 1 wcfxo
上面的这段信息表明这块X100P卡的驱动程序已正确安装好了。最后的步骤就是在这台计算机上来安装关键的那个软件Asterisk了,通过输入如下的命令来安装它:
aptitude install asterisk asterisk-config asterisk-sounds-main
配置Asterisk
现在,事情已完成一大半了,Asterisk已经正确安装完毕,而且X100P的驱动程序的安装也没出现什么问题。如今我们仅仅只需要来配置一下这个系统了。顺便说一下的是,在Digium的web站点上,有大量有关硬件配置方面的资料可供下载,大家可参考一下这些官方提供的资料。
注意:在本文以下的内容中,凡涉及到编辑Digium系统中的各种不同用途的配置文件,笔者都是使用的nano这个文本编辑器。在这,我给大家介绍几个比较常用的热键,结合起来使用这些热键可更方便你的操作,提高工作效率。Ctrl+W是在一个文件中搜索文字内容;Ctrl+O是保存所编辑的文件内容;Ctrl+X退出编辑器;Ctrl+W后,再按下Ctrl+V是直接跳到文本内容的末端。
最开始做的,我们来对X100P接口卡的配置文件作一些小小的修改,输入如下的命令:
nano /etc/zaptel.conf
使用nano打开X100P接口卡的配置文件后,在其内容的最末端增加一行新的内容,如下:
fxsks=1
然后再保存,退出,并接着输入如下的内容:
ztcfg -vv
从屏幕上的信息可看出,有一个通道已配置好了。现在,我们进入到/etc/asterisk目录下,在其中打开zapata.conf这个配置文件。输入如下的命令:
cd /etc/asterisk
nano zapata.conf
在这个文件中,我们搜索一下如下的内容:
signalling=
正常情况下你应该能够看到有一行如下所示的内容相似的信息:
signalling=fxo_ls
找到这行内容后,我们再把它修改成如下的内容:
signalling=fxs_ks
然后,在这个文件的末尾,我们再添加两行新的内容,如下:
context=incoming
channel => 1
最后,我们来作一下另外的修改,免得当我们不小心关掉或者重新启动这台计算机后,Asterisk能够在系统启动的时候自动运行。输入如下的命令:
nano /etc/default/asterisk
然后再把其中的内容RUNASTERISK=no更改成RUNASTERISK=yes,保存退出后就行了。现在我们只要简单地输入:
asterisk
就可以启动这个软件,让它在后台运行了。
到现在,我们已经把Asterisk配置好了,并且使它开始运行,准备工作了。不过,不管你什么时候更改了它任意一个配置文件的内容,都需要重新装载Asterisk的配置参数。有好多种的方法来完成这一点,不过,我们可使用如下的这种方法,在提示符下输入如下的命令:
/etc/init.d/asterisk reload
基本上都差不多了,最后来检查一下看各个方面是否都运行正常,并且看看是否已经正确连接一条可正常使用的电话线到FXO卡上了,从另外一条电话线或者是你的移动电话来拨一下号试试看。如果一切正常的话,那你就应当能够听到Asterisk的演示声音了。
配置Asterisk为一台应答机
现在我们既然有了一套可正常工作的系统了,那还等什么,马上开始来使用它记录一个我们自己的留言信息,给自己来点祝贺吧。要做到这个,最快的办法是让Asterisk录下你自己的声音信息。相关这个项目系统的配置信息都是存储在/etc/asterisk/extensions.conf这个文件中,如果打开这个配置文件后,我们会发现其中有许多的不同方面的配置实例,这些实例都可供我们使用。但现在我们只是想添加一个临时性的扩充,以使用它可记录下我们的欢迎语音信息。
另外,在这给大家提个醒的是,在你开始对这个配置文件作任何更改之前,笔者强烈推荐大家最好是把它作一个备份,拷贝它到另外的文件夹中去,免得以后在需要的时候我们可把它恢复到其最原始的状态。我们可通过如下的命令来拷贝这个文件:
cp extensions.conf extensions.conf.bak
现在你可把这个文件打开并来进行编辑了:
nano extensions.conf
在这个文件的最末端,我们要添加三行新的内容,如下所示:
exten => 1205,1,Wait(2)
exten => 1205,2,Record(/tmp/asterisk-recording:gsm)
exten => 1205,3,Hangup
保存退出配置文件后,重新装载Asterisk(由于我们已经更改了它的一个配置文件,要使这个文件马上生效,就必须重新启动一下 Asterisk,记得不?前面提过),启动完成后,我们从另外的一根电话线或是移动电话上来拨号到Asterisk上。一旦它的演示语音信息提示说明这个可用的扩展,就拨号1205来触发你的那个新的扩展。然后,你应该听到一声“嘟”的声音,就可以来录下自己的欢迎词了,对着麦克风说几句吧。录好自己的欢迎语音信息后,马上我们就可使用这个自己的欢迎语音信息来代替系统的演示欢迎信息。现在,录好这个自己的欢迎信息后,让我们来把生成的这个文件移动到 Asterisk能够使用到的地方去吧。输入如下的命令:
mv /tmp/asterisk-recording.gsm /usr/share/asterisk/sounds/
这个extensions.conf配置文件的功能非常强大,其中有许多的选项来控制Asterisk的功能,要描述它的所有功能和灵活地运用它所提供的各种参数,可不是一两句这能够表述得清楚的,要用大量的文章篇幅来作专门的解释。在这我们就不需要解释得那样详细了,为了使事情简化,我们现在仅仅只需要来修改它的演示语音信息。再一次,我们打开这个配置文件:
nano extensions.conf
在这个文件的内容中,我们搜索[demo]这样的文字,首先找到的内容是响铃几秒钟后开始进入自动应答状态,即我们手动接电话的时间有多长,系统默认的只有一秒钟,我们要把它修改得稍微长一点,如7秒钟,把
exten => s,1,Wait,1
修改成:
exten => s,1,Wait,7
接下来找到的内容就是系统默认的演示语音信息了,我们把这些相关的内容都注释掉就行了,最好不要直接删除掉,因为可能在以后还要用得着的时候又可以马上去掉注释就行了,而不用又重复辛苦输入一次。在这个配置文件中,给一行加上注释让系统跳过不执行,是在一行内容的最开头加上一个分号就行了。如下所示:
;exten => s,5,BackGround(demo-congrats)
;exten => s,6,BackGround(demo-instruct)
然后,我们再添加两行新的内容来指示系统播放的欢迎语音信息,并把呼叫者留下的内容发送到语音邮箱中,更改的内容如下所示:
exten => s,5,BackGround(asterisk-recording)
exten => s,6,Voicemail(u1234)
为了使这个也与其他的提示信息相一致,我们也给它添加一个使用#键来挂机的方法,输入如下命令:
exten => #,1,Hangup
在这个配置文件中,还有许多其他的演示功能,而其中有好多并不是我们真正所需要的,例如做VoIP呼叫测试和回拨测试等,因此,我在它们的这些信息的每一行前面都加了一个分号,像下面的内容一样:
; Give voicemail at extension 8500
当然,在这个文件中,你也可以把先前我们添加在最末尾的那几行有关1205的扩展信息给删除掉,或者是注释它们以免不知哪时又要用到,让它们放在那里也没有关系,并不影响使用。
把这些工作都完成后,仔细检查一下看各个修改是不是都正确无误,核对后保存所有的改动并退出nano程序,然后重新启动Asterisk以装载新的配置文件:
/etc/init.d/asterisk reload
在这,我们也可以使用一个最少内容,去掉了那些用不着的功能,只保留了基本的常用功能的extersions.conf文件,只需要为数不多的几行内容就可满足我们的要求了,这样一个最小的配置文件的具体内容如下:
[general]
static=yes
writeprotect=no
[demo]
exten => s,1,Wait,7
exten => s,2,Answer
exten => s,3,DigitTimeout,5
exten => s,4,ResponseTimeout,10
exten => s,5,BackGround(asterisk-recording)
exten => s,6,Voicemail(u1234)
exten => #,1,Hangup
exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)
[default]
include => demo
哈哈,终于可以使用了,到现在,我们就自己组建了一台智能电话应答机了,使用它可接收来电和记录下语音邮件。我们能够拨入一个电话,在最初的欢迎语音信息后输入扩展数字8500来检查存储在这台应答机上的信息。在默认状态下,Asterisk语音功能将会询问你一个邮箱号码,在我们的这个实例中是1234,然后它将会要你输入一个密码,这个在没作更改的情况下是4242。
最后一点修改
出于安全方面的考虑,我们最好是修改一下它的默认密码,还有,我们要让Asterisk知道一个email地址,以方便在有新的语音邮件到达时Asterisk可发送一封email来通知我们。输入命令:
nano voicemail.conf
在这个配置文件中,搜索有关1234的内容,并把相应的4242的值修改成其他的你自己定制的密码,不过要注意的是,新的密码也只有是4个数字的形式。还可更改它的示例email地址为你自己的地址,如:
1234 => 3421,Example Mailbox,root@localhost
重新启动Asterisk以使这些新的更改值马上生效:
/etc/init.d/asterisk reload
还有几个很方便的功能,可通过如下的一些命令来实现:
asterisk -vvvcf
这个命令将会打开Asterisk的控制台,然后再使用另一个命令:
set verbose 1000
将增加更详细的信息。现在如果又拨号一次这个系统的话,你就能够看到所有的在/etc/asterisk/extensions.conf这个配置文件中创建的功能的每一个执行步骤。如果要退出控制台,只需输入命令:
stop now
除了这些以外,我们还可看到最那些最初的记录文件,其中包含了呼叫者ID信息,输入如下的命令:
cd /var/log/asterisk/cdr-csv
tail -100 Master.csv
现在我们已经有了这台正常工作的Asterisk的计算机,并成功地把它配置成了一台自动应答机。在这台机器上,能够满足的你各种扩展需求,我们可试着在它上面添加许多其他的功能,并在不需要的时候再把它们去掉就行了。在这台机器上,我们也可以设置多个邮箱,或者根据呼叫者ID的不同而对其使用不同的欢迎问候信息。并且,你当然也可以为其添加一个VoIP PBX功能。
要了解这方面的更多信息,请到Debian的网站上有关Asterisk的页面中仔细看看,要不就仔细阅读一下Asterisk的用户手册。