测试 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")
这样就没问题了,不丢一个,不多一个
有兴趣的可以试试,如果结果不一样,一定要告诉我