来电时,播放音乐是一个很常用的功能,下面是一些相关的命令:

一、单次播放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

freeswitch笔记(7)-放音控制的更多相关文章

  1. alsamixer + alsactl 控制放音通道

    1 使用alsamixer的gui界面配置放音(控制OUT1,OUT2的音量); 2 退出alsamixer,使用alsactl  store生成配置文件,文件位于/etc/asound.state; ...

  2. c#录音和放音,超简单!不用DirectX

    最近在做android与C#录音并互相通信的小东西.但是卡在C#录音这儿了.找了好久,说的都是DirectX,可是我总是安装不上,这才找到了这个简单的录音方法.当然,如果你想要录得好并且处理音频,那还 ...

  3. .NET MVC 学习笔记(七)— 控制input控件

    .NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...

  4. H5之audio标签放音兼容所有浏览器方法

    前端交流群,群文件提供大量文档.书籍和资料.期待你的加入!群号:127768464 由于项目需要,最近刚做了一个网页放音的功能,使用到了H5新标签<audio></audio> ...

  5. Robot Operating System (ROS)学习笔记4---语音控制

    搭建环境:XMWare  Ubuntu14.04  ROS(indigo) 转载自古月居  转载连接:http://www.guyuehome.com/260 一.语音识别包 1.安装         ...

  6. EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO

    0 前言     本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2 ...

  7. Shell脚本笔记(七)控制Shell脚本

    控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...

  8. 《深入分析Linux内核源代码》读书、私藏笔记大放送

    秉承着"不懂操作系统原理的程序员不是合格的程序员"的至理名言,鄙人又是买陈莉君老师的“Linux教学视频”,又是研读其力作<深入分析Linux内核源代码>,先将总结笔记 ...

  9. V-rep学习笔记:关节力矩控制

    Torque or force mode When the joint motor is enabled and the control loop is disabled, then the join ...

  10. 【CSAPP笔记】6. 汇编语言——控制

    原先刊于自己的域名下面,考虑到博客园之前发过一半,不想烂尾,故在博客园发一版. 到目前为止我们只考虑了直线代码的执行行为,也就是指令一条接着一条执行.C语言中的某些语句,比如条件语句.循环.分支语句, ...

随机推荐

  1. redis 中文乱码

    查询数据时中文乱码 解决方法: 使用 ./redis-cli 登录的时候加上 --raw参数 ./redis-cli --raw

  2. Spring--IOC注解用法初探

    创建一个UserDao接口,和一个UserDaoImp的实现类 UserDao接口 package com.zjw.spring.demo1; public interface UserDao { p ...

  3. Time Series in pandas

    Time Series import pandas as pd import numpy as np Date and Time data types and tools from datetime ...

  4. SuperSocket 2.0 的发布标志着.NET Socket 服务器框架迈入了一个全新的时代

    2025 年 4 月 20 日 - SuperSocket 团队自豪地宣布正式发布 SuperSocket 2.0,这是这款适用于 .NET 的高性能.可扩展套接字服务器应用程序框架的一个重要里程碑. ...

  5. UVW源码漫谈(一)

    博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...

  6. 使用Streamlit构建批量二维码生成器

    Streamlit是一个优秀的Python库,让数据科学家和开发者能够快速创建交互式Web应用.今天,我将展示如何使用Streamlit和qrcode库构建一个简单而实用的批量二维码生成器. 技术栈 ...

  7. Spring Boot项目基于POI框架导出Excel表格

    1.    依赖 我的项目是基于Spring Boot的,这里只贴出POI框架需要依赖的两个包,其他的都无所谓,只要能提供Controller让浏览器访问即可.在pom.xml配置文件中增加如下两个包 ...

  8. 什么是云原生(Cloud Native)

    云原生(Cloud Native)是一种专门为云环境设计的软件架构和技术实践,它利用云计算的优势,实现 高可用性.可伸缩性.弹性部署.云原生应用通常基于 容器化.微服务.DevOps.持续集成/持续部 ...

  9. 超实用!Dify快速接入本地MCP服务

    Dify 可以通过插件实现 MCP 服务调用,而被调用的 MCP 服务基本可以分为以下两类: 通用 MCP 服务(非本地 MCP 服务). 本地 MCP 服务. 本地 MCP 服务指的是本地通过 Ja ...

  10. 基于人类反馈的强化学习 RLHF

    1.强化学习和语言模型的联系 agent: 语言模型本身 state: prompt(input tokens) action: 选择哪个token作为下一个token(贪婪,top k,top p) ...