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( ) |