Asterisk——电话通信的瑞士军刀

时间:2022-11-09 09:12:46

声明:本文由本人翻译自Asterisk wiki

原文地址:https://wiki.asterisk.org/wiki/display/AST/Asterisk+as+a+Swiss+Army+Knife+of+Telephony

一、Asterisk是什么

Asterisk早期是作为一款PBX来开发的,因此人们倾向于把它看作是一个“开源PBX”,但是把Asterisk称做PBX是不准确的,Asterisk可以比PBX更强大,也可以仅仅是PBX的一部分。可以肯定的是,Asterisk开启了小型商用电话系统先河,并在其诞生后的十年间逐步发展成为一个通用的通信应用程序。如今,Asterisk的应用不仅限于IP PBX,还可以用作VoIP网关、呼叫中心系统、会议网桥、语音邮件服务器以及所有其它包含实时通讯功能的应用。

Asterisk不是一个PBX,而是PBX的动力引擎,Asterisk不是一个IVR,而是IVR的动力引擎,Asterisk不是呼叫中心的自动呼叫分配,而是自动呼叫分配的动力引擎。

Asterisk对于通信应用程序就像Apache服务器对于WEB应用程序。Apache是一个WEB服务器,Asterisk是一个通信服务器。Apache处理所有通过HTTP协议收发的底层数据报文,Asterisk处理所有通过大量不同通信协议收发的底层数据报文。当你安装了Apache,你就拥有了一个可以用于建立WEB应用的服务器,当你安装了Asterisk,你就拥有了一个可以用于建立通信应用的服务器。

WEB应用程序包含HTML页面、CSS样式表、服务端处理脚本、图像、数据库和WEB SERVICES等,Asterisk通信应用程序包含拨号方案、配置文件、录音、数据库和WEB SERVICES等。让一个WEB应用程序运行起来,需要将WEB服务器接入互联网。让一个通信应用程序运行起来,需要将通信服务器接入通信服务网络(VoIP或者PSTN)。想让别人可以访问到你的网站,就需要注册一个域名并且设置DNS将你的域名指向你的服务器,想让别人可以访问到你的通信系统,就需要一个可以呼叫到你的服务器的电话号码或者VoIP账户。

在上述的两个例子中,服务器是使应用程序运行的管道,服务器处理了底层复杂的事务就可以使应用程序开发者仅关注于应用程序的业务逻辑和展示。你不需要一定是个在HTTP方面的专家就可以建立起功能强大的WEB应用,同样,你不需要一定是个SIP或Q.931方面的专家就可以建立起强大的通信应用。

这里有一个简单的例子,下面的HTML脚本在一个正常的WEB服务器上运行会用大字号输出”Hello World!“。

<html>
<head>
<title>Hello World Demo</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

下面的拨号方案可以接听电话,在等待一秒钟后会播放“hello world”,然后挂机。

exten => 100,1,Answer()
exten => 100,n,Wait(1)
exten => 100,n,Playback(hello-world)
exten => 100,n,Hangup()

在上面的两个例子中,服务器组件处理了所有基础协议的底层数据报文。你的应用程序不需要关心字节校准、包大小等,可以处理上千种临界情况的编码译码器使你的应用程序正常运行。这就是引擎的力量。

二、谁在使用Asterisk

Asterisk由通信系统开发者创建,由通信系统开发者来使用。作为一个开源项目,Asterisk是许多不同的个人或公司以及所有需要一个灵活的通信引擎来支持他们应用程序的人之间的合作。