Ciao FreeSWITCHers, on FS 1.4.18: using perl ESL outbound socket, I see FS receives DTMF 2833 only when socket is declared "async" in dialplan. NB: not only the outbound socket does not receives DTMF events, is FreeSWITCH itself that does not receives DTMFs. Is this correct? Is this the expected behavior? If I delete "async" from dialplan, DTMFs are not received es: <action application="socket" data="127.0.0.1:8040 async"/> works, while with <action application="socket" data="127.0.0.1:8040"/> no DTMFs at all. ==== btw, this is an example of outbound_socket in perl ESL #!/usr/bin/perl require ESL; use IO::Socket::INET; my $ip = "127.0.0.1"; my $sock = new IO::Socket::INET ( LocalHost => $ip, LocalPort => '8040', Proto => 'tcp', Listen => 1, Reuse => 1 ); die "Could not create socket: $!\n" unless $sock; for(;;) { my $new_sock = $sock->accept(); my $pid = fork(); if ($pid) { print "New child pid $pid created...\n"; close($new_sock); next; } my $fd = fileno($new_sock); my $con = new ESL::ESLconnection($fd); my $info = $con->getInfo(); my $uuid = $info->getHeader("unique-id"); printf "Connected call %s, from %s\n", $uuid, $info->getHeader("caller-caller-id-number"); $con->sendRecv("myevents $uuid"); $con->setEventLock("1"); # need this for forcing execution order on async, has no effect if no "async" in dialplan $con->execute("sleep","500"); $con->execute("answer"); $con->execute("sleep","500"); $con->execute("playback", "ivr/ivr-welcome_to_freeswitch.wav"); $con->execute("sleep","500"); $con->execute("playback", "ivr/ivr-finished_pound_hash_key.wav"); while($con->connected()) { my $e = $con->recvEvent(); if ($e) { my $name = $e->getHeader("event-name"); print "EVENT [$name]\n"; if ($name eq "DTMF") { my $digit = $e->getHeader("dtmf-digit"); my $duration = $e->getHeader("dtmf-duration"); print "DTMF digit $digit ($duration)\n"; $con->execute("hangup"); } } } print "BYE\n"; close($new_sock); } -- Sincerely, Giovanni Maruzzelli Cell : +39-347-2665618