This is how we do it in perl with ESL... it should be very similar in Ruby. You shouldn't have to manually use sendmsg if you tie the fd from the socket to ESL like we do in perl. /b 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) { close($new_sock); next; } my $host = $new_sock->sockhost(); my $fd = fileno($new_sock); my $con = new ESL::ESLconnection($fd); my $info = $con->getInfo(); print $info->serialize(); my $uuid = $info->getHeader("unique-id"); $con->execute("answer", "", $uuid); $con->execute("playback", "/ram/swimp.raw", $uuid); close($new_sock); } On May 3, 2009, at 4:00 PM, Diego Viola wrote:
Yep, it works Guido.
require 'socket'
server = TCPServer.new(8084) loop do con = server.accept con.puts "connect\n\n" con.puts "sendmsg\ncall-command: execute\nexecute-app-name: answer\n\n" con.puts "sendmsg\ncall-command: execute\nexecute-app-name: playback\nexecute-app-arg: tone_stream://%(10000,0,350,440)\n\n" end
Thanks for the tip =D
Brian West brian@freeswitch.org -- Meet us at ClueCon! http://www.cluecon.com