`
sun4love
  • 浏览: 234590 次
  • 性别: 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( )

 

分享到:
评论

相关推荐

    Asterisk一些常用的命令

    Asterisk命令详解 Asterisk是一款开源的电话交换机软件,提供了丰富的命令来管理和控制电话系统。下面是Asterisk的一些常用的命令: 1. amportal 命令 amportal 命令是FreePBX搞的,负责管控Asterisk。amportal ...

    Asterisk CLI 命令列表

    Asterisk CLI 命令列表 Asterisk 是一个开源的 VoIP 系统平台,提供了一个命令行接口(CLI),允许用户通过命令行控制 Asterisk 系统。下面是 Asterisk CLI 命令列表: 1. ! 命令:执行 shell 命令 使用格式:! ...

    Asterisk 中文文档说明

    在高级主题中,你可能会学到如何集成Asterisk与其他系统,如CRM(Customer Relationship Management)或ERP(Enterprise Resource Planning)系统,以实现更复杂的业务流程自动化。此外,故障排查和日志分析也是重要...

    Asterisk 中文语音包

    3. **重新加载**:完成配置更改后,需要重新加载Asterisk配置,通常通过执行`asterisk -r`进入命令行模式,然后输入`reload`命令,让Asterisk应用新的设置。 4. **测试**:为了确认中文语音包已正确安装并工作,你...

    asterisk拨号方案中应用使用详解

    "asterisk拨号方案中应用使用详解" Asterisk拨号方案中应用使用详解是指在Asterisk系统中使用拨号方案来实现各种应用的技术手段。本文将对Asterisk拨号方案中的各种应用进行详细地解释和示例。 1. Authenticate:...

    asterisk拨号方案的配置

    当 Asterisk 从一个通道上收到一个呼入连接,Asterisk 从 context 定义中查询通道命令。context 根据用户拨打的 extension 定义了不同的命令集。 在 Asterisk 中,你可以定义多个 context,每个context都可以嵌套另...

    Asterisk权威指南中文

    Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...

    Asterisk常用命令

    以下是一些Asterisk常用命令的详细解释: 1. **启动与调试命令**: - `./asterisk &`:将Asterisk服务在后台运行。 - `./asterisk -vvvc`:以调试模式启动Asterisk,输出大量日志信息到控制台。 - `./asterisk -...

    asterisk APP命令含义中文对照

    Asterisk APP命令含义中文对照 Asterisk是一个开源的PBX(Private Branch Exchange)电话交换系统,具有强大的功能和灵活性。Asterisk提供了许多APP命令,用于实现各种电话功能。本文将对Asterisk APP命令进行分类...

    Asterisk中文语言包

    修改sip_general_custom.conf(作为测试,在所有SIP 通道上启用提示语为中文,在实际应用中,可根据需要修改--zapata-channels.conf,sipXXX.conf,IAXXXX.conf...,也可在FreePBX的WEB界面中有language选项的地方修改--...

    Asterisk Manager API(AMI) 中文文档

    这种通信是双向的,客户端不仅可以发送命令给Asterisk,还能够接收来自Asterisk的事件通知。通过这种方式,开发者能够轻松地监控和管理Asterisk系统中的各种活动,包括但不限于电话呼叫的状态、设备的状态以及系统的...

    Asterisk-CLI-命令列表.zip_asterisk_cli

    在Asterisk系统中,Asterisk命令行接口(CLI)是管理员进行配置、监控和调试的主要工具。下面,我们将深入探讨Asterisk CLI的相关知识点。 1. **Asterisk CLI简介** Asterisk CLI是一个基于文本的交互式环境,通过...

    Asterisk CLI命令1

    ` 命令:这个命令用于在CLI中执行Shell命令,让你能够直接在Asterisk的控制台环境中运行Linux系统的命令。 2. `ael reload`:重新加载AEL(Asterisk Extension Language)配置。AEL是Asterisk的一种脚本语言,用于...

    asterisk中文的语音包

    Asterisk的声音包是其功能中的一个重要组成部分,为用户提供各种语音提示和交互体验。 这个名为“asterisk中文的语音包”的资源包含了Asterisk系统中用于中文环境的音频文件。声音包通常由一系列预录制的语音片段...

    通过asterisk-java操作asterisk

    7. **源码分析**:对于标签中的“源码”,意味着你可能需要查看Asterisk-java的源代码来了解其工作原理或进行定制开发。通过阅读源代码,你可以理解其内部的工作流程,学习如何更好地利用API,甚至贡献代码到开源...

    Asterisk 之数据库配置方案 asterisk数据库

    7. Asterisk 的配置文件包括 zapata.conf、zapata-channels.conf、sip.conf 和 extensions.conf 等。 8. 在 Kamailio.cfg 文件中需要配置 switch 语句来管理 Asterisk 的配置。 9. 在 Asterisk 中,需要安装 ...

    Asterisk.NET 1.6.3 控制Asterisk

    Asterisk.NET 1.6.3 是一个专门为.NET开发者设计的开源库,它提供了对Asterisk PBX系统的编程接口,使得用户可以方便地在C#、VB.NET或其他.NET支持的语言中控制和扩展Asterisk功能。这个库是基于Asterisk Manager ...

    asterisk 七号信令 模块

    在本文中,我们将深入探讨Asterisk如何通过其"chan_ss7"模块来处理7号信令,并分析提供的文件列表中的各个组件。 7号信令是全球电信网络中广泛使用的通信控制协议,用于建立、管理和终止电话通话,以及传输数据服务...

    asterisk AGI应用说明

    ### Asterisk AGI应用详解 #### 一、概述 Asterisk是世界上最流行的开源PBX系统之一,它支持多种通信协议并提供了丰富的功能。在Asterisk中,AGI(Asterisk Gateway Interface)是一种非常重要的接口技术,它允许...

Global site tag (gtag.js) - Google Analytics