在使用dahdi通道呼出的时候,可以在Dial中对呼出所使用的通道进行指定选择。以下面的例子来说明:
场景说明:数字板卡单E1,使用pri信令,1-31通道分配的group为1,拨号规划使用前缀9呼出。
配置文件:
chan_dahdi.conf
点击(此处)折叠或打开
- context=from-insides
- group=1
- channel=>1-15,17-31
extensions.conf中:
点击(此处)折叠或打开
- [from-insides]
- exten => _9.,1,Dial(Dahdi/g1/${EXTEN:1},40)
- exten => _9.,2,Hangup
- 关于Dial应用的介绍:
在asterisk中Dial应用是最基本也是较为核心的一个应用。主要是为一个通道发起呼叫,并建立呼叫的
2. Dial应用的参数:
Dial(Technology/resource[&Tech2/resource2...][|timeout][|options][|URL])
第一个参数:呼叫目标的信息,信息包括通道类型(例如SIP、Dahdi、ss7、iax等)和对应的资源(一般是号码,也可以是通道号)。从上面的参数举例中可以看出,该参数可以是用&连接起来的多个目标,该功能可以实现同振(同时向多个目标发起呼叫,目标中的任意一个接听后,即与发起者建立通话,其他目标的呼叫会被取消)。
第二个参数:建立呼叫的最大时限,一般意义上理解是被叫振铃的最长时间,单位是秒。
第三个参数,是N多选项的组合,这里介绍几个常用的选项,详细信息可以阅读asterisk的文档,或者代码。
3. Dial应用中的选项解释
A(x) - 向被叫播放提示音,x是提示音文件的名字,包括路径.
g - 如果被叫挂机后,该选项允许主叫对应的通道继续执行拨号规划中下面的extension.
L(x[:y][:z]) - 限制本次通话的时间为x毫秒. 在还剩余y毫秒的时候播放警告信息,每间隔z毫秒的时候重复该警告信息.这个选项比较有用,可以用来实现限制通话时长。
m([class]) - 在主叫等待被叫接通的时候,听到的不是回铃音,而是这里指明的等待音乐,class就是等待音乐的类型。
t - 允许被叫方可以按预定义的转移键将主叫转移(盲转)到对应的拨号规划上
T - 允许主叫方可以按预定义的转移键将被叫转移(盲转)到对应的拨号规划上
w - 允许被叫方可以按预定义的自动录音键对通话进行录音
W - 允许被叫方可以按预定义的自动录音键对通话进行录音
上面四个所说的预定义都是在features.conf中的featuremap部分。
4. 使用dahdi通道呼出
通道的选择
1).使用组进行呼出
如果在chan_dahdi.conf中对dahdi指定了分组,可以使用组的方式进行呼出。如上面的例子中,使用组1 的30个通道进行呼出。那么在使用这个组内的通道进行呼出的时候,是如何选择的?
对于组内的空闲通道可以有很多个,asterisk要按照一定的原则从中选择一个进行呼出。选择的方式有4种:
g:组内通道的分配按照前向搜索的方式,即顺序的查找,每次都是从第一个开始查找,直至最后一个。
G:组内通道的分配按照后向搜索的方式,即倒序的查找,每次都是从最后一个查找,直至第一个。
r:与g一样也是采用前向搜索,不过采用的是轮转,查找的开始不是第一个,而是从上一个。
R:与G一样也是采用后向搜索,不过采用的是轮转,查找的开始不是最后一个,而是上一个。
上面的例子中使用的是Dial(Dahdi/g1/${EXTEN:1},40),
这里每次外呼的时候,使用的是组内顺序查找的方式。
2).使用通道进行呼出
例如,对于fxs的呼出即可采用这样的方式。
在chan_dahdi.conf中,定义了两个fxs口如下:
点击(此处)折叠或打开
- context=fxstest
- signalling=fxo_ks
- channel=1-2
在extensions.conf中,
点击(此处)折叠或打开
- [frominside]
- exten => 2001,1,Dial(Dahdi/1,40)
- exten => 2001,2,Hangup
- exten => 2002,1,Dial(Dahdi/2,40)
- exten => 2002,2,Hangup
这里2001,对应的是通道1,2002对应的是通道2.