Asterisk权威指南/第二章 Asterisk架构

Asterisk 实战速成:从零搭建企业级呼叫中心 本文详细介绍了如何从零开始,基于开源通信平台Asterisk和FreePBX图形化管理界面,快速搭建一个功能完整的企业级呼叫中心。内容涵盖环境部署、SIP分机配置、呼入呼出路由设置,以及IVR、呼叫队列、通话录音等核心功能的实战配置,为预算有限但需要定制化通信解决方案的团队提供了清晰指南。 阅读详情
Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels)。

传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界)。这意味着,你不可能无缝地在一个工作站端口配置一个外部网关。同样,传统PBX也很难实现对离站(off-site,不在座位上或外出办事)资源的访问,比如前台如果外出办事就什么事都做不了,因为她哪怕能打电话回公司,也是不能访问内部资源的。

Asterisk在内部不区分工作站信道和电话局信道,而是一律统称信道。有很多种信道类型(驱动不同),但Asterisk拨号计划以不加区别(接口一致)的方式处理这些信道,也就是说,一个内部用户可能位于电话局端口,但拨号计划可以把他当成在工作站端口一样。如果你没有用过传统PBX,可能还体会不到Asterisk这种方式的强大和灵活。下图显示了两种架构的区别。


模块

Asterisk是基于模块构建的。一个模块提供特定的功能,是一个可装载的组件,比如信道驱动(chan_sip.so),或者一项可以连接到外部技术的资源(func_odbc.so)。Asterisk按照/etc/asterisk/modules.conf配置文件装载模块。后面我们会讨论各个模块的使用。这里我们只会介绍模块的概念,以及模块的各种类型。

运行一个不加载任何模块的Asterisk也是有可能的,尽管它什么都做不了。你只有理解了Asterisk模块化的特点,才能充分理解Asterisk的架构。

Note:你可以启动一个没有加载任何模块的Asterisk,然后手工在控制台一个个地添加;这种方法一般用于性能调优,可以保证仅加载所需要的模块。

Asterisk模块类型包括:

  • 应用程序(即拨号计划中的命令)
  • 桥接模块
  • 呼叫详单记录模块
  • 信道事件日志模块
  • 信道驱动
  • 编码解码器
  • 格式解释器
  • 拨号计划函数
  • PBX模块
  • 资源模块
  • 附加模块
  • 测试模块

接下来我们会列出分属各个类型的所有模块,他们的用途,以及我们所认为的受欢迎程度和重要程度(有一些很常用,但有一些不太有用,仅仅是为了兼容而保留)。这些模块的细节会在本书中陆续介绍,根据各自的情况,有些会被全面的讨论,有些则根本不会涉及。

下面这些术语反映了我们对各个模块的看法:

  • 不重要
这个模块是个老古董。如果你要使用它,就不要指望能在社区中得到很好的支持。
  • 不可靠
新设计的或者试验性的模块,不要用于生产环境。
  • 很有用
很时新,有人维护,受欢迎而且被推荐。
  • 可以用
能够用,但用得不多,可能不完整。不推荐。
  • 不好说
新出现的模块,时间短,完整性和受欢迎程度都不太好说。
  • 已废弃
已经被更好的模块取代了。
  • 有局限
有局限性,不能满足要求。
  • 很重要
必须的。

应用程序

应用程序用于拨号计划中,能够处理呼叫流程。比如Dial()就是一个很重要的应用程序,负责建立出局连接。

名称用途评价
app_adsiprog给兼容模拟电话加载模拟显示服务接口(ADSI)脚本。不重要
app_alarmreceiver支持接受警报设备的报告。不重要
app_amd检测电话答录机。不稳定
app_authenticate比较双音多频(DTMF)输入和一个给定的字符串(通常是密码)。很有用
app_cdr写CDR记录。很有用
app_celgenuserevent为CEL产生用户自定义事件。不好说
app_chanisavail检测信道的状态。不稳定
app_channelredirect强制另一个信道进入拨号计划的另一个地方。很有用
app_chanspy允许一个信道收听另一个信道。很有用
app_confbridge电话会议(新版)。不好说
app_controlplayback播放提示,并提供快进和倒带功能。很有用
app_dahdibarge允许在DAHDI信道中插话。(已废弃,见app_chanspy)已废弃
app_dahdiras在DAHDI信道上建立RAS服务器。不重要
app_db访问Asterisk内置的伯克利数据库。(已废弃,见func_db)已废弃
app_dial把信道连接起来。(例如,打电话)很重要
app_dictate播放一段录音,并提供开始/停止功能。很有用
app_directed_pickup应答另外一部分机上的呼叫。很有用
app_directory给出voicemail.conf中的姓名列表。很有用
app_disa提供拨号音并接受DTMF输入。很有用
app_dumpchan在Asterisk控制台打印信道变量。很有用
app_echo回放从信道中收到的语音。很有用
app_exec包含Exec(),TryExec()和ExecIf()。根据条件执行应用程序。很有用
app_externalivr类似于AGI,但是异步的。很有用
app_fax提供SendFax()和ReceiveFax()很有用
app_festival“文本-转-语音”引擎。可以用
app_flash在信道上执行一次瞬间挂机很有用
app_followme根据followme.conf文件执行找到我/跟随我功能。很有用
app_forkcdr在当前呼叫上开始一条新的CDR记录。可以用
app_getcpeid获得ADSI CPE ID。不重要
app_ices把音频发送到一个icecast服务器。可以用
app_image向可以支持的设备上传输图像。有局限
app_ivrdemo开发者的示例应用程序。不重要
app_jack使用JACK音频连接工具包共享音频。很有用
app_macro触发拨号计划宏。(已废弃,见GoSub())已废弃
app_meetme多方会议。很有用
app_milliwatt产生1004赫兹的音频,以测试模拟电路。很有用
app_minivm提供基本的函数,使得你可以构造自己的语音信箱。可以用
app_mixmonitor两头录音,然后合并。很有用
app_morsecode产生莫尔斯电码。可以用
app_mp3用mpg123播放mp3。不重要
app_nbscat获得NBS音频。不重要
app_originate允许发起一次呼叫。很有用
app_osplookup执行OSP查找。可以用
app_page寻呼。很有用
app_parkandannounce自动播报保持的电话。可以用
app_playback播放音频文件,不接受输入。很有用
app_playtones播放按键音。很有用
app_privacy如果没有收到CallerID,就要求输入用户号码。不重要
app_queue提供自动呼叫分配。很有用
app_read要求用户输入,并把输入存入变量。很有用
app_readexten要求用户输入,并把当前呼叫转移到指定分机和上下文。可以用
app_readfile把文件内容存入一个信道变量。(已废弃,见func_env中的FILE())已废弃
app_record把收到的音频存入文件。很有用
app_rpt使用声卡。(TODO:什么是rpt项目,不懂。)有局限
app_sayunixtime已指定的格式播放时间。很有用
app_senddtmf向呼叫者传输DTMF音频。很有用
app_sendtext向兼容的信道发送文本。不重要
app_setcallerid在信道上设置CallerID。(已废弃,见func_callerid)已废弃
app_skel开发者的示例应用程序。很有用
app_sms在支持的地区发送SMS消息。有局限
app_softhangup请求关闭信道。很有用
app_speech_utils语音识别。很有用
app_stack提供GoSub()等堆栈相关的操作。很重要
app_system执行操作系统命令。很有用
app_talkdetect类似于app_background,但允许收到音频后中断播放。很有用
app_testC/S测试应用程序。可以用
app_transfer在当前信道上执行转移。很有用
app_url向被呼叫信道传递URI。有局限
app_userevent在AMI中产生一个定制事件。很有用
app_verbose在CLI中产生一个定制时间。很有用
app_voicemail提供语音信箱功能。很重要
app_waitforring(TODO:不明白)不重要
app_waitforsilence包括WaitForSilent()和WaitForNoise();监听入局信道,有超时限制。很有用
app_waituntil等待一个指定的Linux时间(从1970第一秒开始的计数值)到来。很有用
app_while包括While(),EndWhile()等,用于循环。很有用
app_zapateller播放特殊音调,以阻止电话推销者。可以用

桥接模块

桥接模块是Asterisk 1.8的新功能;他们以新的方式执行信道之间的桥接。他们每一个都提供不同的特性,用于不同的桥接需求。这些模块只用于app_confbridge。

名称用途评价
bridge_builtin_features当使用内置用户特性(在features.conf中定义)时,执行桥接。不好说
bridge_multiplexed执行复杂的多路转发,用于大型会议室。不好说
bridge_simple执行简单的“信道-到-信道”桥接。不好说
bridge_softmix执行简单的多路转发,用于大型会议室。(TODO:不明白和bridge_multiplexed的区别)不好说

电话详单记录模块

CDR模块是为了让各种形式的话单记录更方便。你可以把CDR存入文件、数据库、RADIUS、或syslog。

注:CDR不是为了计费而设计的。计费功能应该使用CEL。

名称用途评价
cdr_adaptive_odbc通过ODBC写CDR,允许添加自定义字段。很有用
cdr_csv把CDR写入CSV文件。可以用
cdr_custom和cdr_csv一样,但允许添加自定义字段。很有用
cdr_manager把CDR输出到AMI接口。很有用
cdr_odbc通过ODBC写CDR。可以用
cdr_pgsql把CDR写到PostgreSQL。很有用
cdr_radius把CDR写到RADIUS。可以用
cdr_sqlite把CDR写到sqlite2数据库。(已废弃,见cdr_sqlite3_custom)已废弃
cdr_sqlite3_custom把CDR写到sqlite3数据库,允许添加自定义字段。很有用
cdr_syslog把CDR写到syslog。很有用
cdr_tds把CDR写到Microsoft SQL或Sybase数据库,需要老版tds。可以用

Web接口中会有一些和CDR相关的报告功能。

信道事件日志模块

信道事件日志可以完整记录所有的呼叫活动。这也意味着你需要更小心地规划拟拨号计划,毕竟它不可能自动开始工作。Asterisk的CEL模块如下:

名称用途评价
cel_custom写到磁盘文件。很有用
cel_manager写到AMI。很有用
cel_odbc写到ODBC。很有用
cel_pgsql写到PostgreSQL。很有用
cel_radius写到RADIUS。可以用
cel_sqlite3_custom写到sqlite3。很有用
cel_tds写到Microsoft SQL或Sybase,需要老版tds。可以用

信道驱动

没有信道驱动,Asterisk就不可能建立呼叫。每种协议或信道类型都有自己特定的信道驱动。信道模块可以看做是通往Asterisk内核的网管。Asterisk的信道驱动如下:

名称用途评价
chan_agent为Queue()提供坐席信道。很有用
chan_alsa提供到高级Linux声音架构(ALSA)的连接。很有用
chan_bridge仅供ConfBridge()内部使用。很重要
chan_console提供到portaudio的连接。不好说
chan_dahdi提供到DAHDI接口卡的连接。很有用
chan_gtalk提供到Google Talk的连接。可以用
chan_h323提供H.323连接。(已废弃,见chan_ooh323)已废弃
chan_iax2提供IAX2连接。很有用
chan_jingle提供jingle连接。可以用
chan_local把一部分拨号计划当成信道。很有用
chan_mgcp提供媒体网管控制协议(MGCP)连接。可以用
chan_misdn连接到支持mISDN的ISDN卡。有局限
chan_multicast_rtp连接到RTP多播流。很有用
chan_nbs网络广播声音(NBS)连接。不重要
chan_oss开放声音系统驱动。很有用
chan_phoneLInux电话接口驱动,相当老。不重要
chan_sip回话启动协议。很重要
chan_skinny思科瘦客户端控制协议(SCCP)。可以用
chan_unistim北电Unistim协议。可以用
chan_usbradioCM108 USB无线电接口卡。可以用
chan_vpbVoicetronix信道。不重要

编码解码器

编码解码器允许Asterisk转换不同呼叫之间的音频格式。如果一个呼叫来自PRI电路(使用G.711编码),需要连接到一个SIP压缩信道(使用G.729,SIP支持的编码之一),那么相应的编码解码器就会执行所需的转换。

注:如果编码解码需要复杂的算法,大量的转码工作会对CPU造成负担。有些像Sangoma和Digium厂商的卡会提供硬件解码编码。

名称用途评价
codec_adpcm自适应差分脉码调制解调不重要
codec_alaw全世界PSTN(除了美国、加拿大)采用脉冲编码调制的A-law算法。很重要
codec_a_muA-law到Mu-law的转换。很有用
codec_dahdi使用Digium硬件解码。(需要Digium转码卡)很重要
codec_g722宽频带音频编码解码。很有用
codec_g726(TODO:不懂,大概类似于codec_adpcm)不重要
codec_gsm全球移动通讯系统。很有用
codec_ilbc因特网低比特率编码解码。不重要
codec_lpc10线性预测编码生硬合成器。不重要
codec_resample8-bit和16-bit间带符号线性采样。可以用
codec_speexspeex编码。可以用
codec_ulaw用于美国、加拿大的 脉冲编码调制的Mu-law算法。很重要

格式解释器

格式解释器调用编码解码器的功能,但他们操作文件而不是信道。如果你录制了一段GSM音频,要播放到其他非GSM信道,就需要一个格式解释器。

如果你录制成了多种格式(GSM,WAV),当某个信道需要该音频时,Asterisk会选择一个转换代价最小的格式。

名称用途评价
format_g723G.723 .g723不重要
format_g726G.726 .g726不重要
format_g729G.729 .g729很有用
format_gsmRPE-LTP (original GSM codec) .gsm可以用
format_h263H.263—video .h263可以用
format_h264H.264—video .h264可以用
format_ilbcInternet Low Bitrate Codec .ilbc不重要
format_jpegGraphic file .jpeg .jpg不重要
format_ogg_vorbisOgg container .ogg可以用
format_pcmVarious Pulse-Coded Modulation formats: .alaw, .al, .alw, .pcm, .ulaw, .ul, .mu, .ulw, .g722, .au很有用
format_siren14G.722.1 Annex C (14 kHz) .siren14不好说
format_siren7G.722.1 (7 kHz) .siren7不好说
format_sln1616-bit signed linear .sln16不好说
format_sln8-bit signed linear .sln .raw很有用
format_vox.vox不重要
format_wav.wav很有用
format_wav_gsmGSM audio in a WAV container .WAV, .wav49可以用

拨号计划函数

拨号计划函数是对拨号计划应用程序的补充,提供了一些有用的增强功能,比如字符串处理、日期时间转换、ODBC连接性等。

名称用途评价
func_aes加密、解密AES字符串。很有用
func_audiohookinherit允许呼叫转移后仍被录音。很有用
func_base64编码、解码base-64字符串。可以用
func_blacklist读、写astdb中的黑名单。很有用
func_callcompletion存取信道的呼叫完成配置参数。不好说
func_callerid存取CallerID。很有用
func_cdr存取CDR变量。很有用
func_channel存取信道信息很有用
func_config包括AST_CONFIG();从配置文件读取变量。可以用
func_connectedline改变已连接的信道信息(需要电话的支持)。不好说
func_curl使用curl访问URL。很有用
func_cut对字符串切片或者切块。很有用
func_db提供astdb函数。很有用
func_devstate获得设备状态。很有用
func_dialgroup创建一个同时拨号组。很有用
func_dialplan验证指定的拨号计划目标是否存在。很有用
func_enum执行ENUM查找。很有用
func_env包括FILE(),STAT(),ENV()。执行操作系统动作。很有用
func_extstate返回指定的分机状态。很有用
func_global存取全局变量。很有用
func_groupcount存取一个组的信道数。很有用
func_iconv字符编码转换。可以用
func_lock包括LOCK(),UNLOCK(),TRYLOCK();用于拨号计划中的竞争控制。很有用
func_logic逻辑判断函数,包括ISNULL(),SET(),EXISTS(),IF(),IFTIME(),IMPORT()很有用
func_math数学函数,包括MATH(),INC(),DEC()很有用
func_md5生成MD5指纹。很有用
func_module检测模块是否已经装载。可以用
func_odbc访问ODBC。很有用
func_pitchshift修改音频流的音调。很有用
func_rand生成一个随机数。很有用
func_realtime在Asterisk实时架构中执行查找。很有用
func_redirecting获取本次呼叫的转发信息。很有用
func_sha1生成SHA1指纹。很有用
func_shell执行shell命令,并返回结果。很有用
func_speex执行声音调优。很有用
func_sprintf字符串格式化。很有用
func_srv执行SRV查找。很有用
func_strings字符串处理函数。很有用
func_sysinfo获取系统信息,例如内存,交换空间和CPU负荷等。很有用
func_timeout存取信道的超时时间。很有用
func_uri把字符串做URI安全编码。很有用
func_version获取Asterisk版本信息。可以用
func_vmcount获取语音信箱的消息数。很有用
func_volume设置信道音量。很有用

PBX模块

PBX模块提供增强的控制和配置机制。

名称用途评价
pbx_ael提供AEL支持。(很少有人用,如果不想用传统的拨号计划配置文件的话,大多数人会选择AMI+AGI)可以用
pbx_config用于解释extensions.conf,最传统、用得最多的拨号计划语言。很有用
pbx_dundi执行远程Asterisk数据查找。很有用
pbx_loopback类似于拨号计划的include,有点过时。不重要
pbx_lua支持使用lua编写拨号计划。很有用
pbx_realtime提供Asterisk实时架构相关的功能。很有用
pbx_spool和Asterisk外呼文件有关,提供外呼连接池。很有用

资源模块

资源模块用于集成外部资源。例如res_odbc用于访问ODBC数据库连接。

名称用途评价
res_adsi提供ADSI。(尽管大多数ADSI功能Asterisk是不用的,但语音信箱用到这个资源)很重要
res_ael_share为pbx_ael提供共享程序。(如果你使用AEL的话,这个模块就很重要。)很重要
res_agi提供Asterisk网管接口。很有用
res_ais使用注入OpenAIS一类的AIS实现, 提供分布式消息等待指示和设备状态通知。很有用
res_calendar提供日历系统的集成。很有用
res_calendar_caldav提供CalDAV特定的能力。很有用
res_calendar_exchange提供微软Exchange的特定能力。很有用
res_calendar_icalendar提供苹果/谷歌的iCalendar特定能力。很有用
res_clialiases创建CLI别名。很有用
res_clioriginate从CLI发起一次呼叫。可以用
res_config_curl使用curl拉取配置信息。很有用
res_config_ldap从LDAP拉取配置信息。可以用
res_config_odbc从ODBC拉取配置信息。很有用
res_config_pgsql从PostgreSQL拉取配置信息。可以用
res_config_sqlite从SQLite拉取配置信息。可以用
res_convert使用CLI执行文件编码转换。可以用
res_crypto提供加密功能。很有用
res_curl为其他curl模块提供公共服务。很有用
res_fax为其他fax模块提供公共服务。很有用
res_fax_spandsp为使用spandsp的传真功能提供插件。很有用
res_http_post为Asterisk的HTTP服务器提供POST上传功能。可以用
res_jabber提供Jabber/XMPP资源。很有用
res_limit允许调整Asterisk进程的系统限制。可以用
res_monitor提供呼叫录音资源。很有用
res_musiconhold提供等待音乐(MOH)功能。很重要
res_mutestream提供音频流的禁音和放音功能。不好说
res_odbc为其他ODBC模块提供公共功能。很有用
res_phoneprov(TODO:提供来自Asterisk HTTP 服务器的电话?不懂。)不好说
res_pktccops提供PacketCable COPS资源。不好说
res_realtime为Asterisk实时架构(ARA)提供CLI命令。很有用
res_rtp_asterisk提供RTP。很重要
res_rtp_multicast提供多播RTP。不好说
res_security_log启用安全日志。不好说
res_smdi通过SMDI协议提供语音信箱通知。有局限
res_snmp向SNMP管理的网络提供系统状态信息。可以用
res_speech通用语音识别API。有局限
res_timing_dahdi通过DAHDI内核接口提供时钟。很有用
res_timing_kqueue通过某些操作系统的特性提供时钟。不好说
res_timing_pthread使用标准pthread API提供时钟;不是很有效率,但移植性好。很有用
res_timing_timerfd通过新版Linux内核的timerfd API提供时钟。很有用

附加模块

附加模块是社区开发的模块,用法和版权条款都和Asterisk的主代码不一样。它们位于不同的目录,缺省是不会编译和安装的。要启用这些模块就要使用menuselect构建配置工具。

名称用途评价
app_mysql在拨号计划中执行MySQL查询。(已废弃,见func_odbc)已废弃
app_saycountpl用波兰语播报计数。(已废弃,已经集成到say.conf中)已废弃
cdr_mysql在MySQL中记录CDR。(我们推荐cdr_adaptive_odbc)可以用
chan_mobile允许手机通过蓝牙接听或拨打电话。有局限
chan_ooh323支持H.323协议。可以用
format_mp3支持播放MP3文件。可以用
res_config_mysql使用MySQL数据库作为实时配置后端。很有用

测试模块

测试模块被Asterisk开发团队用来验证新代码。它们会被频繁地添加或修改,对你没什么用,除非你要开发Asterisk。

如果你是Asterisk开发者,你也许会对Asterisk测试套件有兴趣,你可以执行自动测试并将结果反馈给Asteisk项目。通过不断地添加测试用例,Asterisk可以防止代码腐烂。通过添加你自己的测试用例,升级的时候会更有把握些。

更多信息可以参考:


文件结构

Asterisk是一个复杂的系统,由很多资源组成。这些资源以不同的方式使用文件系统。既然Linux在这一点上很灵活,那就很有必要搞清楚什么数据存在什么地方(比如语音信箱文件、日志文件等)。

配置文件

Asterisk配置文件包括extensions.conf,sip.conf,modules.conf,以及各种信道、资源、模块和函数用到的参数定义文件。这些文件一般位于/etc/asterisk,在做Asterisk的配置和管理工作时你经常会进到这个目录。

模块

Asterisk的模块一般会安装到/usr/lib/asterisk/modules目录。你一般不用关心这个目录;但你知道模块在什么地方有时候也很有用。例如,如果你升级Asterisk,并且用menuselect构建配置工具选择了不同的模块,老的(不兼容)模块又没有删除,安装脚本会提示警告信息。 应该从modules目录中删除 这些老的模块文件 。要么手工删除,要么调用make uninstall。

资源库

有些模块是需要外部数据源的。例如,等待音乐(MOH)就需要音乐文件才能播放。系统的语音提示也需要存储到硬盘的某个地方。/var/lib/asterisk就是存放系统语音提示、AGI脚本、等待音乐(MOH)和其他资源文件的地方。

spool

spool是Linux操作系统的一种任务缓冲和资源共享机制。例如,Linux的打印任务和待发邮件都是先写到spool然后在处理的。对Asterisk来说,spool用来存储临时性数据,诸如语音消息,呼叫录音,呼叫文件等。Asterisk的spool文件位于/var/spool/asterisk目录。

日志

Asterisk能够产生几种不同的日志文件。/var/log/asterisk是存放CDR,CEL,调试(debug)日志,队列日志,消息,错误和其他输出的地方。这个目录对调试、排错至关重要。

拨号计划

拨号计划是Asterisk的核心。所有接入Asterisk的信道都要经过拨号计划。拨号计划包含呼叫流脚本,处理所有呼叫。

有三种方式可以编写拨号计划:

使用传统的拨号计划语法:/etc/asterisk/extensions.conf

使用Asterisk扩展逻辑(AEL)语言:/etc/asterisk/extensions.ael

使用LUA脚本语言:/etc/asterisk/extensions.lua

本书后面会有几章专门介绍拨号计划语法(这也是用得最多的方式)。一旦你学会了这种语法,你可以考虑选择转向AEL或者LUA,看你自己。

硬件

Asterisk可以和各种技术通讯。一般来说,这种通讯是基于某种网络连接的;当然,和传统的电信网络通讯(像PSTN)是需要特殊硬件的。

很多公司生产这种硬件,比如Digium(Asterisk的赞助商、所有人和主要开发者), Sangoma, Rhino, OpenVox,Pika,Voicetronix,Junghanns,Dialogic,Xorcom,beroNet,还有很多其他的。我们推荐Digium和Sangoma,当然其他厂商的产品可能更适合你的需求。

大多数硬件都是针对Digium Asteirsk硬件设备接口(DAHDI)设计的。这些硬件会有不同的安装要求和文件位置。

在“第七章 外部连接性”中,我们会更详细地讨论DAHDI;当然,我们也会仅限于DAHDI的讨论。你在安装硬件的时候应该参考厂商的文档。


Asterisk版本

Asterisk的发布方案在过去几年中已经经历了几个来回了,本节的目的是为了帮助你理解版本号的含义。需要注意的是1.6.x系列的版本策略的变化,它跟所有其他的Asterisk版本都不一样(从1.0到1.8,包括可以预见的未来)

以前的版本方案

当我们只有Asterisk 1.2和Asterisk 1.4的时候,所有的开发工作都在主线上进行,1.2分支和1.4分支上只进行缺陷修复。Asterisk 1.2已经被标记为EOF(End of Life),不会再进行任何缺陷修复和安全更新。在1.6.x之前,所有的缺陷修复只会在1.4上进行。

由于所有的开发工作都在主线上进行,除非创建1.6分支,否则人们不可能得到新特性和新功能。也不是完全不可能,主要是由于主线上可能发生任何变化,要在生产环境上部署主线的话就要求管理员非常精通Asterisk(C源代码级的精通)。

为了减轻管理员的压力,也为了用户尽快用上新特性(等几个月而不是等几年),一个新的版本方案建立了。1.6分支实际上变成了一个系列1.6.0,1.6.1,1.6.2,等等……,每添加一个新特性就升一个小版本号。目标是每3、4个月就能得到一个新版本,为管理员提供一个更短更清晰的升级路线。如果你需要新特性的话,只需要等上几个月就可以了。

这些分支的标签看起来就会像这样: 1.6.0.1 -- 1.6.0.2 -- 1.6.0.3 -- 1.6.0.4 -- etc. 1.6.1.1 -- 1.6.1.2 -- 1.6.1.3 -- 1.6.1.4 -- etc. 1.6.2.1 -- 1.6.2.2 -- 1.6.2.3 -- 1.6.2.4 -- etc.

图示如下:

Asterisk ver

所以到目前为止,我们有了这样一些分支:1.2,1.4,1.6.0,1.6.1,1.6.2(没有分支1.6)。在这些分支中,我们又创建标签,比如1.2.14,1.4.30,1.6.0.12,和1.6.2.15。

很不幸,并不是像我们想的那样每3、4个月就出一个小版本:至少也要6-8个月。不仅如此,1.6.x这种版本方案也有自己的问题。人们很困惑,不知道应该运行那个版本。(TODO)

现在的版本方案

开发团队从1.6.x系列中吸取了教训。出发点是好的,但实施起来完全不是那么回事。所以,1.8的版本方案又变回去了,和1.2、1.4一样。

虽然开发团队仍然想尽快提供新特性使用(目前的目标定在一年一次),并且认识到对一个稳定的版本提供长期支持也很重要。你可以认为1.4是一个长期支持版本(LTS),1.6.x系列可以看作是1.4的一部分。然后1.8是下一个长期支持版本(包括四年的缺陷修复和五年的安全更新)。

(TODO)


结束语

Asterisk由很多技术构成,其中很多自身就很复杂。所以,理解Asterisk的架构是很重要的。当然,Asterisk的设计还是很优秀的,在我们看来,它很好地平衡了复杂度和灵活性。

asterisk入门学习资料集合(全手写) 总共合集分为两个文件夹和四个word文档(资料全部手写完成) 四个文档介绍: 1、从centos系统安装到asterisk安装,配置账号并通话,有详细的图文讲解 2、asterisk安装之后的简单启动,简单命令 3、对asterisk增加g729和g723编码 4、对语音板卡的安装,配合asterisk进行使用。板卡安装,配置,也有图文详解。 两个文件夹: 1、asterisk有关的几个安装包。相关的全部安装包。下载安装即可用 2、g729和g723解码器 立即下载

相关推荐

Asterisk 简介 Asterisk 架构 Asterisk程序框图

Asterisk 简介 Asterisk 架构 Asterisk程序框图

Asterisk 权威指南

维基教科书维基教科书

AntizZ 的博客 1208

Asterisk权威指南中文

Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 Asterisk权威指南(第3版)第07章外线连接 Asterisk权威指南(第3版)第08章语音邮件 Asterisk权威指南(第3版)第10章深入Dialplan Asterisk权威指南(第3版)第11章Parking&Paging Asterisk权威指南(第3版)第13章自动呼叫分配(ACD) Asterisk权威指南(第3版)第14章设备状态

Asterisk权威指南中文第3版资源下载介绍:全面掌握Asterisk技术的不二选择

Asterisk权威指南中文第3版资源下载介绍:全面掌握Asterisk技术的不二选择 去发现同类优质开源项目:https://gitcode.com/ Asterisk权威指南中文第3版资源下载,助力您深入了解并应用Asterisk技术,快速构建强大的通信系统。 项目介绍 Asterisk权威指南中文(第3版)资源下载项目,为您提供了一份全面的Asterisk技术学习资料。该书详细介绍了Aste...

gitblog_06744的博客 594

Asterisk权威指南 第3版 中文.zip

Asterisk 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的x86机 器变成你自己的交换机,还能够当作一台企业级的商用交换机

asterisk权威指南中文翻译

对不善于英语的新手来说,非常有用处。但是还是建议看原文档,在一定基础之后看会非常快。

Asterisk权威指南中文(第3版)资源下载介绍

Asterisk权威指南中文(第3版)资源下载介绍 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到Asterisk权威指南中文(第3版)资源下载页面!这里为您提供了Asterisk权威指南中文(第3版)的部分章节,方便您更好地了解和使用Asterisk技术。 以下是本资源文件包含的章节内容: 第15章 自动话务员 第02章 Asterisk体系结构 第05章 用户设备...

gitblog_06711的博客 416

asterisk中英文教程

asterisk中英文教材,包括原英文文档asterisk.pdf和部分翻译中文版,翻译版如下:第02章Asterisk体系结构 第05章用户设备配置 第06章Dialplan基础 第07章外线连接 第08章语音邮件 第10章深入Dialplan 第11章Parking&Paging 第13章自动呼叫分配(ACD)第14章设备状态 第15章自动话务员

Asterisk权威指南/第三章 安装Asterisk

在这一章我们将详细介绍如何从源代码安装Asterisk。很多人回避这种方法,说它太难了,又耗时间。我们在这里想证明的是从源代码安装Asterisk其实没那么难。更重要的是,我们想为你提供一个最好的Asterisk安装,以便学习。 在本书中,我们将帮助你从空白开始构建起一个功能健全的Asterisk。在本章你将为你的Asterisk系统搭建一个基础平台。从源代码安装有很多种方法,这里将向你介绍的方

学习是为了探索这个世界的本质 4053

图解基站机房:AAU、RRU与BBU之间的线缆连接与规格选择

本文以图解方式详解了5G基站机房中AAU、RRU与BBU三大核心设备之间的线缆连接方案与规格选择。重点阐述了电力线(如2×10 mm²直流电缆)、数据光缆(如野战光缆与波分复用)及射频馈线的功能、选型标准与实战布线法则,为通信工程部署与维护提供清晰指导。

weixin_29306011的博客 506

使用kmplot在线进行生存分析

欢迎关注”生信修炼手册”!kmplot是一个生存分析的在线工具,最初是设计用来对肝癌中的miRNA进行生存分析,对应的文章发表在scientific reports上,链接如下https...

庐州月光的博客 1万+

Asterisk权威指南/第一章 一场电话革命

当我们开始着手写一本Asterisk书的时候(大概五年前),我们确信Asterisk将会从根本上改变通讯行业。今天,我们预言的这场革命几乎就要完成了。Asterisk现在是世界上最成功的PBX,并且是通讯行业的公认技术(尽管并不总是受欢迎)。 不幸的是,在过去五年中,通讯行业仍然没有找到正确的方向。我们通讯的方式已经变了。尽管20年前打电话是远距离通讯的首选方式,但目前的趋势是文本消息(emai

学习是为了探索这个世界的本质 3009

AI测试干货:让大语言模型稳定输出 JSON 的四种实现方案

用大语言模型做测试用例生成、数据提取时,最头疼的就是让它老老实实返回 JSON。你以为它会给你 `{"name":"张三"}`,结果它来一句"好的,这是生成结果:```json...",或者干脆在 JSON 里加注释,直接把你的 `json.loads()` 干崩溃。 模型本质上是个话痨,天生爱解释。但我们要的是结构化数据,不是聊天记录。我整理了四种实战方案,从最简单的提示词技巧到工程化框架,覆盖了从快速验证到生产环境的各种场景。

blues_C的博客 958

Asterisk权威指南/第六章 拨号计划基础

拨号计划是你的Asterisk系统的心脏。它定义了呼叫是如何流进和流出系统的。拨号计划用一种脚本语言写成的,Asterisk依照其中的指令响应外部触发。和传统电话系统相比,Asterisk的拨号计划是完全可定制的。 本章介绍Asterisk的基本概念。这里讲的内容对你理解拨号计划代码至关重要,同时也是你写任何拨号计划的基础。示例的设计是有前后承接关系的,我们建议你不要逃过本章的太多内容,因为本章

学习是为了探索这个世界的本质 3304

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2261

STM32 IIC电量计LTC2944

LTC2944是一款电池电量计,设计用于端电压为3.6V至60V的多节电池。它测量电池充电和放电、电池电压、电流和自身温度。精密模拟库仑计数器通过电池正极端子与负载或充电器之间的检测电阻器对电流进行积分。电池电压、电池电流和硅温度由内部ADC测量。

baidu_34971492的博客 3165

Asterisk权威指南/第五章 用户设备配置

本章我们将研究连接到Asterisk的用户设备,一般来说是某种形式的VoIP电话。在Asterisk中配置信道供设备使用相对来说比较简单,但你也需要配置设备本身以使得它知道向谁发起呼叫(这已经跟Asterisk没有关系了,每个硬件厂商都有自己的工具让你配置设备的)。换句话说,配置一个设备分为两个部分:1)告诉Asterisk关于设备的事情,2)告诉设备关于Asterisk的事情。 注:Aster

学习是为了探索这个世界的本质 3020

轨迹优化 | 图解欧氏距离场与梯度场算法(附ROS C++/Python实现)

距离场在运动规划中则常用于地图建模和轨迹梯度优化。本文图解欧氏距离场EDT的算法原理,并基于双线性插值给出欧氏梯度场的公式推导,并给出ROS C++和Python的算法实现加深理解

FRIGIDWINTER的博客 4649

asterisk——dialplan函数

用于将呼叫转到dialplan的另一个地方。Goto()需要将目的、、

qq_45964785的博客 639

第二大脑的觉醒:一个寄生在代码里的小生命,如何悄无声息地接管我的工作流

所有记忆都存在本地。

步子哥的博客 1064

YOLOv13:目标检测的全面攻略与实战指南

本文是关于 YOLOv13 的全攻略文章。先回顾 YOLO 系列发展,点明 YOLOv13 在该系列中的创新地位,阐述其基于 HyperACE、FullPAD 和轻量级卷积替换等技术的独特优势。深入剖析各核心技术原理,通过与其他版本及实际场景对比展现其性能优势。介绍项目结构与使用方式,分享数据增强、锚框优化等实用技巧,并列举安防监控、自动驾驶等领域应用案例。最后总结 YOLOv13 价值,展望目标检测技术未来发展趋势,为读者提供全面的 YOLOv13 学习与实践指导。

邓邓子的博客 3435

新版:Asterisk:The Future of Telephony

今天偶然发现了Asterisk:The Future of Telephony的第二版,与第一版相比较,内容更加丰富翔实,特别是增加了Asterisk架构与关键模块的具体实现,比如:AGI,AMI与它的GUI Framework等等,是开源PBX圣经,可以从下面的链接下载电子版:http://astbook.asteriskdocs.org/

509

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Asterisk中meetme会议功能报错

报错: Connected to Asterisk 16.5.0 currently running on cloudflpc (pid = 32733) == Using SIP RTP CoS mark 5 -- Executing [9999@public:1] Answer("SIP/1001-00000000", "") in new stack [Aug 26 16:5...

行到水穷处,坐看云起时 939

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

asterisk——分支条件

带条件判断的Goto,通过计算表达式的值,并根据结果的真假将呼叫这发送到一个特定的目的地。NoOp() 不进行操作,可将数值打印到控制台进行调试。

qq_45964785的博客 521

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

x-lite asterisk 成功实现视频通话

首先,在此感谢asterisk协会的各位大牛们,没有他们的帮助,我也不可能在这么短的时间内实现,x-lite+asterisk音视频通话。在此将实现的过程记录如下,分享给asterisk的爱好者们。        1. 修改asterisk服务器的sip.conf文件,在[general]里加上"videosupport=yes"。在            每一个通道配置里加上"allow=h

学习是为了探索这个世界的本质 8314
上一篇: lua luasql
下一篇: C# String 前面不足位数补零的方法
sql2zy
博客等级 码龄19年 37粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值