fertesta (owner)

Revisions

gist: 205483 Download_button fork
public
Public Clone URL: git://gist.github.com/205483.git
Embed All Files: show embed
flexd.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /usr/bin/ruby
 
# ESL.so needs to be compiled like this:
# => cd /usr/src/freeswitch.trunk/libs/esl/
# => make rubymod
# => cd ruby
# => g++ -shared esl_wrap.o ../libesl.a -o ESL.so
# Test:
# => ruby server3.rb
# or
# => ruby single_command.rb
 
require "ESL"
 
class FlexProcessor
  def initialize
    @handlers={}
    @con = ESL::ESLconnection.new("localhost", "8021", "ClueCon")
    e=@con.sendRecv("events plain all")
    puts e.getBody
  end
  
  def register_handler(event_type, &block )
    @handlers[event_type]=block
  end
  
  def run
    loop do
      e=@con.recvEvent
      puts e.getHeader('Event-Name') , e.getHeader('Event-Subclass')
      block = @handlers[e.getHeader('Event-Name')]
      block.call(e) if not block.nil?
    end
    puts 'Exitting loop'
  end
  
end
 
puts 'Starting...'
processor = FlexProcessor.new
puts 'Registering...'
processor.register_handler('CHANNEL_ANSWER') { |event|
  puts event.serialize
}
puts 'Running...'
processor.run