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
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。