asterisk拨号方案的配置.doc_第1页
asterisk拨号方案的配置.doc_第2页
asterisk拨号方案的配置.doc_第3页
asterisk拨号方案的配置.doc_第4页
asterisk拨号方案的配置.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

asterisk拨号方案的配置配置文件 “extensions.conf” 包含了Asterisk的拨号方案(dial plan)。它的所有操作的控制和执行流程的主要方案。它控制呼入和呼出是如何被处理和路由。这里是你配置连接行为的地方。 extensions.conf的内容以“节”的形式组织。它可以静态设置和定义,作为上下文被执行。设置节有general 和 globals 两种形式,由系统管理员完全定义。一种特殊类型的“contexts”是 macros,由用户自定义,命名前缀是“macro-”,这是可重用的模式,如同编程语言里的“过程”。extensions.conf中每一节都由 中的节名开始。这使得extensions.conf具有和windows世界里传统的ini文件非常相似的结构。 Asterisk v1.2中的新东西: 默认情况下,有一个新的选项“autofallthrough”被设置成了“yes”. 这个设置改变了以前的规则使得遇忙,阻塞,挂起的呼叫被立即终止。如果你正在为IVR写一个extension.你必须使用“WaitExten”应用程序。 general extentions.conf文件的顶部,配置几个设置。globals 接着,在globals节中,你可以定义全局变量/常量,以及他们的初始值。 Contexts 和 Extensions 在general和globals之后,extentions.conf文件的剩余部分就是dialplan的定义了。dialplan是由contexts的集合组成的。每个context是由extensions的集合组成。 Extension 模式 当你在context中定义extension时,你不仅使用文字数字,字母,还要匹配extension模式。 Context包括的内容 一个extension context可以嵌套另一个,参考一下下面的范例: Context default: Extension Description 101 Mark Spencer 102 Wil Meadows 0 Operator Context local: Extension Description _9NXXXXXX Local calls include = default Context longdistance: Extension Description _91NXXNXXXXXX Long distance calls include = local 这里我们定义三种 extension第一种content: default 允许拨打三个电话extension: Mark, Wil, and the Operator. 第二种content: local 一个扩展模式:允许拨打7位数字号码(本地呼叫),同时也包括 “default” context,这样也允许用户拨打 Mark,Wil,或者是操作员。 第三种content: longdistance 一种允许拨打长途呼叫的扩展模式。它同时也包括上述的两种模式 (default 和 local) 使用扩展context,你可以谨慎的控制哪些人使用计费服务(内线,市话,长途) 如果一个拨叫号码匹配多个模式,你可以参阅一下“扩展模式的排序” 当Asterisk从一个通道上收到一个呼入连接,Asterisk从context定义中查询通道命令。context根据用户拨打的 extension定义了不同的命令集。例如,如果用户拨打的是“123”,context可以提供提供一套命令集来指导如何去做。如果用户拨“9”, context可以提供另一套命令集来指导做什么,同时context可以提供一套命令集来控制用户拨打的任何以“555”开头的号码。 某些类型的友好连接,比如来自外线的呼入,用户没有拨打extension,在这种情况下,. 比方说,举个例子,你有一个信道“Zap/1”,它连接到你办公室中的一个电话手持设备。假如在Zap信道的的配置文件 (zapata.conf)中,你为Zap信道1定义了context=john.这样当你使用那个手持设备拨打一个号码时,Asterisk在 extension.conf中寻找名为“john”的context,找出它所应该做的(工作)。在extensions.conf中定义一个名为john的context,应该以下面的样子开始: john 每一个context,你需要定义一个或者多个extensions,Asterisk根据不同的号码拨叫用来比较。每个extension,通过命令集列表告诉了Asterisk应该做什么。 Extensions extension 有两种类型: literal 和 pattern literal extension 可以是一个号码,就像123。它也可以包括出现在传统电话中的标准的符号*和#,因此,12#89*是一个有效的extension.某些电话拨号盘有一些特殊的标着 A,B,C 或者 D 的 DTMF键。extension也可以使用这些字母来定义。实际上,extension的名字可以包含任何字母和数字以及某些标点符号。 extension名字是大小写敏感的?是的。有时是大小写敏感的,有时不是。当用户使用他们的VoIP电话拨打名为OFFICE的 extension 时,Asterisk不会执行名为“Office”的extension中定义的命令。另一方面,extension的名字不是大小写敏感的,因此你不能在一个content中定义仅仅是大小写不同的extension.因此你不能为“OFFICE”extension定义一套程序集,同时为officeextension也定义一套程序集。 预定义的Extension名称。Asterisk为特定的目标指定了一些extension名称。i:Invalid s:Start h:Hangup t:Timeout T:AbsoluteTimeout o:Operator 详细信息: Asterisk standard extensions定义Extension不同于传统的PBX,extension是和电话,接口,菜单等联系在一起的。在Asterisk中,一个extension是定义成命令执行列表的。就像Dial和GotoIf命令,具有基于不同的条件转到某个地方的能力。当一个extension被拨叫,标为优先级1的命令被执行,紧接着是2,等等。这将一直持续到:呼叫被挂起。 命令返回代码-1(表示失败) 下一个更高优先级的命令不存在。(注意:Asterisk不会跳过丢失的优先级别) 呼叫被路由到一个新的extension extension.conf 文件中的句法,一个extension执行的每一步是下面这个格式的:exten = extension,priority,Command(parameters)这里等号也可以用一个箭头来修饰,就是“=”,一种在很多例子中经常可以被看到的格式。 好了,假如一个“context”,名为“john”。在每一个context中,你可以定义一个或多个 extension.每一个extension中,你定义一组命令集。你如何定义这些extension和命令?你需要一个文本编辑器来编辑 extensions.conf文件。当然,也可以使用某些不错的工具:GUI tool.extension中的执行步骤和命令行组件是下面的样子:extension 是extension的标签,可以是字符串常量或者是动态的模式-匹配许多可能的电话号码。 priority 通常是正数(特例参见注意)。它是一个extension中的每个命令行的排序号码。第一个可执行命令的priority值为“1”。因此当Asterisk将一个呼叫转入一个extension时,它将首先寻找priority值为1的命令。如果没有优先值为1的行,那么这个extension将不会匹配这个拨入的号码。当执行完优先值为1的命令之后,Asterisk将把priority的值增加到2,除非命令本身决定下一个要执行的优先值。如果extension中没有定义下一个priority,Asterisk将完成对这个 extension的处理,即使是存在一个比丢失的命令的优先级更高的命令。 注意:特殊情况下,字符串也会被用于指定优先级(参见 Asterisk standard extensions)。command 是命令的名称(也被称为“应用程序”)。详见 Asterisk Commands List. parameters 依赖于命令。某些命令没有参数,在这种情况下省略参数。 范例 exten=123,1,Answer exten=123,2,Playback(tt-weasels) exten=123,3,Voicemail(44) exten=123,4,Hangup这是单个名为“123”的extension的定义。但一个呼叫被安排到 extension 123,Asterisk将自己回答这个呼叫,播放一个名为“tt-weasels”的声音文件,提示用户是否留下语音邮件,然后挂断电话。应该注意的是,Asterisk没有关注这几行代码在extensions.conf文件中的顺序。你可以以不同的顺序混合这几行代码,就像下面的例子,它与之前的例子没有什么不同,因为Asterisk使用priority来标示每一行的执行顺序。 exten=123,4,Hangup exten=123,1,Answer exten=123,3,Voicemail(44) exten=123,2,Playback(tt-weasels) 定义extension时的其它选项包括被称为“ex-girlfriend”逻辑的选项。这个逻辑将匹配extension,不管是来自外部还是内部,关键是看拨入人的呼叫ID(caller id).例如: exten=123/100,1,Answer() exten=123/100,2,Playback(tt-weasels) exten=123/100,3,Voicemail(123) exten=123/100,4,Hangup() 只有当呼入人的ID号为100时,这个extension才被匹配,并且执行接下来的选项。这个也可以通过模式匹配来完成,如下所示: exten=1234/_256NXXXXXX,1,Answer() and so on .只有以256开头的Caller ID才会匹配“1234”这个模式。这在保持本地呼叫时是很有用的。你甚至可以做这样的事情: exten=s,1,Answer exten=s/9184238080,2,Set(CALLERID(name)=EVIL BASTARD) exten=s,2,Set(CALLERID(name)=Good Person) exten=s,3,Dial(SIP/goodperson)定义context的语法关键字有: exten,include,ignorepat以及switch 详见:How Does Asterisk Handle Match As You Go Dialing?这种extension的排序办法存在的一个弊端是-如果你需要插入或删除一个priority时,你必须手动重新全部编号。我正在搞这么一个工具用来处理这件事情,感兴趣的话,可以尝试一下:give it a tryAsterisk1.2以后的版本有一个新的方法处理这件事情。第一个优先级给它编号,接下来的优先级给它命名成“n”. 深入的了解:Asterisk Priorities变量和表达式支持变量的结构 $VARIABLENAME使用表达式的结构$EXPRESSION ,这里表达式可以是常用表达式,比较表达式,加法表达式等等。标准变量见: Asterisk variables 。表达式的描述见: Asterisk readme.variablesextensions.conf 文件中的全局变量和信道变量的更多信息,见Using Variables in Asterisk Dialplans1.2版本中的新的拨号功能,见:Using Functions in Asterisk Dialplans载入在设置发生了改变之后,如果想重新加载拨号方案,无需加载所有的Asterisk配置文件。可以使用extension加载命令:Asterisk CLI一个大文件还是几个小文件?当在extension.conf文件中使用 #include 声明时,包含了其它的文件。用这个办法你可以启动这样一个系统:extensions.conf是主文件,users.conf包含你的本地用户,services.conf包含各种服务-例如会议系统。使用这个方法,拨号方案可能更容易维护。#include声明不同于include声明。#include声明在所有的配置文件中都可以使用。转到其它的Asterisk语法:iaxproviderswitch=IAX2/user:keyserver/context指定转到其它的服务器。user 和 key 需要在被呼入的服务器的iax.conf文件中定义。context是被转入的服务器的exte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论