[Freeswitch-users] Problem with missing / duplicated DTMF

Matt Stockton mstockton at harqen.com
Tue Feb 1 19:10:55 MSK 2011


I have having trouble with both missing and duplicated DTMF in Freeswitch.

Here are the steps of how I am using it:

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.

2. Leg B - The above call is routed through iCall and then answered by the
same Freeswitch instance.

3. On Leg B, I play a file and attempt to get DTMF in a lua script. Here is
the code of interest:

callPin = session:playAndGetDigits(1, 10, 4, 30000, "#","/tmp/cw_17.wav",
"", "\\d+");


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:

local newPin = "";

for i = 1, string.len(pin) do

  newPin = newPin .. string.sub(pin, i, i) .. "W";

end

session:execute("send_dtmf", newPin .. "#@200");


** 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 **


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)


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.


_____________________________

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)


    <!-- This is in external.xml -->

    <param name="dtmf-duration" value="500"/>

    <param name="dtmf-type" value="rfc2833"/>

    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>

    <param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
    <param name="inbound-codec-negotiation" value="greedy"/>

    <!-- This is in vars.xml -->
    <X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU"/>
    <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU"/>

________________________

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).

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)

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.

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110201/9654efa4/attachment-0001.html 


More information about the FreeSWITCH-users mailing list