如何在呼叫文件中循环播放单个播放声音文件以获取星号?

问题描述:

我正在运行星号并试图将一个声音文件循环x次或一段时间。任何人都可以将我指向正确的方向吗?我目前的Asterisk调用文件如下所示:如何在呼叫文件中循环播放单个播放声音文件以获取星号?

Channel: /sip/flowout/1202XXXXXXX 
CallerID: <3333> 
Application: Playback 
Data: soundfile 

当前配置调用目标方并播放录音并挂断。但我想知道如果循环可用于此应用程序?

非常感谢您的帮助..

例如,你可以在你的diall计划到分机,将重复你的声音

Callfile:

Channel: SIP/flowout/1202XXXXXXX 
CallerID: <3333> 
Context: play_sound 
Extension: 100 
Priority: 1 

Diallplan:

[play_with_timeout] 
exten => 100,1,Dial(Local/[email protected]_sound,15,S(60)) 

[play_sound] 
exten => 100,1,Set(repeatCount=5) 
exten => 100,n(playback),Playback(hello-world) 
exten => 100,n,Set(repeatCount=$[${repeatCount} - 1]) 
exten => 100,n,GotoIf(GotoIf($[${repeatCount} = 0]]?exit:playback) 
exten => 100,n(exit)Hangup() 

S(x)-Wi通过此选项,您可以指定一段时间,在该时间段之后,行 将被挂起。定时器开始被呼叫人后响应号召

如果您在callfile你的声音设置Context: play_sound将播放4次,但如果你将其更改为Context: play_with_timeout您的通话将hungup 60秒后,或播放声音的4倍。

你也可以只是把它5次这样的

Channel: /sip/flowout/1202XXXXXXX 
CallerID: <3333> 
Application: Playback 
Data: soundfile&soundfile&soundfile&soundfile&soundfile 

当然这是不太灵活,但更简单。

您也可以使用Asterisk命令虽然

Callfile:

Channel: /sip/flowout/1202XXXXXXX 
CallerID: <3333> 
Context: play_sound 
Set: _soundfile=soundfile 
Set: _timePeriod=30 

Diallplan:

same => n,Progress() 
same => n,While($[${CDR(duration)} < ${timePeriod} ])  
    same => n,Playback(soundfile,noanswer) 
same => n,EndWhile 
same => n,HangUp