首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Asterisk 中 background 施用要注意的地方

2012-06-28 
Asterisk 中 background 使用要注意的地方exten s,1,background(voice_file)exten 1,1,playback(choi

Asterisk 中 background 使用要注意的地方

exten => s,1,background(voice_file)

exten =>1,1,playback(choice1)

exten => 1,2,hungup()

exten => i,1,playback(wrongchoice)

exten =>1,2,goto(s,1)

exten => t,1,play(timeout)

exten =>t,2,hungup()

?

一直以来都认为,当没有按键的时候,会自动进入t,谁知道,原来不是这样的。

background之后,会自动进入s,2 步,但是由于s,2没有了,所以就自动挂掉了。

?

查了资料才知道,要执行t,必须得先在background之后设置超时时间,可以在这里改成:

exten => s,1,background(voice_file)

exten => s,2,set(TIME(response)=10)? //在这里设定为十秒

exten =>s,3,WaitExten(2)     //在这里再跳回2再次设置,如果不这样的话,就自动挂掉了。

                因为还没有到时间去执行t.

exten =>1,1,playback(choice1)

exten => 1,2,hungup()

exten => i,1,playback(wrongchoice)

exten =>1,2,goto(s,1)

exten => t,1,play(timeout)

exten =>t,2,hungup()

?

?

?

关于BackGround的在宏内的使用时,要特别注意:

?

???? 如下方案:

?

???? [default]

???? exten => s,1,Macro(exeBG)

???? exten => 1,1,Noop(Press 1)

???? exten => 2,1,Noop(Press 2)

?

?

???? [macro-exeBG]

???? exten => s,1,BackGround(file1)

???? exten => s,n,WaitExten(10)

?

???? exten => 1,1,Noop(macro 1)

???? exten => 2,1,Noop(macro 2)

?

???? 如上方案,如果用户响应的按键为1时,是不会转到[macro-exeBG]中的1那里的,而是会转到[default]中的1,即打印出Press 1.

?

???? 如果希望转到[macro-exeGB],必须在BackGround中加入一个参数,参数值就是整个宏的名称,即:

  [macro-exeBG]

???? exten => s,1,BackGround(file1,,,macro-exeGB)

???? exten => s,n,WaitExten(10)

?

???? exten => 1,1,Noop(macro 1)

???? exten => 2,1,Noop(macro 2)

?

???? 这样的话,才会转到宏内对应的响应的按键那里。

?

?

? 不过,就我而言,我比较喜欢用Read来响应用户的按键,可以为响应按键单独写一个宏,?? 如下:

?

?? [macro-FuncPressDigit]? ??? ;播放提示音,并输入一个数字键
;入口: ${ARG1},即{IR1}等待时长
;??? ?? ${ARG2},即{SR1}要播报的文件
;出口: ${IR1} ,10输入了*号,11超时没输入

exten => s,1,Read(IR1,${ARG2},1,,,${ARG1})
exten => s,n,GoToIf($[${LEN(${IR1})}=0]?10)??? ??? ;表示超时没有输入
exten => s,n,GoToIf($["${IR1}"="*"]?20)??? ??? ??? ??? ;输入了*号
exten => s,n,Noop(${IR1})

exten => s,10,Set(IR1=11)??? ??? ??? ??? ??? ;超时
exten => s,20,Set(IR1=10)??? ??? ??? ??? ??? ;输入了*号时,设置为10

热点排行