Asterisk是一款实现用户电话交换机(PBX)功能的自由软件、开源软件。它提供了完善的PBX功能,能够链接多种不一样的电话终端,包括普通电话机、IP电话、软电话等,支持多种主流的IP电话协议和系统接口。还有好比:语音信箱、会议电话、交互式语音提示和自动电话转接等。服务器
Asterisk能够运行在Linux或Windows等操做系统下,它支持主流VoIP协议,包括会议发起协议(SIP)、H.323,既可做为IP电话服务器也能够做为IP电话和PSTN之间的转接。还设计了一个新协议IAX,用于在Asterisk服务器之间维护话路通道。若是须要链接普通电话或PSTN中继线,运行Asterisk的服务器则须要安装相应的硬件接口板。app
Asterisk内部核心:共分为6个部分编码
PBX核心交换模块操作系统
调度和IO管理模块线程
应用调用模块设计
编码转换模块接口
动态模块加载器模块开源软件
CDR生成模块(即时呼叫详细记录报告)软件
Asterisk基本呼叫流程终端
一个电话呼叫在一个通道驱动接口(如SIP通道)上到达;动态驱动在该通道上建立一个PBX通道并启动一个PBX线程;拨号方案被执行,拨号方案在一些地方经过dial应用(app_dial.c)强制Asterisk建立一个呼叫呼出,一旦呼出Asterisk如下2个动做发生:
dial建立一个呼出的PBX通道,并请求一种通道驱动建立一个呼叫。
当呼叫被应答时,Asterisk桥接媒体流,因而第一个通道上的主叫能够与第二个通道也就是呼出通道上的被叫通话。