`
sun4love
  • 浏览: 226335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Asterisk Extension中的Application命令详解七

    博客分类:
  • VOIP
阅读更多

StripLSD( )                     从当前分线号中去掉特定的后缀(最小限度地)数字
StripLSD(count)
从与通道相关的分线号码中去掉后缀 count 数字,且继续处理下个优先级的等待分线。因此,例如,权限为1的分机5551212为StripLSD(4), 末尾4位数字将被从5551212中分出,下一步将执行权限为2的555分线。如果你要将其转换成一个无 n+1(n为当前权限)权限的分线,此时则PBX仍会处理用户无效的分线拨叫。

通常返回 0

这个应用不被推荐,可以用下述substring表述所替代。
${EXTEN:X:Y}.

exten => 5551212,1,StripLSD(4)
exten => 555,2,SayDigits(${EXTEN})

;用更好的方法来实现
exten => 5551234,1,SayDigits(${EXTEN::3})

参见
StripMSD( ), README.variables, variable substring syntax

—————————————————————————————————————————————
StripMSD( )                     从当前分线号中去掉特定的标志性(最大限度地)数字
StripMSD(count)
从与通道相关的分线号码中去掉代表性 count 数字,且继续处理下个优先级的等待分线。因此,例如,权限为1的分机5551212为StripLSD(3), 则前面3位数字将被从5551212中分出,下一步将执行权限为2的1212分线。如果你要将其转换成一个无 n+1(n为当前权限)权限的分线,则PBX仍会处理用户无效的分线拨叫。

通常返回 0.

这个应用不被推荐,可以用下述substring表述所替代。
${EXTEN:X:Y}.
exten => 5551212,1,StripMSD(3)
exten => 1212,2,SayDigits(${EXTEN})

;用更好的方法来实现
exten => 5551234,1,SayDigits(${EXTEN:3})

参见
StripLSD( ), README.variables, variable substring syntax
—————————————————————————————————————————
SubString( )                                         在指定的变量中保存 Substring 数位

SubString(variable=string_of_digits,count1,count2)

将 string_of_digits 赋值为指定变量。参量 count1 可以为正值或负值。如果为正值可以跳过(左边起)首个 count1 数字。如果为负值,我们可以将 count1 数位从字符串的最后移至左侧。参量 count2 说明了将从已经设置的 count1 取走的数位个数。如果参量 count2 为负,将有多位数字从尾部忽略。

这个应用不推荐。代替它的是使用 ${EXTEN:X:Y}.

; 使用SubString( )的一些例子:
; 分配域代码 (3个起始数)给变量 TEST
exten => 8885551212,1,SubString(TEST=8885551212,0,3)
; 分配后7位数给变量 TEST
exten => 8885551212,1,SubString(TEST=8885551212,-7,7)
; 全部分配但后4位给变量 TEST
exten => 8885551212,1,SubString(TEST=8885551212,0,-4)
;
; 这里是相关的参考选择:
;分配域代码 (3个起始数)给变量 TEST
exten => 8885551212,1,Set(TEST=${EXTEN::3})
; 分配后7位数给变量 TEST
exten => 8885551212,1,Set(TEST=${EXTEN:-7:7})
; 全部分配但后4位给变量 TEST
exten => 8885551212,1,Set(TEST=${EXTEN:6}

—————————————————————————————————————————
Suffix( )                                                     为当前分线添加后缀数字

Suffix(digits)

为与通道相关的分线添加特定数字串,且继续处理下个优先级的新分线。因此,例如,权限为1的分机555为 Suffix(1212), 则1212将被添加到555,后将执行权限为2的分线5551212。如果你要将其转换成一个无 n+1(n为当前权限)权限的分线,则PBX仍会处理用户无效的分线拨叫。
通常返回0.
exten => 555,1,Suffix(1212)
exten => 5551212,2,SayDigits(${EXTEN})

参见
Prefix( )
________________________________________________________________________________________________
System( )                                       执行一个操作系统指令

System(command)

在当前的操作系统中执行一个指令。如果指令自身已执行,但是有错误,且存在权限为 n+101(n为当前权限)呼叫的执行,则将在此权限级别上继续。
    这个应用和 TrySystem( ) 的应用非常相似,不同的是它的返回值为-1。如果系统指令为能执行, TrySystem( ) 应用将会返回0值。
通常返回 0.
Exten => 123,1,System(echo hello > /tmp/hello.txt)

参见
TrySystem( )
__________________________________________________________________________________
Transfer( )                                    呼叫转移至远程分线

Transfer(exten)

请求将远程呼叫转移到设定的分线上。如果不支持呼叫转移或失败,权限继续为 n+101(n为当前权限),且权限被下传。

; 将123分线呼转值至130
exten => 123,1,Transfer(130)

————————————————————————————————————————
TrySystem( )                                               尝试执行一个操作系统指令

TrySystem(command)

尝试在现行的操作系统执行一个指令。如果指令本身已被执行但是有误,且当前存在一个权限n+101(n为当前权限),则在此权限上仍继续执行。
这个应用和System()应用非常相似,不同的是返回值为0,而System()应用在不能执行系统指令时,将返回-1。

exten => 123,1,TrySystem(echo hello > /tmp/hello.txt)

参见
System( )
________________________________________________________________________________________________
TXTCIDName( )                                           从DNS TXT记录中查找主叫名字

TXTCIDName(CallerID)

通过DNS和设置变量 ${TXTCIDNAME}.来查询一个主叫名字。TXTCIDNAME 则会为空或返回在 DNS 的TXT记录中查找赋值。这个应用通过在 enum.conf 中列出的ENUM资源列表来查询号码。

exten => 123,1,TXTCIDName(8662331454)
exten => 123,2,SayAlpha(${TXTCIDNAME})
exten => 123,3,Playback(vm-goodbye)

—————————————————————————————————————————
UnpauseQueueMember( )                              恢复一个队列

UnpauseQueueMember([queuename],interface)

恢复(恢复呼叫)一个队列。它对应于PauseQueueMember( ),且用同样方式来执行,只不过是在它的接口中用unpauses代替了pausing。

exten => 123,1,PauseQueueMember(,SIP/300)
exten => 124,1,UnpauseQueueMember(,SIP/300)

参见
PauseQueueMember( )

—————————————————————————————————————————
UserEvent( ) Sends an arbitrary event to the Manager interface

UserEvent(eventname[,body])

发送任意一个事件到管理界面,用一个可选的实体来表现另外一个约束;
事件的格式为:
Event: UserEvent<specified event name>
Channel: <channel name>
Uniqueid: <call uniqueid>
[body]
如果实体未申明,则只表现事件、通道和唯一的域。

通常返回0
exten => 123,1,UserEvent(BossCalled,${CALLERIDNAME} has called the boss!)
exten => 123,2,Dial(${BOSS})

参见
manager.conf, Asterisk Manager interface

—————————————————————————————————————————
Verbose( )                                   将发送任意文本到输出描述中

Verbose([level,]message)

在输出描述中发送指定的 message。它的level 必须为整形,如果未说明,level缺省为0。

通常返回 0.

exten => 123,1,Verbose(Somebody called extension 123)
exten => 123,2,Playback(extension)
exten => 123,3,SayDigits(${EXTEN})

—————————————————————————————————————————
VMAuthenticate( )                           从语音信箱密钥中识别主叫

VMAuthenticate([mailbox][@context])

它的应用和 Authenticate( ) 是相似的,不同的是从 voicemail.conf.中识别出密钥。
如果 mailbox 被指定,则只有信箱的密钥被认为有效。如果 mailbox 未被指定,则通道变量 ${AUTH_MAILBOX} 将被识别的信箱所设置。

; 任意邮箱密钥的识别,并告诉用户匹配的邮箱号码。
exten => 123,1,VMAuthenticate( )
exten => 123,2,SayDigits(${AUTH_MAILBOX})

参见
Authenticate( ), voicemail.conf

————————————————————————————————————————————————
VoiceMail( )                              在指定邮箱中记录一个语音消息邮件

VoiceMail([s|u|b]mailbox[@context][&mailbox[@context]][...])

在指定的语音信箱中,留下语音邮件(必须在voicemail.conf中配置).
通过“s”来指明的留言信息将被跳过。若通过“u”,则存在的一些脱机信息(/var/lib/asterisk/sounds/vm/exten/unavail) 将会被播放。如果在邮箱用
“b”来指明,则代表忙碌的消息将会被播放,(也就是用busy 代替 unavail)。
如果在提示中者按下0(数字0),呼叫将跳至当前环境中的o(字母o)分线。
如果在提示中者按下*,呼叫将跳至当前环境中的a分线。这个应用通常用来发送主叫给个人助手。
如果请求的邮箱不存在,且当前权限为n+101(n为当前权限),则此权限传递执行。
当指定了多个邮箱时,脱机或忙碌的信息将从指定的第一个邮箱中取出。




当错误或没有找到邮箱时,返回-1,也可能是用户挂机;否则,将返回0。
; send caller to unavailable voicemail for mailbox 123
exten => 123,1,VoiceMail(u123)

参见
VoiceMailMain( ), voicemail.conf

—————————————————————————————————————————————

VoiceMailMain( )                               进入语音信箱系统

VoiceMailMain([[s|p]mailbox][@context])

进入主体语音邮箱系统来查收语音邮件。通过 mailbox 约束,来停止进程中用户的语音邮件系统,来得到邮箱号码。
如果之前用字母“s”提示,则密码检测被忽略;如果用字母“p”指示,则提供的邮箱将成为用户的入口,且产生的字符被用作信箱的号码。这对虚拟主机语音邮件系统是有用的。如果 context 已经指定,则只能在此语音邮箱环境中登录。
如果用户挂机,返回 -1;否则,返回0值。

; 在缺省的语音信箱环境中转至邮箱123的语音邮件菜单
exten => 123,1,VoiceMailMain(123@default)

参见
VoiceMail( ), voicemail.conf

—————————————————————————————————————————————
Wait( )                                           等待一个指定号码

Wait(seconds)

等待一个指定号码,然后返回0。可经过一秒的间隙(例,1.5=1.5秒)
;在播放提示前等待1.5秒
exten => s,1,Answer( )
exten => s,2,Wait(1.5)
exten => s,3,Background(enter-ext-of-person)

—————————————————————————————————————————
WaitExten( )                                   等待一个分线登录

WaitExten([seconds])

等待几秒使用户来用指定号码登录一个新分线,然后返回0。可以经过一秒的间隙(例,1.5=1.5秒),如果未指定,则缺省的分线会被视为超时。
; 等待15秒来拨打一个分线
exten => s,1,Answer( )
exten => s,2,Playback(enter-ext-of-person)
exten => s,3,WaitExten(15)
WaitForRing( )                          为指定的号码等待振铃时间
WaitForRing(timeout)

在下一个振铃完成之后,等待至少到timeout 时间。
成功返回0,挂机返回 -1.

; 等待5秒来振铃,然后发送DTMF序列
exten => 123,1,Answer( )
exten => 123,2,WaitForRing(5)
exten => 123,3,SendDTMF(1234)

—————————————————————————————————————————
WaitForSilence( )                           等待一个指定的静音时间
WaitForSilence(wait[,repeat])

等待几毫秒的静音repeat。如果repeat 被忽略,应用将只等待一次 wait毫秒的静音。

;等待3次300ms的静音
exten => 123,WaitForSilence(300,3)

————————————————————————————————————————
WaitMusicOnHold( )                             为指定号码,来等待播放保持音乐的时间
WaitMusicOnHold(delay)

为指定号码,来等待播放保持音乐的时间。如果没有可用的保持音乐、将继续延迟,但是没有声音。
执行时返回0,挂机返回 -1。

; 允许呼叫者听到5秒的保持时间
exten => 123,1,Answer( )
exten => 123,2,WaitMusicOnHold(300)
exten => 123,3,Hangup( )

参见
SetMusicOnHold( ), musiconhold.conf

—————————————————————————————————————————
While( )                                          开始间歇循环
While(expr)

执行一个间歇循环。当 EndWhile( ) 被呼叫,则返回到此处,直至expr不再为真。如果实例遇到循环退出,它将继续执行 EndWhile( ).
exten => 123,1,Set(COUNT=1)
exten => 123,2,While($[ ${COUNT} < 5 ])
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,EndWhile( )
参见
EndWhile( ), GotoIf( )
________________________________________________________________________________________________
Zapateller( )                        使一个特殊的信息音来阻断telemarketers

Zapateller(options)

产生使一个特殊的信息音来阻断telemarketers或其他困扰你的计算机拨号呼叫。
可选项是一个被限制的列表,下列选项是可用的:

应答
在播放音调前,线路应答。
无主叫显示
如果没有可用主叫ID信息,则Zepteller播放语音。

; 如果没有主叫ID信息,则应答线路并播放SIT语音。
exten => 123,1,Zapateller(answer|nocallerid)

参见
PrivacyManager( )

________________________________________________________________________________________________
ZapBarge( )                                               进入 Zap 通道(或监听者)

ZapBarge([channel])

进入特定的Zap channel, 如果没有指定将会有提示。在通道中的用户不会听到你(的动作),且感觉不到被监听的迹象。
如果channel 未指定,将会提示你通道号,输入4#进入Zap/4例子。
当主叫挂机返回 -1,且不依赖于通道被监听时的状态。

exten => 123,1,ZapBarge(Zap/2)
exten => 123,2,Hangup( )

参见
ZapScan( )
________________________________________________________________________________________________
ZapRAS( )                             执行 Zaptel ISDN 远程访问服务器

ZapRAS(args)

在当前通道使用 pppd 来运行一个ISDN RAS服务器。通道必须为一个清晰的通路(如,PRI资源),且一个Zaptel 通道能够使用这个功能(未包含Modem算法)。

你的pppd 须与 Zaptel-aware. args 相配并限定为约束列表。
通常返回-1
这个只应用在ISDN线路上,而且需内核支持 ZapRAS( ),同样内核也的支持 ppp .

exten => 123,1,Answer( )
exten => 123,1,ZapRas(debug|64000|noauth|netmask|255.255.255.0|10.0.0.1:10.0.0.2)

—————————————————————————————————
ZapScan( )                                   查看Zap通道来监视呼叫

ZapScan([group])

呼叫中心管理员可以方便的监视到 Zap 通道。若使用* 来选择下一个通道,并且用*来退出。可以通过设置 group,来限制扫描查看具体每一个group 约束。

exten => 123,1,ZapScan( )

参见
ZapBarge( )

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics