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")
這樣就沒問題了,不丟一個,不多一個
有興趣的可以試試,如果結果不一樣,一定要告訴我
?