[Freeswitch-users] Re-2: Ruby and ESL help

Diego Viola diego.viola at gmail.com
Thu May 7 13:44:35 PDT 2009


It seems like EM (EventMachine) can't be used with ESL.

16:41 < diegoviola> thedonvaughn: i see, so ESL itself can't be used with EM?
16:41 < wyhaines> You can't just hand the socket from EM to ESL.
16:42 < thedonvaughn> prolly not
16:42 < thedonvaughn> and if tmm1 doesn't know how, then i'm going to say no :()
16:42 < wyhaines> EM will invoke callbacks on your protocol object
when data comes in (receive_data), and goes out (send_data).  When the
connection is
                  closed (unbind), etc....
16:43 < wyhaines> To use ESL, you'd have collect data form
receive_data into a buffer, and pass that into ESL, and ESL would have
to support being used in
                  that way.
16:43 < diegoviola> ok then i will just use FSR
16:43 < wyhaines> However, it looks like ESL wants to control the
socket, which won't work because EM is already controlling the socket.

That conversation was in #eventmachine.

Diego

On Thu, May 7, 2009 at 4:11 PM, Diego Viola <diego.viola at gmail.com> wrote:
> Ok, this seems to work:
>
> require 'rubygems'
> require 'eventmachine'
>
> module CallingCard
>        def post_init
>                send_data "sendmsg\ncall-command:
> execute\nexecute-app-name: answer\n\n"
>                send_data "sendmsg\ncall-command:
> execute\nexecute-app-name: playback\nexecute-app-arg:
> tone_stream://%(10000,0,350,440)\n\n"
>        end
> end
>
> EventMachine::run {
>        EventMachine::start_server "127.0.0.1", 8084, CallingCard
> }
>
> But what about ESL? :/
>
> Diego
>
> On Thu, May 7, 2009 at 12:03 PM, Diego Viola <diego.viola at gmail.com> wrote:
>> I see, but it should work with ESL too right?
>>
>> Diego
>>
>> On Thu, May 7, 2009 at 7:55 AM, Mikael Aleksander Bjerkeland
>> <mikael at bjerkeland.com> wrote:
>>> EventMachine is very different to TCPSocket and is definitely not a
>>> drop-in replacement. Take a look at FreeSWITCHeR
>>> (http://code.rubyists.com/projects/fs/repository) and see how they
>>> implemented EventMachine.
>>>
>>>
>>> More info about EventMachine and specifically #start_server is here:
>>> http://eventmachine.rubyforge.org/EventMachine.html#M000385
>>>
>>>
>>>
>>>
>>> El jue, 07-05-2009 a las 02:11 -0400, Diego Viola escribió:
>>>> Hi guys,
>>>>
>>>> It's me again, does anyone knows why this doesn't work?
>>>>
>>>> require 'rubygems'
>>>> require 'eventmachine'
>>>> require 'ESL'
>>>>
>>>> EventMachine.run {
>>>>         con = EventMachine::start_server "127.0.0.1", 8084 do
>>>>                 fd = con.to_i
>>>>                 esl = ESL::ESLconnection.new(fd)
>>>>                 esl.execute('answer')
>>>>         end
>>>> }
>>>>
>>>> But using it with the normal TCPServer works? I'm trying to use ESL
>>>> with EventMachine, but it doesn't appear to work. Although it does
>>>> with the normal TCPServer.
>>>>
>>>> Thanks,
>>>>
>>>> On Sun, May 3, 2009 at 5:43 PM, Diego Viola <diego.viola at gmail.com> wrote:
>>>> > http://wiki.freeswitch.org/wiki/Event_Socket_Library#Ruby_Example
>>>> >
>>>> > Added.
>>>> >
>>>> > On Sun, May 3, 2009 at 5:33 PM, Diego Viola <diego.viola at gmail.com> wrote:
>>>> >> Will post some examples on the wiki now :)
>>>> >>
>>>> >> Diego
>>>> >>
>>>> >> On Sun, May 3, 2009 at 5:32 PM, Diego Viola <diego.viola at gmail.com> wrote:
>>>> >>> NICE! It works, it works =D
>>>> >>>
>>>> >>> require 'socket'
>>>> >>> require 'ESL'
>>>> >>>
>>>> >>> server = TCPServer.new(8084)
>>>> >>> loop do
>>>> >>> con = server.accept
>>>> >>> fd = con.to_i
>>>> >>> esl = ESL::ESLconnection.new(fd)
>>>> >>> esl.execute('answer')
>>>> >>> esl.execute('playback', 'tone_stream://%(10000,0,350,440)')
>>>> >>> end
>>>> >>>
>>>> >>> Thanks everyone :D
>>>> >>>
>>>> >>> Diego
>>>> >>>
>>>> >>> On Sun, May 3, 2009 at 5:29 PM, Brian West <brian at freeswitch.org> wrote:
>>>> >>>> I think its con.fileno in this case?  Not sure.
>>>> >>>> /b
>>>> >>>> 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 at freeswitch.org
>>>> >>>> -- Meet us at ClueCon!  http://www.cluecon.com
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>> _______________________________________________
>>>> >>>> Freeswitch-users mailing list
>>>> >>>> Freeswitch-users at lists.freeswitch.org
>>>> >>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>>> >>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>>> >>>> http://www.freeswitch.org
>>>> >>>>
>>>> >>>>
>>>> >>>
>>>> >>
>>>> >
>>>>
>>>> _______________________________________________
>>>> Freeswitch-users mailing list
>>>> Freeswitch-users at lists.freeswitch.org
>>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>>> http://www.freeswitch.org
>>>
>>>
>>> _______________________________________________
>>> Freeswitch-users mailing list
>>> Freeswitch-users at lists.freeswitch.org
>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> http://www.freeswitch.org
>>>
>>
>




More information about the FreeSWITCH-users mailing list