我已经读过freeswitch中的start_dtmf应用程序,它用于检测带内dtmf。 我已对此进行了测试,但未检测到任何DTMF。
<extension name="dtmf_test">
<condition field="destination_number" expression="^6000$">
<action application="answer"/>
<action application="start_dtmf"/>
<action application="bridge" data="user/6888"/>
请帮帮我。
答案 0 :(得分:3)
老问题,但又值得回答。
<强>假设强>
我假设用户/ 6888是dtmf数字的发起者。
<强>问题强>
任何基于呼叫的应用程序都要记住的一件重要事情是,它处理呼叫支路/通道,被叫方,来电或a-leg,b-leg。这在执行特定于腿特定的基于拨号计划的应用程序(即仅在一条腿上启用)时非常重要,例如“start_dtmf”,请参阅documentation特别是声明的行:
上面列出的start_dtmf行启动此频道上的start_dtmf应用程序以允许DTMF检测。
在您的示例中,start_dtmf应用程序正在侦听调用6000的用户,而不是桥接扩展用户/ 6888。 freeswitch示例有效,因为它正在拨入IVR,并且来电呼叫者正在按下dtmf数字。
<强>解决方案强>
要在另一条腿上设置start_dtmf应用程序,您需要查看exec_after_bridge application。
<action application="set" data="exec_after_bridge_app=start_dtmf"/>
答案 1 :(得分:1)
我发现mod_spandsp
的带内DTMF检测比内置的FreeSwitch检测更可靠。另外我发现它在Windows上不起作用,只在Linux上运行。
答案 2 :(得分:0)
你怎么知道它不起作用?
1)确保电话路径使用带内DTMF 此测试呼叫涉及哪种SIP用户代理或电话?软电话通常可以选择更改DTMF设置。
2)确保将控制台日志设置为DEBUG以查看DTMF是否得到识别。 通常可以通过按FreeSWITCH控制台上的F8键在DEBUG中设置它。
侨!
答案 3 :(得分:0)
问题
与@bencode意见相同,您的xml在A通道而不是B通道中启动dtmf
解决方案
但是在我的配置中,仅<md-select v-model="myOptionSelected">
<md-option
v-for="item in group" v-bind:key="item"
:value="item.codigo">
{{item.nome}}
</md-option>
</md-select>
export default {
data() {
return {
myOptionSelected: '',
group: []
}
}
不起作用
我尝试了另一种在b通道中启用dtmf的方法
set exec_after_bridge_app=start_dtmf
它将在调用建立时在a通道和b通道中执行start_dtmf