asterisk主要的应用函数

本文详细介绍了Asterisk的主要应用函数,包括Dial的使用,如Dial、RetryDial等参数及其作用,Meetme应用的语法和参数说明,Queue应用的排队逻辑及选项,还涉及了ChannelRedirect、AGI、Read、Gosub等实用功能,帮助理解Asterisk的通话控制和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、           Dial 应用

(1)格式

Dial(type/identifier, timeout, options, URL) 
Dial(type1/identifier1[&type2/identifier2[&type3/identifier3... ] ], timeout, options, URL) 
RetryDial(announce|sleep|loops|Technology/resource[&Technology2/resource2...][|[timeout][|[options][|URL]]]) 

(2)说明

如果呼叫在超时之前被接听,通道就被桥接,拨号方案完成,如果被叫方没有应答Dial( ) 会继续到该 extension 的下一个priority。但是,如果被叫通道忙Dial( )将转到priority n+101,如果其存在的话(其中的 n 是Dial( )被调用的priority)

(3)参数说明

  t或T: 表示允许被叫通过拍xfer键进行呼叫转移。xfer键的定义features.conf
 r:强制产生回铃音,呼叫过程中没有语音直到被叫摘机。没有这个选项, aserisk会适当地根据情况自动地产生回铃音。强制产生回铃有可能使主叫听不到忙音,彩铃。在呼叫多个被叫时,回铃音不通被透传,这时需要强制一个回铃音。
 R:当被叫在震铃时通知主叫被在震铃,,呼叫过程中没有语音直到被叫摘机。这个选项仅在kapejod’s Bristuff有用。注:BRIstuff 是一个BRI驱动和补丁集
m:提供Music on Hold给主叫直到被叫摘机。注:与r不同的时m可以指定一类Music on Hold的音乐
o:传送主叫ID,默认是送分机的号码(extension’s number)

 j:如果所有通道忙跳到n+101
M(x):当通道一旦连接执行宏x,比如被叫摘机时。

 h:允许主叫挂机通过*号键
H:允许被叫挂机通过*号键

 i:asterisk忽略在本次拨号时的任何转发请求。这个在在1.4只有用,当你在震铃一个震铃组时,他们有一个设置了电话转移到voicemail或设置了阻止免打扰,这时你的震铃组就会呼叫失败

 C:重置CDR
 p:使能屏幕模式即不用记忆怎么出理主叫的基本个人隐私模式。
 P(x): 使用隐私管理-PrivacyManager, x可选,x是数据库。
 g:当被叫挂机时,退出,然后在当前的context中执行更多的命令
 G(context^exten^pri):当呼叫叫建立,转移双方到指定的contex和extension。主叫方转移到优先级pri,被叫方到优先级pri+1
  A(x):拨放一个通知音(x.gsm)给被叫方
  S(x):被叫摘机后x秒后挂机。
  d:这个标志胜过H标标,在等待呼叫应答时截取任何的DTMF,并返回的值。这个允许你已经设置1的(退出)exeten后,然后在呼叫时按1退出当前的呼叫
 D(digits):在被叫摘机后送digits DTMF流。
 L(x:[y]:[:z]):限制呼叫x毫秒,当y毫秒到达时发出警告,每z秒重复一次。以下这几个通道变量可设置:
           LIMIT_PLAYAUDIO_CALLER - yes|no (default yes) - 拨放语音给主叫
            LIMIT_PLAYAUDIO_CALLEE - yes|no - 拨放语音给被叫. 
            LIMIT_TIMEOUT_FILE - 拨放的文件
            LIMIT_CONNECT_FILE - 当呼叫开始拨放的文件
             LIMIT_WARNING_FILE - 播放的文件当y定义的时侯,如果     LIMIT_WARNING_FILE没有定义,默认的行为是播放(”You have [XX minutes] YY seconds”).                 

 f:当外呼或重定向呼叫时强制主叫ID设置为line的extensions,有些PSTNs只允许一个主叫ID时,你分配一个给他
w:允许被叫记录在按*1时,或在features.conf中定义的,需要Set(DYNAMIC_FEATURES=automon)
 W:允许主叫记录在按*1时,或在features.conf中定义的,需要Set(DYNAMIC_FEATURES=automon)
p:通过定义在features.conf中的dtmf 序列允许被叫方使能呼叫停泊(parking)
P:通过定义在features.conf中的dtmf 序列允许被主方使能呼叫停泊(parking)

2、           Meetme应用

(1)           语法:MeetMe([confno][,[options][,pin]])

(2)           用途:让用户进入一个指定的MeetMe会议。如果省略了会议编号,系统会提示用户选择一个。

(3)           参数说明

options可以为空,也可以设置一个或者多个参数,参数有如下一些:

 '1'— 当会议室的第一个成员进入会议时,不向用户提示"you are currently the only person inthis conference您是当前会议室唯一的成员"

  'a'— 设为管理员

  'A'— 设为标记成员

 'b'— 运行在${MEETME_AGI_BACKGROUND}指定的AGI脚本

o    缺省: conf-background.agi (注意:需要会议室内有ZAP通道才能运行)

'c'— 加入会议时提示会议成员数量

 'd'— 动态加入会议

 'D'— 动态加入会议,提示要求输入密码

o    如果用户不想给会议设密码,可以直接按井

'e'— 选择一个空会议。

 'E'— 选择一个没密码的空会议。

'F'— 在会议中透传DTMF按键,所有成员都能收到DTMF。

'i'—提示有成员加入/离开会议with review— 需要chan_zap.so (Asterisk 1.2以上版本才支持)

 'I'--提示有成员加入/离开会议 without review

 'M'—当会议室只有一个人的时候放等待音乐

  'm'—旁听状态(只能听,不能说)

 'p'—允许用户按井退出会议室

  'P'— 无论用户是否指定,总是提示用户输入会议密码

 'q' — 安静模式 (有成员加入/离开会议不做任何提示)

 'r'— 会议录音 (录音文件名${MEETME_RECORDINGFILE},格式 ${MEETME_RECORDINGFORMAT})。缺省文件名是:meetme-conf-rec-${CONFNO}-${UNIQUEID} ,缺省格式是wav。 — 这个参数同样需要chan_zap.so。

 's'—收到*键的时候播放菜单,普通成员是普通菜单,管理员是管理员菜单('send' to menu)

't'— 设为只说模式 (只说,不听) 

 'T'— 设置说话人检测 (在manager interface 和 meetme list可以看到)

 'v'— 视频模式 (目前还不支持)

'w'— 等待标记成员进入会议。在标记成员进入会议之前,所有成员只能听音乐。

?'X' — 允许用户输入${MEETME_EXIT_CONTEXT}里面的一个有效的单个数字来退出会议。如果${MEETME_EXIT_CONTEXT}没有定义,则从当前的内容里找有效数字。allow user to exit the conference byentering a valid single digit extension of the context specified in or thecurrent context if that variable is not defined. (此参数不支持Asterisk v1.2.0版本)

'x'— 当最后一个标记用户退出会议室的时候,关闭会议。

(4)           创建动态会议

当两个人处于通话状态,主叫按下*3可使双方进入到临时电话会议,主叫按0键可呼叫其他人,当第三方接受呼叫时,主叫可按*0,将第三方也加入到电话会议。

[macro-ael-nway-start]

exten =>s,1,Set(CONFNO=${CALLERID(num)})

exten =>s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

exten =>s,n,Gosub(dynamic-nway,${CONFNO},1)

[macro-ael-nway-ok]

exten =>s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-ael-nway-notok]

exten => s,1,SoftHangup(${BRIDGEPEER})

 

[dynamic-nway]

exten => _X.,1,Answer()

exten => _X.,n,Set(CONFNO=${EXTEN})

exten =>_X.,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)

exten => _X.,n,Set(DYNAMIC_FEATURES=)

exten => _X.,n,MeetMe(${CONFNO},pdX)

exten => _X.,n,Hangup

 

[dynamic-nway-invite]

exten => 0,1,Read(DEST,dial,,i)

exten =>0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)

exten =>0,n,Dial(Local/${DEST}@from-internal/n,,g)

exten => 0,n,Set(DYNAMIC_FEATURES=)

exten => 0,n,Goto(dynamic-nway,${CONFNO},1)

exten =>i,n,Goto(dynamic-nway,${CONFNO},1)

3、           Queue应用

(1)         语法:

Queue(queuename[,options[,URL[,announceoverride[,timeout[,AGI[,macro[,gosub[,rule]]]]]]]])
Queue(queuename[|options][|URL][|announceoverride][|timeout][|AGI])
Queue(queuename[|options][|URL][|announceoverride][|timeout])

(2)         参数说明

 'd' — 呼叫最小延时

 'h' — 允许被叫按*挂断

 'H' — 允许主叫按*挂断

 'n' — 没有重试暂停

 'r' — 振铃

 'R' — 当代理振铃的时候停止振铃和等待音乐

 't' — 允许被叫转移呼叫

 'T' —允许主叫转移呼叫 

 'c' — 如果被叫挂断继续执行拨号方案

4、           ChannelRedirect:重定向现有的通道到拨号计划

语法ChannelRedirect(channel,[[context,]extension,]priority)

例如:exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

5、           AGI:执行一套AGI应用程序

例如:exten => 999,n,AGI(checkq.agi,${EXTEN})

6、           Read:读有效的DTMF变量

  例如:exten => 100,n,Read(PIN,enter-conf-pin-number,,,,)

7、           Gosub:跳到一个子程序并且返回。

  例如:exten =>s,n,Gosub(dynamic-nway,${CONFNO},1)

8、           GosubIf:有条件的跳到一个子程序并且返回

9、           Goto:跳转到特定的priority, extension, 或context(专用名词)

例如:exten => s,n,Goto(from-pstn,${DID},1)

10、      GotoIf:带条件判断的Goto

  例如:exten =>s,n,GotoIf($["${STATUS}"=="1"]?callback,s,1)

11、      ExecIf:条件执行

  例如:exten =>s,1,ExecIf($[${LEN(${CCSS_SETUP})}]?Return())

12、      Set:设置通道变量和功能值

  例如:exten =>s,n,Set(DB(AMPUSER/${AMPUSER}/ccss/last_number)=${ARG2})

13、      Playback:播放一个声音文件

  例如:exten => s,1,Playback(beep&calling&extension)

14、      ChanSpy:通用的通道插话

   例如:exten => _7XXXX,n,Chanspy(SIP/${EXTEN:1},qb)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值