I have having trouble with both missing and duplicated DTMF in Freeswitch. <div><br></div><div>Here are the steps of how I am using it:</div><div><br></div><div>1. Leg A - I am calling out from my Freeswitch instance (through iCall), and I am calling an iCall number that is also connected to the same Freeswitch instance. </div>
<div><br></div><div>2. Leg B - The above call is routed through iCall and then answered by the same Freeswitch instance. </div><div><br></div><div>3. On Leg B, I play a file and attempt to get DTMF in a lua script. Here is the code of interest:</div>
<div>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">callPin = session:playAndGetDigits(1, 10, 4, 30000, "#","/<span style="text-decoration:underline">tmp</span>/cw_17.<span style="text-decoration:underline">wav</span>", "", "\\d+");</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><br></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><span style="font-family:arial;font-size:small">4. On Leg A, I send DTMF information in a lua script. Here is the code of interest. I initiate a delay between each digit:</span></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">local newPin = "";</p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><span style="font-family:arial;font-size:small">
</span></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">for i = 1, string.len(pin) do</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"> newPin = newPin .. string.sub(pin, i, i) .. "W";</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">end</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">session:execute("send_dtmf", newPin .. "#@200");</p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"><br>
</span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px">** Note that there is a session:sleep on Leg A before I send the DTMF to make sure i don't send it too early **
</span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"><br></span></font></span></font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px">The problem is that the recognized DTMF on Leg B is wrong about 30% of the time. For example, if Leg A enters: 22063083, Leg B will get the DTMF digits 222063083. This is an example of duplication, but I have also experienced missing DTMF codes (and an occasional wrong code completely) </span></font></span></font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"><br></span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px">I have messed with a bunch of DTMF settings in hopes of fixing this issue, but I cannot seem to find something that is reliable 100% of the time.</span></font></span></font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"><br></span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px">_____________________________</span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px">Here are the DTMF settings I have looked at / messed with. I've tried various values for the dtmf-duration in the config (and in the send_dtmf command above)</span></font></span></font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"><font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"><br></span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"> <!-- This is in external.xml --></span></font></span></font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<font face="arial"><span style="font-size:small"><font face="Monaco" size="3"><span style="font-size:11px"></span></font></span></font></p><font face="arial"><font face="Monaco" size="3"><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<param name="dtmf-duration" value="500"/></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"> <param name="dtmf-type" value="rfc2833"/></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco">
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Monaco"> <param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/></p>
<div> <param name="inbound-codec-negotiation" value="greedy"/></div><div><br></div><div> <!-- This is in vars.xml --></div><div><div> <X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU"/></div>
<div> <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU"/></div></div><div><br></div><div>________________________</div><div><br></div><div>I have run fs_cli with event logging and the DTMF events that Freeswitch gets do correlate to the wrong value (e.g. the duplication / missing digits is noticable in the Freeswitch events as well). </div>
<div><br></div><div>Also, I am not running any dtmf-related applications on the session before I give control to the lua scripts (e.g. not running start_dtmf)</div><div><br></div><div>Has anyone experienced this type of issue? Or know what I can do to resolve it? My next step was going to be trying this against another provider besides iCall, but I figured I would see if anyone has encountered a similar problem before. Any help is appreciated.</div>
<div><br></div><div>Thanks</div></font></font><p></p><p></p></div>