Modules
Asterisk 是基于模块构建的。一个模块提供某个特定的功能,它是动态的被装载。比如:信道驱动(chan_sip.so),或可以连接第三方产品模块(func_odbc.so)。asterisk的模块加载依赖于配置文件/etc/asterisk/modules.conf文件。在本书中我们将讨论各种模块,在这这一小节,我们了解一下模块的概念,然后给一个模块可用性的印象。
实际上,在启动asterisk时,不需要加载任何的模块,虽然在这个模式下asterisk不能做任何东西。对于理解asterisk模块的概念本质和架构是非常有用的。
asterisk包含的模块种类如下:
Applications
Briage modules
Call detailrecording
Channel eventlogging
Channel drivers
Codec translators
Formatinterpreters
Dialplan functions
PBX modules
Resource modules
Addonsmoudules
Test Modules
下面的小节,我们将列举一下分类内部的模块的可用性,简单介绍一下它的目的和在其受欢迎程度和重要性方面,给出我们的观点。(有些模块已经被证明非常受欢迎,有一些模块比较老了,勉强能用,或者仅仅是为了兼容以前的版本才去维护它)模块详细工作的细节将会包含在本书中的各个章节。有一些模块覆盖全书,有一些模块出现在独立的章节,有些可能根本不会涉及到,这依赖于这是那个模块和她用来做什么的。
要重视下表中的Popularity/Status的一列,这一列包含了我们对模块的观点。
不重要的
这个模块是古老的。如果你使用它,要注意大部分的要靠你自己,不要指望来自社区的任何支持。
不可靠的
这个模块是新的或很少使用,不适合作为产品发布
很有用
这个模块是当前的,维护的,受欢迎的,推荐使用。
可以用
这个模块能够工作,但可能不完善或不受欢迎或者不被作者推荐使用。
新的
这个是新的,它的完善程度和受欢迎度还无法估计。
不赞成使用
这个模块已经被其他更高级的模块取代了。
受限制的
这个模块有局限性,可能不会满足你的需求
很有用
这个模块是你必须选择的。
现在让我们理解看一下这些模块,他们按照模块类型分组的。
Applications
拨号方案的applications在extension.conf中使用,主要是定义一些作用于call的动作,比如:Dial()applications主要负责呼出连接到外部资源,他是非常重要的dialplan
application.下面的表2-1 available applications被列举在表2-1。
Table 2-1Dialplan applications
名称 | 目的 | 受欢迎度/状态 |
app_adsiprog | 装载模拟显示服务接口脚本 | 不重要 |
app_alarmreceiver | 支持接收报警设备的报告 | 不重要 |
app_amd | 检测应答机 | 不可靠 |
app_authenticate | 比较dtmf同提供的字符串 | 有用 |
app_cdr | 写cdr记录 | 有用 |
app_celgenuserevent | 为CEL生成用户自定义事件 | 新的 |
app_chanisavail | 检测通道的状态 | 不可靠 |
app_channelredirect | 使一个信道进入dialplan中其他部分 | 有用 |
app_chanspy | 允许一个通道监听另外一个通道的语音 | 有用 |
app_confbriage | 会议功能 | 新的,功能还不完善 |
app_controlplayback | 控制播放 | 有用 |
app_dahdibarge | 允许插入DAHDI | 不赞成使用,用 chanspy代替 |
app_dahdiras | 在DAHDI信道上建立RAS服务 | 不重要 |
app_db | 用于操作asterisk 内置的数据库 | 不赞成使用,用func_db代替 |
app_dial | 用于连接信道(比如:打电话) | 非常重要 |
app_dictate | 播放录音提供启动和停止功能 | 有用 |
app_directed_pickup | 替别人应答 | 有用 |
app_directory | voicemail的名称列表 | 有用 |
app_disa | 提供dialtone并且接收DTMF的输入 | 有用 |
app_dumpchan | 在asterisk控制台输出信道变量 | 有用 |
app_echo | 回放从信道中接收到语音 | 有用 |
app_exec | 基于某种条件执行applications。 Exec\TryExec\ExecIf | 有用 |
app_externalivr | 类似于asterisk控制AGI,是异步的 | 有用 |
app_fax | 提供发送传真和接收传真 | 有用 |
app_festival | TTS festival 引擎 | 可以用 |
app_flash | 在信道上执行插簧动作 | 有用 |
app_followme | 基于follow.conf执行find me/followme的功能 | 有用 |
app_forkcdr | 在当前通道启动新的CDR记录 | 不可用 |
app_getcpeid | 获取ADSI CPE ID | 不重要 |
app_ices | 发送音频到ice cast | 不可用 |
app_image | 发送图像对支持的设备 | 受限制 |
app_ivrdemo | 对开发者的一些sample | 不重要 |
app_jack | 使用JACK工具在兼容的app包共享音频 | 有用 |
app_macro | 触发拨号方案宏 | 已经废弃 |
app_meetme | 提供多方会议 | 有用,完全支持 |
app_milliwatt | 生成1004HZ的音频,测试模拟回路 | 有用 |
app_minivm | 提供原始功能,可以帮助构建自己的voicemail的应用 | 可以用 |
app_mixmonitor | 录音双向语音并且将其混音 | 有用 |
app_morsecode | 生成莫斯电码 | 可以用 |
app_mp3 | 使用mpg123播放 mp3 | 不重要 |
app_nbscat | 获取NBS流 | 不重要 |
app_orignate | 允许发起一次呼叫 | 有用 |
app_osplookup | 执行OSP 查询 | 可以用 |
app_page | 将多路音频连接到指定的设备 | 有用 |
app_parkandannounce | 对于暂停的calls | 可以用 |
app_playback | 在指定的通道上,播放文件 | 有用 |
app_playtones | 以指定的频率播报按键音 | 有用 |
app_privacy | 如果Caller没有被收到,获取主叫的号码 | 不重要 |
app_queue | 提供ACD功能 | 有用 |
app_read | 获取主叫输入的数字,并将其赋值给变量 | 有用 |
app_readexten | 获取主叫输入的数字,并将call转给指定的context | 可以用 |
app_readfile | 将文本内容赋值给信道变量 | 已废弃,参考func_env |
app_record | 录音 | 有用 |
app_rpt | 为rpt工程提供了同声卡的接口 | 有局限 |
app_sayunixtime | 以指定的格式播报时间 | 有用 |
app_senddtmf | 传递dtmf到主叫方 | 有用 |
app_sendtext | 发送文本串到兼容信道 | 有用 |
app_setcallerid | 设置信道的主叫 | 废弃,参考func_callerid |
app_skel | 开发者的sample | 有用 |
app_sms | 发送 sms | 有局限性 |
app_softhangup | 请求挂断信道 | 有用 |
app_speech_utils | 提供语音识别功能 | 有用 |
app_stack | 提供Gosub,GosubIf,Return,Pop等堆栈相关的操作。 | 很有用 |
app_system | 执行Linux shell | 有用 |
app_talkdectect | 类似于app_background,但是允许再收到语音时打断回放 | 有用 |
app_test | C/S 测试app | 可用 |
app_transfer | 在当前导通道上执行转接 | 有用 |
app_url | 传递url到被叫信道 | 有用 |
app_userevent | 生成客户事件(AMI) | 有用 |
app_verbose | 在CLI生成自定义事件 | 有用 |
app_voicemail | 提供语音信箱功能 | 有用 |
app_waitforring | 等待振铃信号事件(不要和RINGING搞混了),可能是没有必要的,因为只有dadhdi的模拟通道才会有ringing接收到(FXO口),才生成RINGING信号事件 | 不重要 |
app_waitforsilence | 包括WaitforSilence和waitfornoise,在指定听多少毫秒静音或杂音后,监听输入信道 | 有用 |
app_waituntil | 等待指定的linux时间的到达 | 有用 |
app_while | 包括 While,Enwhile,ExitWhile,ContinueWhile,在播放方案中,提供while-loop功能 | 有用 |
app_zapateller | 生成SIT音为防止电信推销 | 不可用 |