freeswitch筆記(7)-放音控制


來電時,播放音樂是一個很常用的功能,下面是一些相關的命令:

一、單次播放playback

originate user/1000 &playback(ivr/8000/ivr-welcome_to_freeswitch.wav)

  

二、指定次數的循環播放loop_playback

注:這個方式,直接用命令在freeswitch控制台中,一直沒嘗試成功

originate user/1000 &loop_playback(+2 ivr/8000/ivr-welcome_to_freeswitch.wav)

總是報錯缺少文件數據參數,另外發現一個可以讓freeswitch瞬間崩潰的方法: originate user/1000 &loop_playback +2 ivr/8000/ivr-welcome_to_freeswitch.wav,把括號去掉,在Freeswitch Console中輸入 ,馬上就崩了(windows 10環境+freeswitch 1.6.18)

官方用diaplan xml配置的方式如下:

<action application="loop_playback" data="+3 ivr/8000/ivr-welcome_to_freeswitch.wav"/>

如果使用esl-client,可以這樣寫:

SendMsg msg = new SendMsg();
msg.addCallCommand("execute");
msg.addExecuteAppName("loop_playback");
msg.addExecuteAppArg("+2 " + prompt);
CommandResponse resp = context.sendMessage(msg); 

 

三、無限循環播放endless_playback

originate user/1000 &endless_playback(ivr/8000/ivr-welcome_to_freeswitch.wav)

  

四、多個文件依次順序播放file_string

originate user/1000 &playback(file_string://ivr/8000/ivr-welcome_to_freeswitch.wav!ivr/8000/welcome_to.wav)

注:file_string:// 這個開頭不能省略,后面的文件用!拼起來即可

 

五、暫停/重頭開始播放

循環播放過程中,可以用uuid_break將音樂強制從頭開始播放(注:這個命令的命名方式很玄學,明明叫break,但是並不能中斷播放,叫restart_playback或許更適合)

真正要暫停,可以用pause命令,恢復暫停繼續播放用restart

這些命令可以在esl中直接調用。

注意:一旦音樂播放起來,沒有方法可以讓音樂徹底停止,又不影響通話(除非把當前Leg,bridge到其它leg之類),有一個uuid_kill方法,這個方法會中斷該Channel上的所有事件,包括通話,也不滿足要求.

 

六、監聽播放開始/結束事件

PLAYBACK_START

PLAYBACK_STOP

這2個事件對應音樂的開始播放/播放完成,值得一提的是,對於循環播放endless_playback,這一組事件,會重復一直不停的觸發,直到電話掛斷。

 

參考文章:

1、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools:+playback
2、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+loop_playback
3、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+endless_playback
4、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+file_string


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM