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

Asterisk Extension中的Application命令详解二

    博客分类:
  • VOIP
阅读更多

AgentLogin( )允许呼叫代理登陆系统
AgentLogin([AgentNo][,options])
将当前呼叫者作为代理登入呼叫队列系统(以任意AgentNo验证),登陆后,该代理可以接收呼叫并在呼入时听到“哔哔”声。该代理可以按
Asterisk (*)键来挂起通话。
option参数可以包含字母s,这样可无记录登入。
    ; silently log in as agent number 42, as defined in agents.conf
    exten => 123,1,AgentLogin(42,s)
参见
AgentCallbackLogin( )
~~~~~~~~~~~~~~~~~~
AgentMonitorOutgoing( ) 记录代理呼出。
AgentMonitorOutgoing([options])

记录所有代理呼出电话
This application tries to figure out the ID of the agent who is placing outgoing call based on a comparison of the Caller ID  
of the current interface and the global variable set by the AgentCallbackLogin( ) application.
应用设法断定该代理的ID,
同样,它应该与 AgentCallbackLogin( ) 应用配合使用。它使用chan_agent模块中的监控功能代替Monitor( )应用来记录。这表明记录须在
agents.conf文件中正确配置。
默认地,记录存放在/var/spool/asterisk/monitor/ 路径下。也可以通过改变agents.conf中的savecallsin参数覆盖默认路径。
如果主叫ID或代理ID找不到,该应用将优先n+1,如果它存在(n为当前优先级)。
返回0除非被以下任意选项覆盖。
option参数可以包含以下一个或多个参数:

d
        如果有错误条件,且无扩展名n+101,程序返回-1。

c

        更改呼叫记录以便主叫以Agent/agent_id记录。

n
        若没有主叫ID或者代理ID未知不发出警告。如果你想为代理及无代理呼叫共享上下文,该选项将非常有用。

    ; record outbound calls for this agent, and change the CDR to reflect
    ; that the call is being made by an agent
    exten => 123,1,AgentMonitorOutgoing(c)

参见
AgentCallbackLogin( ), agents.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AGI( ) 执行AGI-compliant应用
[E]AGI(program[,arguments])

在当前信道执行自适应Asterisk网关接口程序。AGI程序允许外部程序(任何语言编写)通过播放音频,读取DTMF数位等等来控制电话信道。

Asterisk以STDIN 和 STDOUT与AGI程序通信。指定参数被转到AGI程序中。

program 参数须在根文件系统下设置为可执行的。程序路径与Asterisk AGI目录关联,默认为/var/lib/asterisk/agi-bin/。
若你想在无信道存在情况下运行AG(例如在h扩展名中)I,可用DeadAGI( )应用替代。
若你要用AGI处理穿越网络,你或许要用到FastAGI( )应用。

若你要从你的AGI程序中访问内部音频,可用EAGI( )代替AGI( )。届时内部音频将被三号存档描述符读入。

挂断程序请求挂断将返回-1,未挂断退出将返回0。

    ; call the demo AGI program
    exten => 123,1,AGI(agi-test)
    exten => 123,2,EAGI(eagi-test)

参见
DeadAGI( ), FastAGI( ), Chapter 9

AlarmReceiver( )               为从防盗防火警报盘中接收警报提供支持。
效仿报警接受器,及允许Asterisk从防火及(或)防盗警报盘中接收以及解码指定数据。此时,只支持Ademco Contact ID。
呼叫发出时,AlarmReceiver( )将与警报盘握手,接收事件,并验证,握手,存储直到面板挂断。一旦面板挂断,应用将运行命令行来表明alarmreceiver.conf  中eventcmd的设定与传送事件到标准应用的输入。alarmreceiver.conf也包括对DTMF定时和确认声音的音量的设置
        该应用不保证可靠,所以除非你广泛测试否则不要依赖它。如果你没有经过广泛测试,你就是把你的生命和财产置于危险的境地。
该应用总返回0。
;set up Asterisk to answer a call from a supported fire alarm panel
exten => s,1,AlarmReceiver(  )
参见
alarmreceiver.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Answer( ) 如果响铃响应该信道
Answer(  )
如果正确响铃Asterisk响应该信道。应用不启用若当前信道不响铃。
通常在调用其它应用时,在信道上使用Answer( )是个好办法,除非你有很好的理由不这样做。大多数应用需要在信道被叫时响应,可能不正常工作例外。

返回0除非它设法响应信道失败。
    exten => 123,1,Answer(  )
    exten => 123,2,Wait(1)
    exten => 123,3,Playback(tt-weasels)

参见
Hangup( )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AppendCDRUserField( )                       向呼叫详单的用户域中添加值
AppendCDRUserField(value)

向呼叫详单的用户域中添加value。用户域通常用于存储呼叫的特定数据,或许并不适用于其它域。

总是返回0。

    ; set the user field to 'abcde'
    exten => 123,1,SetCDRUserField(abcde)
    ; now append 'xyz'
    exten => 123,1,AppendCDRUserField(xyz)

参见
SetCDRUserField( ), ForkCDR( ), NoCDR( ), ResetCDR( )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Authenticate( )                         需要呼叫者输入正确的密码后才继续。
________________________________________
Authenticate(password[,options])

需要呼叫者输入特定的password 为了以便继续下一个优先的拨号规则的执行。Authenticate( ) 给呼叫者三次机会正确输入密码。如果三次输入密码不正确,信道将被挂断。

如果 password 以 / 字符开始,说明一个文件中存放有效密码列表(每行一个)。密码也可以存储在 Asterisk数据库(AstDB);看下面的 d 选项。

提供一组选项,有下面列表中一个或多个字母组成。

a

将名为accountcode的CDR域和信道变量ACCOUNTCODE设置为输入的密码。

d

把路径看作为可以找到密码的数据库键,而不是文字文件。当使用数据库键时,键和值可以任意。

r

移除数据库键若正确输入(只当d被选时)。

当用户三次内正确输入密码返回0,否则返回-1(或挂断)。

; force the caller to enter the password before continuing, and set the CDR field
; named 'accountcode' to the entered password
exten => 123,1,Answer
exten => 123,2,Authenticate(1234,a)
exten => 123,3,Playback(pin-number-accepted)
exten => 123,4,SayDigits(${ACCOUNTCODE})
参见
VMAuthenticate( ), Chapter 6
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Background( )                            接受到按键式(DTMG)数字时播放文件
________________________________________
Background(filename1[&filename2...][,options[,language]])
当等待用户开始输入一个扩展名时播放指定音频文件。一旦用户开始输入扩展名录音重放将终止。Filename不需要指定扩展名,因为Asterisk会以最低转换成本自动找出文件格式。
有效的option 包含以下任一:

Skip

如果信道不是"up"状态(也就是还未被响应)跳过消息回放。如果指定skip,应用立即返回信道未空闲。

Noanswer
在播放指定文件之前不会应答信道。没有这个选项,信道会在声音播放之前自动被应答。不是所有的信道都支持在被应答之前播放信息。
Language参数可能被用来指定一种语言来播放提示,如果它与当前的信道语言不同。
如果信道被挂断,返回-1,或者指定的文件名不存在,否则返回0值。
    exten => 123,1,Answer(  )
exten => 123,2,Background('exter-ext-of-person');

参见
Playback( ), BackgroundDetect( ), show translation 命令

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BackgroundDetect( )                        在后台播放一个文件并侦测通话
________________________________________
BackgroundDetect(filename[,sil[,min[,max]]])
与Background( )相似,但会试图侦测通话。
在重放一个文件期间,音频被监控在接收地址。如果一个非静音时期大于min毫秒,小于max毫秒,并且发生伴随着至少sil毫秒的静音,那么音频回放被取消,并且在可用的情况下跳转到扩展通话。
如果没有指明,sil,min和max的默认值分别为1000ms,100ms和无穷大。
挂断返回-1,在没有退出并成功回放的情况下返回0值。
    exten => 123,1,BackgroundDetect(tt-monkeys)
    exten => 123,2,Playback(im-sorry)
    exten => talk,1,Playback(yes-dear)

参见
Playback( ), Background( )

Busy()                                             显示一个信道的占用情况
________________________________________
Busy([timeout])
请求显示信道的占用情况,然后等待用户挂机或可选择的timeout(几秒内)到终止。
这个应用只发送一个占用情况到桥接信道。每个特殊的信道类型有它自己的通信方式给呼叫方。你可以使用Playtones(busy)来播放一个忙音给呼叫方。
永久返回-1
    exten => 123,1,Playback(im-sorry)
    exten => 123,2,Playtones(busy)
exten => 123,3,Busy(  )
参见
Congestion( ), Progress( ), Playtones( )

CallingPres( )                                            更改呼叫方的描述
________________________________________
CallingPres(presentation)
更改呼叫方ID在Q931优先级连接上的描述参数。这些参数应该在播打呼出之前来设置。参数presentation控制两件事情:不光被呼叫可以看到呼叫方ID的信息(认为是描述),而且呼叫者ID的信息已经被权威的资源所查证(认为是显示)。
应用获得呼叫描述设置和显示设置,并且把他们合并成一个数字。这些数值本身是在ITU Q931标准中被定义的,参见Tables B-1和B-2。
Table B-1 显示被位 2和1控制
位 2        位 1        说明
0        0        呼叫者ID信息由用户提供,并不会显示。
0        1        呼叫者ID信息由用户提供,并被成功的校验。
1        0        呼叫者ID信息由用户提供,并确认失败。
1        1        呼叫者ID信息由网络提供。

Table B-2 描述被位7和6控制
位 7        位 6        说明
0        0        呼叫者ID信息描述被允许。
0        1        呼叫者ID信息描述被受限。
1        0        由于相互作用号码不可用。
1        1        保留。

位3,4,5和8应该全被设置为zero(0)。请注意,位从最重要到非重要是有限的,如:87654321。
    ; set presentation to:
    ; Presentation Allowed                 (00000000)
    ; Network Provided                    (00000011)
    ; ------------------                       ----------
    ; Result = 3 (bitwise AND)              (00000011)
    exten => 123,1,CallingPres(3)
    exten => 123,2,Dial(Zap/g1/8885551212)

    ; set presentation to:
    ; Presentation Restricted                (00100000)
    ; User-provided, verified, and passed     (00000001)
    ; ------------------                        ----------
    ; Result = 33 (bitwise AND)              (00100001)
    exten => 124,1,CallingPres(33)
exten => 124,2,Dial(Zap/g1/8885551213)

参见
SetCallerPres( ), SetCallerID( )



ChangeMonitor( )                                更改一个信道的监控文件名
________________________________________ChangeMonitor(filename_base)
使用Monitor( )应用更改一个已被记录的信道监控的文件名称,如果信道没有被监控,应用将没有任何效果。参数filename_base是一个新的文件名,基本上是用来监控信道。
; start recording this channel with a basename of 'sample'
    exten => 123,1,Monitor(sample)
; change the filename base to 'example'
exten => 123,2,ChangeMonitor(example)

参见
Monitor( ), StopMonitor( )
ChanIsAvail( )                                 检查指定的信道当前是否可用
________________________________________ChanIsAvail(technology1/resource1[&technology2/resource2...][,option])
查看任何被请求的信道是否为可用。如果任何被请求的信道是不可用的,那么新的优先权将会变成n+101 (n为当前优先权),除非优先权不存在或发生了一个错误,无论如何ChanIsAvail( )将会退出并返回 -1。

如果任意一个信道都是可用的,那么下一个优先权将会变为n+1,并且ChanIsAvail( )将会返回0。


ChanIsAvail( ) 设置下列信道变量

${AVAILCHAN}

可用信道的名称,包括被用来进行测试的呼叫会话号码。

${AVAILORIGCHAN}

被用来创建没有任何会话号码的规范的信道名称。

${AVAILSTATUS}

信道的状态代码。

如果选项s(s代表“state”)被指定,Asterisk将会认为信道不论什么时候被占用的信道都是不可用的,即使它能够承载另一个呼叫。

; check both Zap/1 and Zap/2 to see if they're available
exten => 123,1,ChanIsAvail(Zap/1&Zap/2)
; if we go to priority 2, then one of the channels is available
; in priority 2, we'll dial our number on the available channel
    exten => 123,2,NoOp(${AVAILORIGCHAN})
    exten => 123,3,Dial(${AVAILORIGCHAN}/5551212)                  
; if we go to priority 101, then neither Zap/1 nor Zap/2 is available
    exten => 123,3,Playback(all-circuits-busy-now)

分享到:
评论

相关推荐

    Asterisk一些常用的命令

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

    Asterisk CLI 命令列表

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

    Asterisk 中文语音包

    2. **配置**:在Asterisk的配置文件中,如`extensions.conf`,你需要更新或添加相应段落,指定使用中文语音包。这可能涉及到修改或者创建新的context,确保当接收到中文语言请求时,Asterisk会调用正确的语音文件。 ...

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

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

    Asterisk权威指南中文

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

    Asterisk 中文文档说明

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

    Asterisk常用命令

    2. **Asterisk控制台命令**: - `sip reload`:重新加载SIP配置,确保最新的设置生效。 - `sip set debug`:开启SIP调试,显示更多信息。 - `sip set debug off`:关闭SIP调试。 - `sip show channels`:查看...

    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.NET 1.6.3 控制Asterisk

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

    asterisk AGI应用说明

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

    asterisk中文的语音包

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

    Asterisk CLI命令1

    2. `ael reload`:重新加载AEL(Asterisk Extension Language)配置。AEL是Asterisk的一种脚本语言,用于扩展和自定义Asterisk的功能。 3. `ael set debug {read|tokens|mac}`:设置AEL的调试模式,你可以选择读取...

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

    在传统的 Asterisk 配置中,配置文件都是存储在文件系统中的,但是随着系统的复杂度和规模的增加,配置文件的管理和维护变得非常困难。因此,将配置从配置文件迁移到数据库中成为一种必要的选择。 在本方案中,我们...

    通过asterisk-java操作asterisk

    2. **监听事件**:Asterisk会产生多种事件,如新通话建立、通话挂断、拨号计划执行等。你可以注册一个`ManagerEventListener`,该接口定义了各种事件的处理方法。当Asterisk服务器发送事件时,对应的处理方法会被...

    Asterisk详解

    ### Asterisk详解 #### Asterisk概述 Asterisk是一款开源的通信平台,它支持多种通信协议,包括但不限于SIP(Session Initiation Protocol)、H.323等,并且能够提供语音邮件、会议呼叫、交互式语音应答(IVR)等...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    - 呼叫接入:电话或软电话通过SIP、IAX2等协议连接到Asterisk。 - 呼叫处理:Asterisk根据拨号计划路由呼叫,可能包括IVR交互、呼叫转移、会议等。 - 信令处理:Asterisk管理所有参与者的连接状态,处理挂断、振铃、...

Global site tag (gtag.js) - Google Analytics