Asterisk

合集下载

Asterisk使用命令

Asterisk使用命令

Asterisk使用命令收藏运行调试Asterisk 1. 运行调试常用命令./asterisk & 在后台启动asterisk ./asterisk –vvvc 启动asterisk并尽量多的在控制台显示调试信息./asterisk –r 连接asterisk控制台set verbose 9999 设置打印详细信息/usr/sbin/asterisk -cvvv 启动并连接到CLI,使用3级复杂度调试/usr/sbin/asterisk -vvvr 连接到CLI,使用3级复杂度调试/usr/sbin/asterisk命令参数* -c console 控制以,用于连接到CLI界面* -v 简繁程度,设置CLI的调试信息的多少* -g 核心。

如果asterisk突然瘫痪,在接下来的时间,为了用gdb来做trace,可以产生一个核心文件* -r 远程。

用来远程重新连接到一个已经运行的asterisk进程中。

* -rx “restart now”执行一个CLI命令,而不需要连接到CLI并手动输入命令 2.asterisk控制台下常用命令sip show subscriptions sip notify Send a notify packet to a SIP peer sip prune realtime [peer|user| Prune cached Realtime users/peers sip reload Reload SIP configuration sip set debug {on|off|ip|peer} Enable/Disable SIP debugging sip set history {on|off} Enable/Disable SIP history sip show {channels|subscriptio List active SIP channels/subscriptions sip show channel Show detailed SIP channel info sip show domains List our local SIP domains. sip show history Show SIP dialog history sip show inuse List all inuse/limits sip show objects List all SIP object allocations sip show peers List defined SIP peers sip show peer Show details on specific SIP peer sip show registry List SIP registration status sip show settings Show SIP global settings sip show tcp List TCP Connections sip show users List defined SIP users sip show user Show details on specific SIP user sip unregister Unregister (force expiration) a SIP peer from the registery dialplan show 显示拨号方案dialplan reload重新加载拨打方案stop gracefully 优雅地停止asterisk stop now 立即停止运行asterisk module show 显示所有已加载模块module load cdr_radius.so 加载模块cdr_radius.so module reload cdr_radius.so 重新加载模块cdr_radius.so module unload cdr_radius.so 卸载模块cdr_radius.so core show applications 显示所有的应用,比如Dial, Radius, Hangup, Answer等core show channels 显示所有的通话频道core show codecs 显示所有支持的编解码器core show functions 显示所有的功能函数For more information on applications, just type "core show applications" at your ; friendly Asterisk CLI prompt. ; ; "core show application <command>" will show details of how you ; use that particular application in this file, the dial plan. ; "core show functions" will list all dialplan functions ; "core show function <COMMAND>" will show you more information about ; one function. Remember that function names are UPPER CASE.本文来自CSDN博客,转载请标明出处:/jrbu59/archive/2008/06/22/2575229.aspx2007-05-13 18:30asterisk1*CLI> help! Execute a shell commandabort halt Cancel a running haltadd extension Add new extension into contextadd ignorepat Add new ignore patternadd queue member Add a channel to a specified queueael debug contexts Enable AEL contexts debugael debug macros Enable AEL macros debugael debug read Enable AEL read debugael debug tokens Enable AEL tokens debugael no debug Disable AEL debug messagesael reload Reload AEL configurationagent logoff Sets an agent offlineagi debug Enable AGI debuggingagi no debug Disable AGI debuggingcdr mysql status Show connection status of cdr_mysqlcdr status Display the CDR statusdatabase del Removes database key/valuedatabase deltree Removes database keytree/valuesdatabase get Gets database valuedatabase put Adds/updates database valuedatabase show Shows database contentsdatabase showkey Shows database contentsdebug channel Enable debugging on a channeldebug level Set global debug leveldnsmgr reload Reloads the DNS manager configurationdnsmgr status Display the DNS manager statusdont include Remove a specified include from context dump agihtml Dumps a list of agi command in html format dundi debug Enable DUNDi debuggingdundi flush Flush DUNDi cachedundi lookup Lookup a number in DUNDidundi no debug Disable DUNDi debuggingdundi no store history Disable DUNDi historic recordsdundi precache Precache a number in DUNDidundi query Query a DUNDi EIDdundi show entityid Display Global Entity IDdundi show mappings Show DUNDi mappingsdundi show peers Show defined DUNDi peersdundi show peer Show info on a specific DUNDi peerdundi show precache Show DUNDi precachedundi show requests Show DUNDi requestsdundi show trans Show active DUNDi transactionsdundi store history Enable DUNDi historic recordsextensions reload Reload extensions and *only* extensions feature show channels Show status of feature channelsgroup show channels Show active channels with group(s)help Display help list, or specific help on a command iax2 debug Enable IAX debuggingiax2 jb debug Enable IAX jitterbuffer debuggingiax2 no debug Disable IAX debuggingiax2 no jb debug Disable IAX jitterbuffer debuggingiax2 no trunk debug Disable IAX trunk debuggingiax2 provision Provision an IAX deviceiax2 prune realtime Prune a cached realtime lookupiax2 reload Reload IAX configurationiax2 set jitter Sets IAX jitter bufferiax2 show cache Display IAX cached dialplaniax2 show channels Show active IAX channelsiax2 show firmware Show available IAX firmwaresiax2 show netstats Show active IAX channel netstatsiax2 show peer Show details on specific IAX peeriax2 show peers Show defined IAX peersiax2 show provisioning Show iax provisioningiax2 show registry Show IAX registration statusiax2 show stats Display IAX statisticsiax2 show users Show defined IAX usersiax2 test losspct Set IAX2 incoming frame loss percentage iax2 trunk debug Enable IAX trunk debugginginclude context Include context in other contextindication add Add the given indication to the country indication remove Remove the given indication from the countryinit keys Initialize RSA key passcodesload Load a dynamic module by namelocal show channels Show status of local channelslogger reload Reopens the log fileslogger rotate Rotates and reopens the log fileslogger show channels List configured log channelsmeetme Execute a command on a conference or confereemgcp audit endpoint Audit specified MGCP endpointmgcp debug Enable MGCP debuggingmgcp no debug Disable MGCP debuggingmgcp reload Reload MGCP configurationmgcp show endpoints Show defined MGCP endpointsmixmonitor Execute a MixMonitor commandmoh classes show List MOH classesmoh files show List MOH file-based classesmoh reload Music On Holdno debug channel Disable debugging on a channelodbc connect Connect to ODBC DSNodbc disconnect Disconnect from ODBC DSNodbc show Show ODBC DSN(s)pri debug span Enables PRI debugging on a spanpri intense debug span Enables REALLY INTENSE PRI debuggingpri no debug span Disables PRI debugging on a spanpri set debug file Sends PRI debug output to the specified file pri show debug Displays current PRI debug settingspri show span Displays PRI Informationpri unset debug file Ends PRI debug output to filerealtime load Used to print out RealTime variables.realtime mysql status Shows connection information for the MySQL RealTime d riverrealtime update Used to update RealTime variables.reload Reload configurationremove extension Remove a specified extensionremove ignorepat Remove ignore pattern from contextremove queue member Removes a channel from a specified queue restart gracefully Restart Asterisk gracefullyrestart now Restart Asterisk immediatelyrestart when convenient Restart Asterisk at empty call volumertp debug Enable RTP debuggingrtp debug ip Enable RTP debugging on IPrtp no debug Disable RTP debuggingset debug Set level of debug chattinessset verbose Set level of verbosenessshow agents Show status of agentsshow agi Show AGI commands or specific helpshow applications Shows registered dialplan applications show application Describe a specific dialplan application show audio codecs Shows audio codecsshow channel Display information on a specific channel show channels Display information on channelsshow channeltypes Show available channel typesshow codecs Shows codecsshow codec Shows a specific codecshow conferences Show status of conferencesshow config mappings Show Config mappings (file names to config engines)show dialplan Show dialplanshow features Lists configured featuresshow file formats Displays file formatsshow functions Shows registered dialplan functionsshow function Describe a specific dialplan functionshow hints Show dialplan hintsshow image codecs Shows image codecsshow image formats Displays image formatsshow indications Show a list of all country/indications show keys Displays RSA key informationshow license Show the license(s) for this copy of Asteriskshow manager command Show a manager interface commandshow manager commands List manager interface commandsshow manager connected Show connected manager interface users show modules List modules and infoshow modules like List modules and infoshow parkedcalls Lists parked callsshow queue Show status of a specified queueshow queues Show status of queuesshow switches Show alternative switchesshow translation Display translation matrixshow uptime Show uptime informationshow version Display version infoshow version files Show versions of files used to build Asteriskshow video codecs Shows video codecsshow voicemail users List defined voicemail boxesshow voicemail zones List zone message formatsshow warranty Show the warranty (if any) for this copy of Asterisksip debug Enable SIP debuggingsip debug ip Enable SIP debugging on IPsip debug peer Enable SIP debugging on Peernamesip history Enable SIP historysip no debug Disable SIP debuggingsip no history Disable SIP historysip notify Send a notify packet to a SIP peersip prune realtime Prune cached Realtime object(s)sip prune realtime peer Prune cached Realtime peer(s)sip prune realtime user Prune cached Realtime user(s)sip reload Reload SIP configurationsip show channels Show active SIP channelssip show channel Show detailed SIP channel infosip show domains List our local SIP domains.sip show history Show SIP dialog historysip show inuse List all inuse/limitssip show objects Show all SIP object allocationssip show peer Show details on specific SIP peersip show peers Show defined SIP peerssip show registry Show SIP registration statussip show settings Show SIP global settingssip show subscriptions Show active SIP subscriptionssip show users Show defined SIP userssip show user Show details on specific SIP userskinny debug Enable Skinny debuggingskinny no debug Disable Skinny debuggingskinny show devices Show defined Skinny devicesskinny show lines Show defined Skinny lines per devicesoft hangup Request a hangup on a given channelstop gracefully Gracefully shut down Asteriskstop now Shut down Asterisk immediatelystop when convenient Shut down Asterisk at empty call volume unload Unload a dynamic module by namezap destroy channel Destroy a channelzap show cadences List cadenceszap show channels Show active zapata channelszap show channel Show information on a channelzap show status Show all Zaptel cards status。

asterisk桥接原理

asterisk桥接原理

asterisk桥接原理Asterisk桥接原理Asterisk是一款开源的通信平台,可以用于创建和管理各种通信应用,如电话系统、呼叫中心和语音转接等。

在Asterisk中,桥接是一项重要的功能,它允许将多个通信通道连接在一起,实现通话的转接和协同。

桥接是Asterisk中的核心概念之一,它可以将两个或多个通信通道连接在一起,使其能够互相通话。

桥接可以在不同的通信协议之间进行,比如SIP、PSTN和VoIP等。

通过桥接功能,用户可以实现电话的转接、电话会议和多方通话等功能。

Asterisk桥接的原理是基于虚拟通道和音频流的传输。

当用户发起通话时,Asterisk会为每个通话创建一个虚拟通道,该通道负责管理通话的状态、音频流的传输和通话的控制。

当需要桥接两个通话时,Asterisk会创建一个新的虚拟通道,将两个通话的音频流连接在一起。

通过这种方式,Asterisk实现了通话的转接和协同。

在Asterisk中,桥接是通过应用程序来实现的。

用户可以使用Asterisk提供的命令和配置文件来创建和管理桥接。

在创建桥接时,用户需要指定要桥接的通话通道和音频流的参数,如通道的类型、通道的标识和音频流的编码格式等。

通过这些参数,Asterisk可以正确地将两个通话桥接在一起,并保证音频流的传输质量。

除了基本的桥接功能,Asterisk还提供了一些高级的桥接功能,如混音、静音检测和音频录制等。

通过这些功能,用户可以实现更复杂的通话应用,如电话会议和多方通话等。

用户可以根据自己的需求,选择合适的桥接功能来实现所需的通话功能。

总结起来,Asterisk桥接原理是基于虚拟通道和音频流的传输。

通过创建虚拟通道和连接音频流,Asterisk可以实现通话的转接和协同。

桥接可以在不同的通信协议之间进行,并支持多种高级功能。

通过灵活使用Asterisk的桥接功能,用户可以创建各种通话应用,满足不同的通信需求。

Asterisk安装与配置

Asterisk安装与配置
Enable:
YES
Display
Name: 1001
Username:
1001
Authorization
User: 1001
Password:
test
Domain/Realm:
xx.xx.xx.xx ;Asterisk服务器地址
SIP
Proxy: xx.xx.xx.xx ;Astersk服务器地址
Asterisk应该搭配数据库,不然从语音邮箱考虑,存储都是个问题。。。。

=> 1234, qiong,
[email=qiong@asterisk-server]qiong@asterisk-server[/email]
1002
=> 1234, ddd,
[email=ddd@astersik-server]ddd@astersik-server[/email]
kernel-smp-devel--zaptel
gcc-c++--asterisk
openssl-devel--asterisk
newt-devel--zaptel
zlib-devel--asterisk
unixODBC-devel--asterisk
libtool--asterisk
#
make config ;对于REDHAT系列系统,可将asterisk添加到/etc/rc.d/init.d中
#
make samples ;安装配置文件
3、Asterisk简易配置
make--asterisk
注:很多包在安装光盘中都有,不需要再下载。

Asterisk 功能整理

Asterisk  功能整理

Asterisk (已测)功能列表一.PBX功能1.电话接听呼入电话,自动应答,或者转接给分机2.电话转接分机之间,分机与外线进行转接3.语音信箱预忙或者无法接听时接入到语音信箱,信箱所有者可以通过互联网或者电话拨号的方式获取语音邮件4.留言录制预忙或者无法接听时录制留言5.电话管理增加号码,删除号码,某路电话,监听外线电话等6.各种协议电话互通支持多种电话协议(SIP,iax2,H.232等)及PSTN网络7.等待音乐播放支持多组等待音乐的定制,可以为不同的呼入以及不同的组或者个人设定不同的等待音乐,实现音乐判断,以及个性化定制8.话单输出系统可以输出详细清单,对于系统发生的所有呼叫都可以储存到特定地点,以文件或者数据库的方式9.根据各种规则设定呼出呼入权限设定可以设置每个分机的呼出呼入权限,控制分机外线流量10.电话路由功能可以通过配置,对外线电话或者特定电话进行路由设置,可以适应用户原有的拨号习惯11.用户添加注册增加新的用户,删除用户信息,更新用户信息等12.DialPlan定制可以定制各种用于服务和通话的呼叫方案,满足不同行业不同需求13.外线电话录音功能对所有外线电话可以进行录音,或者局部电话进行录音14.来电过虑通过设定过虑规则,或者设置黑名单的方式,屏蔽骚扰电话,影响正常工作的电话等。

二.VoiceCallCenter 功能1.座席功能支持Agent座席功能,可以对座席分组2.呼叫自动分配(支持六种分配策略)支持六种呼叫策略,满足各种呼叫中心的需求3.通话监听班长或者管理员可以通过一个终端或者一个座席拨打一个固定的电话号码,输入密码后监听每个agent的电话4.座席优先级设置通过对座席优先级的设定,可以影响分配策略,实现能者多劳,或者对业务熟练的多接听的手段5.通话录音可以对座席的所有通话进行录音。

以便任何时间抽查,审查,或者提出改革方案等三.IVR语音菜单功能1.语音点播对语音按键相应,播放不同的音乐或者执行不同的程式2.DTMF发送、接收、处理可以对DTMF码进行接收,发送,和处理,从而实现互动3.多级语音菜单主菜单下可以挂靠子菜单,子菜单下还可以挂靠子菜单4.语音交互5.VIP接入免菜单直接接入通过对方电话号码判断是否VIP,如果VIP则直接接入指定分机或者指定队列,实现VIP管理四.Conference功能1.加入会议建立一个会议,允许用户加入到会议中2.会议发言,旁听对于加入会议的人,只允许听,不允许说3.会议主持可以通过设定会议主持,其他与会者听,会议主持主持会议4.会议管理可以设定特定的管理密码和管理人员,管理整个会议5.会议录音可以将会议内容录音,以备后续应用和学习6.主动邀请(未测)主动邀请用户加入到会议7.会议留言进入会议后留言,给每个进入的用户播放8.关闭会议关闭会议室或者清空会议室五.脚本支持功能Asterisk支持很多脚本语言,例如 perl,python,shell设置C和pascal 语言都有支持六.补充和总结Asterisk 还有一些其他的PBX和其他语音支持系统所没有的一些功能,有很强大的呼叫函数支持。

Asterisk-相关知识与应用

Asterisk-相关知识与应用

DialPlan (拨号方案)
dial : 它是Asterisk 很有价值的一功能,当来电者使用不同的通信方式时,它可以进行转换并进 行呼叫连接,如SIP电话到PSTN呼叫
Contexts : 拨号方案(DialPlan)进入部分我我们称为Contexts,每个Contexts 有一些extensions(扩展)构成,来实现一系列相关服务。
举一个例子如下: [default]
在extensions.conf 配制文件中, [default]上下文是拨号方案默认的进入部分
DialPlan (拨号方案)
goto 功能是发送呼叫到拨号方案中的其它context部分.
语法: goto(context,extension,priority)
[default] exten => 123,1,Answer() exten => 123,n,Background(main-menu) exten => 1,1,Playback(digits/1)
支持一条线路,只需要增32KB 的带宽,但是需要网络 质量良好。 Asterisk可支持成千的客户端(需要板卡与带宽支持)
asterisk 安装与启动
1从官方网站下载 asterisk-1.2.26.tar包,拷备到LINUX 下的用户目录. 2 用tar xzvf asterisk-1.2.26.tar 解压到当目录. 3 进入 asterisk 目录 执行如下命令
/usr/lib/asterisk/modules/ 这个目录包含所有可以加载Asterisk模块(应用程序\ 编辑器\格式和有用 通道),在Asterisk启运时会加载这些模块(可以编辑 modules.conf).
/var/lib/asterisk 比较重要的是astdb文件与agi-bin目录;astdb包含Asterisk当地数 据库信息. sounds/ 所有声音提示的文件在里面 mohmp3/ 如果配置了音乐保持,应用程序会在这个目录下查找mp3 keys/ 使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等 连接.公钥和私钥的扩展名分别为.pub和.key

asterisk词根

asterisk词根

Asterisk词根“Asterisk”是一个来源于希腊语的词根,其基本意思是“小星星”。

这个词根在英语中有着广泛的使用,通过与其他词根或词缀组合,可以形成许多与星星、发光、标记等相关的词汇。

以下是对“asterisk”词根的详细解释:词根的含义:“asterisk”这个词根的含义是“星星”或“小星星”。

在希腊语中,asteriskos指的是“小星星”,而到了拉丁语中,该词根被用来表示“星形的符号”。

随着时间的推移,“asterisk”逐渐演变成了现在的含义。

与其他词根或词缀的组合:“asterisk”可以与其他词根或词缀组合,以形成与星星、发光、标记等相关的词汇。

例如,“asterism”意为“星象”,这个词由“asterisk”和“ism”组成,表示有关星星的事物或信仰。

“asterisk”还可以与其他字母或词缀组合,以形成更为复杂的词汇。

例如,“asterile”意为“无生育能力的”,该词由“asterisk”和“ile”组成,表示与星星无关的事物。

在科学领域的应用:在天文学中,“asterisk”常被用来表示恒星。

恒星在天空中呈现为亮点,而“asterisk”可以看作是一种简化的图形表示方法。

此外,在天文学中还有许多与星星相关的词汇,如“asteroid”(小行星)、“astrolabe”(星盘)等。

在遗传学中,“asterisk”常被用来表示突变或变异。

在DNA序列中,如果发生变异或突变,通常会用星号来表示,这是一种简化的标记方式。

语言学中的用法:在语言学中,“asterisk”常被用来表示未知的或无法确定的音素。

例如,在语音学中,如果某个单词的发音不确定或无法确定,可以使用星号来表示该音素。

“asterisk”还可以用来表示对某个事实或信息的质疑或不确信。

例如,在文献引用中,如果作者对引用的内容持怀疑态度或无法确定其准确性,可以在引文后加上星号以示提醒。

商业和计算机领域的应用:在商业和计算机领域,“asterisk”常被用来表示通配符或占位符。

Asterisk核心框架

Asterisk核心框架

Asterisk内核框架Asterisk是一个开源的pbx系统,在公开的资料中,很难找到asterisk内核系统的详细描述。

因此,很有必要写一篇内核框架的描述文档,作为内部培训文档,相互学习提高。

本文主要从三个层面来描述asterisk内核,即asterisk内核模块、内核启动过程、基本呼叫流程。

一、asterisk内核模块Asterisk由内部核心和外围动态可加载模块组成。

内部核心由以下六个部分组成:PBX交换核心模块(PBX Switching Core)、调度和I/O管理模块(Scheduler and I/O Manager)、应用调用模块(Application Launcher)、编解码转换模块(Codec Translator)、动态模块加载器模块(Dynamic Module Loader)和CDR生成模块(CDR Core)。

外围动态可加载模块包括以App_开始的Applications、以Func_开始的Functions、以Res_开始的Resources、以Chan_开始的channels、以Codec_开始的codec编解码模块等。

1.内核模块1) PBX交换核心模块(PBX Switching Core):l pbx.cpbx.c是asterisk的核心模块,每路呼叫都需要经过它调度。

pbx实现了builtin applications,也就是内置的应用,比如最常见的Answer,Hangup, Background,Wait等等。

struct ast_app是一个关键数据结构,它定义了注册builtin applications的结构。

load_pbx函数用来注册builtin applications和一些命令行CLI命令(每个模块都有些CLI 命令)。

该函数在系统启动时被调用。

pbx_exec是Answer/BackGround/Busy/Goto/GotoIf/Hangup/Set等builtin applications的执行入口函数,它被pbx_extension_helper调用。

Asterisk 安装和配置

Asterisk 安装和配置

准备工作:(1)安装WM ware虚拟机(2)操作系统:内核2.6的Linux 系统,建议使用Fedora 。

(3)安装软件:asterisk.tar.gz , libpri.tar.gz, zaptel.tar.gz。

路径:\\10.7.1.7\TeamShare\AlexJunkieGrp\TEMP。

(将这三个文件放到Linux 系统的/opt文件夹下。

)(4) SSH终端。

步骤(1):安装虚拟机(略)步骤(2):安装fedora 8 操作系统(也可以使用已经安装过的操作系统)安装操作系统 fedora 8(1)最好完全安装。

(2)在安装过程中配置自己的硬盘大小,如果完全安装的话一般4.0G是不够的。

所以请避免安装时引起的很多不必要的麻烦Attention: 保证网络流通,关闭防火墙。

安装Asterisk依赖包清单包--依赖关系gcc--libpri, zaptel, asterisklibtermcap-devel--asteriskkernel-devel--zaptelkernel-smp-devel--zaptelgcc-c++--asteriskopenssl-devel--asterisknewt-devel--zaptelzlib-devel--asteriskunixODBC-devel--asterisklibtool--asteriskmake—asterisk(1)检查是否已经安装kernel-devel# rpm -q kernel-devel例如:kernel-devel-2.6.18-92.1.10.el5,表示已经安装,如果没有安装,要用yum安装一下,如下 yum install kernel-devel(2)检查是否已经安装以下的辅助软件包rpm -q bisonrpm -q bison-develrpm -q ncursesrpm -q ncurses-develrpm -q zlibrpm -q zlib-develrpm -q opensslrpm -q openssl-develrpm -q gnutls-develrpm -q gccrpm -q gcc-c++rpm -q mysql-devel(4)如果没有安装则用yum安装yum install bisonyum install bison-develyum install ncursesyum install ncurses-develyum install zlibyum install zlib-develyum install opensslyum install openssl-develyum install gnutls-develyum install gccyum install gcc-c++yum install mysql-devel准备工作完毕步骤(3):安装asterisk (1):解压缩软件包# cd /opt解压缩三个文件包:#tar -xvzf libpri.tar.gz#tar -xvzf zaptel.tar.gz#tar -xvzf asterisk.tar.gz删除文件包:#rm -r *.gz(2):安装zaptel# cd zaptel# ./configure# make (显示编译成功)# make install (显示安装成功)# make configAttention: 安装过程中不会出现错误信息(3):安装libpri退出zaptel文件夹#cd ..# cd libpri# make# make install(4):安装asterisk如果没有出现错误,安装是正确的# cd ..# cd asterisk# ./configure# make (显示编译成功)# make install (显示安装成功)# make samples测试一下asterisk是否安装成功可以执行asterisk的主命令# asterisk –vvvvvvvvc(启动asterisk)如果这个时候提示cli> 表示已经成功cli> stop now(退出asterisk)# make config(配置启动)安装asterisk完成步骤(4):asterisk 配置在安装asterisk成功后,用两个sip电话通过asterisk服务互通打电话,需要配置sip.conf, extension.conf。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第32章VoIP服务器——Asterisk可以自己用软件实现电话交换机?是的,这就是本章我们要讨论的话题。

如何在Linux下实现免费的电话交换机功能。

32.1用Linux实现免费电话大餐在架设自己的电话系统之前,我们先看看传统的电话网络是如何工作的。

传统的电话网络,叫做Public Switched Telephone Network,公共交换电话网络,简称PSTN,是一种全球联网的语音通信电路交换网络,通过中继和交换设备进行通讯。

不难看出,我们现在使用的IP计算机网络和PSTN颇有几分相似之处,在PSTN中呼叫一个电话号码相当于通过IP网络到达一个IP地址,在骨干PSTN网络中,也和IP协议一样使用复用机制来传递数据。

对于私有电话系统来说,也和IP计算机网络有着类似的原理。

公司的电话交换机直接对外(相当于IP网络中的公网地址),外部人员只能访问到电话交换机总机,由总机控制应该将这个连接转到哪个分机上(类似于IP中的NAT),内部的分机不是合法的电话号码(192.168.x.x?),只有通过公司的电话交换机才能与外界正常通讯。

在这里,公司的电话交换机,也就是通常所说的程控交换机,也叫PBX,Private Branch(telephone) eXchange的缩写,意思是私有/专有电话交换系统,传统的PBX使用PSTN网络连接并提供语音通话服务。

随着技术的发展,出现了基于IP网络的语音传输业务,即V oice over IP,简称V oIP,人们可以通过计算机网络(通常是指Internet或Intranet)进行语音通话,而后,又出现了基于IP网络的PBX,简称IPPBX,IPPBX不需要专用的网络,可以通过Internet和V oIP实现类似于传统电话系统的功能,而且,使用IPPBX进行通信,对内没有任何费用,只有网络建设成本,对外只需要支付接入到Internet的费用,没有任何额外的通话或漫游、长途费用,IPPBX的优势不言而喻,而通过一些硬件设备(比如调制解调器),IPPBX也可以和现有的传统PSTN网络互通。

也就是说,在所有使用IPPBX的用户之间,我们的通话都是通过Internet而非电话局的专有网络进行,都是免费的,而且不受任何电信运营商的控制,这对传统电话业务造成了很大的冲击,也使得IPPBX开始迅速发展。

随着计算机硬件处理能力的加强、计算机骨干网络传输能力的提升和V oIP软件技术的进一步发展,纯软件的IPPBX开始出现,相当于无需增加任何设备,一台PC就可以作为一个IPPBX使用,提供电话系统的功能,这大大节省了公司的成本和日常费用,同时,随着Linux的兴起,基于Linux的开源IPPBX软件出现了,也就是说,我们可以完全免费并且是合法的构建起自己的V oIP电话系统。

而这些开源IPPBX软件中的佼佼者,就是Asterisk。

32.2用Asterisk提供免费的VoIP服务1999年,Linux Support Service公司的Mark Spencer出于工作需要和资金的压力,开始捣鼓基于Linux的免费电话系统,因为当时PBX都是专有厂商而且价格昂贵(现在也是),他开始尝试自己开发纯软件的PBX系统,这就是Asterisk的起源。

随后,依靠全世界电信和程序爱好者的共同努力,Asterisk开始迅速发展,并成为开源软件IPPBX领域的明星,2001年,随着Asterisk的发展,Linux Support Service改名为Digium公司,开始专门提供Asterisk服务及相关语音板卡硬件的销售业务。

之所以选择Asterisk这么古怪的名字(Asterisk是*号的意思),只是因为创始人Mark Spencer选择了一个既存在于传统电话按键中,又存在于Linux中而且代表通配符的这样一个符号,我认为这也从侧面反应了他想让Asterisk成为基于Linux的电话系统标准的想法。

Asterisk 支持 几乎所有Linux、Unix类操作系统,甚至可以支持Windows操作系统(目前最新版本的Asterisk for Windows是0.6版,构建于标准Asterisk 1.2.13),除了提供最基本的V oIP语音通话功能,Asterisk还支持传真、语音信箱、彩铃(RBT, Ring Back Tone)、电话会议(多方通话)、IVR(Interactive V oice Response,互动式语音应答)等高级功能,Asterisk的这些功能,和当前的任何硬件或商业软件PBX,也可以说是丝毫不逊色,甚至在灵活性和可配置性方面比硬件PBX更加出色,相信接触过传统PBX系统的朋友一定感同身受,各式各样的古怪命令可不是那么好玩:-)。

这些以往需要昂贵的硬件、软件和人员成本来构建的高级专业系统,才能完成的任务和功能,Asterisk都可以完成,而Asterisk的座右铭是:这不过是软件!(It’s only software!)我们不禁会想,会不会有一天,硬件PBX完全消失,这个世界的电信系统是Asterisk的天下?Asterisk并不是一个特定的电话系统,它实际上是一个支持各种扩展的应用网关,我们可以在网关上开发出各种逻辑和流程,提供各式各样的服务。

例如,可以开发出基于H.323、SIP、RTP等协议的语音通话服务,可以支持alaw/ulaw,GSM,ILBC,G.729a等多种数据压缩格式,这样,就能以Internet为平台提供优质的语音服务。

虽然语音通讯是Asterisk的核心,但并不是Asterisk的全部,例如,可以围绕Asterisk方便的扩展出传真、语音邮件等功能,甚至可能通过Asterisk的平台,用电话对系统进行管理。

Asterisk如此强大的原因,是因为Asterisk具备完善的程序逻辑,这也可以说是Asterisk最耀眼的功能。

例如,我们可以通过用户的按键操作,选择是为他接通某个分机还是给某人发邮件,或者把它加入到正在进行的某个会议中。

我们可以控制当被呼叫的用户无法接通时,自动转到他的留言信箱,并把留言作为附件发送到用户指定的邮箱,总之,只要是可推断的操作,都能为之提供一定的功能作为响应。

我们也可以很容易就建立起企业自动电话服务系统,为客户提供已录制好的常见问题解答或企业服务介绍,依据用户的按键,选择播放不同的内容,当用户无法得到想要的解答时,还能及时把他们转到人工座席。

更重要的是,这一切,都是建立在免费的、纯软件的基础之上的。

用户几乎不需要任何投入,只要有一台586 PC,就能为企业提供完全免费的V oIP电话服务(当然,如果需要同时接入到传统电话网络,还是需要一点点投入的)。

如果能为企业构建起这样一套电话系统,是不是很让人心动?还等什么呢?赶快投入到Asterisk系统中来吧!32.3获取Asterisk及其相关软件前面说过,我们只需要一台PC就能构建出完善的商业级电话系统,但这个系统是基于纯粹的Internet V oIP的,如果要和传统电话互联,则需要投入一点费用用于申请电话号码和购买一块转接卡,用于将传统电话网络跟我们的V oIP电话网络进行互联,对于小型办公场所而言,我们涉及的传统电话都将是模拟信号,因此这块板卡通常都是模拟转换卡,也就是市面上常见的Zapata公司的X100P 卡或兼容卡,它有专门的管理和驱动,这些驱动和管理工具软件被统称为zaptel,用户可以通过Asterisk公司Digium网站或Asterisk网站获取。

如果我们使用一些ISDN设备比如数字方式的PSTN中继接入卡,那么还需要另一个库libpri,它是Primary Rate ISDN的缩写,可以用于ISDN设备的管理和驱动,如果我们没有用到这种设备,那么就不需要它。

另外,Asterisk默认只支持通过ODBC连接到外部数据源,因此,如果想使用MySQL来配置和管理Asterisk,那么你需要安装Asterisk-addons这个包,它支持asterisk直接连接到MySQL数据库。

除此以外,还有Asterisk-sounds包,这个包主要是额外的语音文件,由于目前还没有中文语音,因此我认为对于我们中文用户来说意义不大。

上述软件都可以通过Asterisk网站找到。

最后,我们可能涉及的软件是FreePBX(),它提供了一个管理Asterisk的Web界面,用户可以通过这个见面直观的对Asterisk进行管理,但FreePBX是基于MySQL的,它会覆盖掉所有现有的配置文件,而且它使用自己的配置数据结构,也就是说,对于已经存在的系统,你可能需要全部重新配置。

这是我不喜欢FreePBX的原因。

而且最新的FreePBX版本是2.2.1,它只能支持Asterisk 1.2.x,如果用来管理1.4版本的Asterisk,可能会存在未知的问题。

通过集成CentOS、Asterisk和FreePBX,Fonality公司提供了一个完全傻瓜式的Asterisk系统(或者叫产品系统),从安装操作系统到配置、管理路由和分机,都可以实现高度自动化,这个系统,被称为Trixbox(),之前叫做Asterisk@Home(简称AAH),目前最新版本是2.0。

这是个非常流行的Asterisk系统,因为它有着迅速、方便的安装和管理能力,看上去更像一个成熟的产品而非黑客的玩具,它最适合于新买来的计算机,用户不需要什么前期准备,甚至不需要格式化硬盘,直接把光盘插入新买的计算机中,就能完成所有的安装和配置。

最近开发Asterisk的公司Digium现在也开始推出自己的类似产品——AsteriskNOW(),它也是一个具备和Trixbox相似扩展功能的,集成了操作系统和Web管理界面的产品级别的Asterisk系统,不过目前版本还是BETA 4,使用的人还不多,今后究竟哪个系统更加符合用户需求,应用更加广泛,还需要我们拭目以待。

32.4Asterisk及其相关软件的安装首先,确保系统的编译环境是完好的,包括gcc、c libary、make和内核源文件kernel-source等软件都已经被安装了,虽然对于大多数系统来说,这些都是默认安装的,但对于少数系统来说,出于安全考虑,会清除掉软件编译的环境,或者没有安装kernel source,那么在安装Asterisk及相关软件时很可能出现错误,对这类系统,就需要首先安装好上面提及的这几个软件包。

比如,在Debian系统中,可以使用下列命令安装上面的包:Debian: apt-get update;apt-get install gcc make libc6-dev linux-source然后,我们将所有需要的软件包下载下来,包括asterisk、asterisk-addons、zaptel、libpri等,需要的根据用户情况下载必须的软件,并把他们统一解压到某个目录比如/usr/src/voip下,然后我们开始各种关联软件的配置、编译和安装。

相关文档
最新文档