测试 FreeSWITCH 的 mod_loopback

bgapi originate loopback/answer,park/default/inline park inline

show channels as xml

show calls as xml

有 2 个 channels

有 2 个 calls

比较有意思

在 loopback-a 是播放 wav

在 loopback-b 上可以录音

这就是回环

有什么用呢?

除了做测试,还有 niao 用

对了,官方文档是这样描述 loopback 的呼叫字符串的

loopback/<exten\>[/context[/dialplan]]

某个大神写个一篇文章,很好

《使用FreeSWITCH检测声音文件中的DTMF信息》


按照大神的提示,如下:

-- dtmf.lua

function onInputCBF(s, type, obj, arg)

if (type == "dtmf") then

freeswitch.consoleLog("INFO", "Got DTMF: " .. obj.digit .. " Duration: " .. obj.duration .. "\n")

end

return ''

end

session:answer()

session:execute("start_dtmf", "")

session:setInputCallback('onInputCBF', '')

session:streamFile("local_stream://moh")

<!--dialplan-->

<extension name="dtmf">

<condition field="destination_number" expression="dtmf">

<action application="answer" data=""/>

<action application="playback" data="tone_stream://v=-2;1234567890"/>

<action application="sleep" data="3000"/>

</condition>

</extension>

originate loopback/dtmf &lua(dtmf.lua)

一条腿播放带内DTMF,另外一条腿识别带内DTMF

发现效果不太好,有丢码

改了下 dtmf.lua, 如下:

function onInputCBF(s, type, obj, arg)

if (type == "dtmf") then

freeswitch.consoleLog("INFO", "Got DTMF: " .. obj.digit .. " Duration: " .. obj.duration .. "\n")

end

return ''

end

session:answer()

session:execute("spandsp_start_dtmf", "")

session:setInputCallback('onInputCBF', '')

session:streamFile("local_stream://moh")

这样就没问题了,不丢一个,不多一个

有兴趣的可以试试,如果结果不一样,一定要告诉我

相关推荐
xixixi777772 天前
从宏观架构、核心技术、战术对抗、治理挑战和未来趋势五个层面,系统性地剖析“短信反诈骗”
安全·架构·安全架构·通信·反诈·短信反诈
无名3873 天前
Kamailio usrloc 细节测试
通信
xixixi777773 天前
App反诈骗:一场面向移动生态的深度安全战争(接上文短信反诈)
安全·信息与通信·通信·电话反诈
无名3876 天前
FusionPBX Debian 12 安装
运维·debian·通信
交换机路由器测试之路9 天前
什么是网络直径
网络·以太网·交换机·通信
无名38712 天前
RTPEngine 官方自带的 perl 测试程序
开发语言·perl·通信
xixixi7777712 天前
讲一下卫星移动通信网络(系统架构、核心技术与协议挑战及应用场景和战略价值)
网络·学习·安全·信息与通信·通信·卫星通信
xixixi7777713 天前
移动通信的基石——公共陆地移动网络
大数据·网络·安全·通信·plmn
xixixi7777713 天前
解析常见的通信流量和流量分析
运维·开发语言·网络·安全·php·通信·流量
无名38713 天前
用 Gemini 2.5 Pro 产生 RTPEngine perl 测试程序
通信