2014-10-06 68 views
1

我正在運行星號並試圖將一個聲音文件循環x次或一段時間。任何人都可以將我指向正確的方向嗎?我目前的Asterisk調用文件如下所示:如何在呼叫文件中循環播放單個播放聲音文件以獲取星號?

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

當前配置調用目標方並播放錄音並掛斷。但我想知道如果循環可用於此應用程序?

非常感謝您的幫助..

回答

1

例如,你可以在你的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倍。

1

你也可以只是把它5次這樣的

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

當然這是不太靈活,但更簡單。

0

您也可以使用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