bougyman-freeswitcher 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +13 -0
 - data/CHANGELOG +1136 -0
 - data/MANIFEST +101 -0
 - data/README +66 -70
 - data/Rakefile +31 -77
 - data/examples/inbound_event_socket.rb +18 -0
 - data/examples/inbound_socket_events.rb +25 -0
 - data/examples/outbound_event_socket.rb +28 -0
 - data/freeswitcher.gemspec +155 -0
 - data/lib/fsr.rb +14 -4
 - data/lib/fsr/listener/outbound.rb +21 -10
 - data/lib/fsr/version.rb +3 -0
 - data/spec/helper.rb +11 -6
 - data/tasks/authors.rake +30 -0
 - data/tasks/bacon.rake +66 -0
 - data/tasks/changelog.rake +19 -0
 - data/tasks/copyright.rake +21 -0
 - data/tasks/gem.rake +23 -0
 - data/tasks/gem_installer.rake +76 -0
 - data/tasks/install_dependencies.rake +6 -0
 - data/tasks/manifest.rake +4 -0
 - data/tasks/rcov.rake +23 -0
 - data/tasks/release.rake +52 -0
 - data/tasks/reversion.rake +8 -0
 - data/tasks/setup.rake +16 -0
 - data/tasks/spec.rake +0 -59
 - data/tasks/yard.rake +4 -0
 - metadata +123 -106
 - data/examples/oes_demo.rb +0 -21
 - data/examples/play_and_get_test.rb +0 -35
 - data/tasks/package.rake +0 -29
 
    
        data/tasks/gem.rake
    ADDED
    
    | 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            desc "make a gemspec"
         
     | 
| 
      
 4 
     | 
    
         
            +
            task :gemspec => [:manifest, :changelog, :authors] do
         
     | 
| 
      
 5 
     | 
    
         
            +
              gemspec_file = "#{GEMSPEC.name}.gemspec"
         
     | 
| 
      
 6 
     | 
    
         
            +
              File.open(gemspec_file, 'w+'){|gs| gs.puts(GEMSPEC.to_ruby) }
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            desc "package and install from gemspec"
         
     | 
| 
      
 10 
     | 
    
         
            +
            task :install => [:gemspec] do
         
     | 
| 
      
 11 
     | 
    
         
            +
              sh "gem build #{GEMSPEC.name}.gemspec"
         
     | 
| 
      
 12 
     | 
    
         
            +
              sh "gem install #{GEMSPEC.name}-#{GEMSPEC.version}.gem"
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            desc "uninstall the gem"
         
     | 
| 
      
 16 
     | 
    
         
            +
            task :uninstall => [:clean] do
         
     | 
| 
      
 17 
     | 
    
         
            +
              sh %{gem uninstall -x #{GEMSPEC.name}}
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            Rake::GemPackageTask.new(GEMSPEC) do |p|
         
     | 
| 
      
 21 
     | 
    
         
            +
              p.need_tar = true
         
     | 
| 
      
 22 
     | 
    
         
            +
              p.need_zip = true
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            task :gem_installer do
         
     | 
| 
      
 2 
     | 
    
         
            +
              class GemInstaller
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize(options = {}, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @gems = []
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @options = options
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  run(&block)
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def run(&block)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  instance_eval(&block) if block_given?
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def gem(name, version = nil, options = {})
         
     | 
| 
      
 15 
     | 
    
         
            +
                  if version.respond_to?(:merge!)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    options = version
         
     | 
| 
      
 17 
     | 
    
         
            +
                  else
         
     | 
| 
      
 18 
     | 
    
         
            +
                    options[:version] = version
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  @gems << [name, options]
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def setup_gemspec(gemspec)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  gemspec.dependencies.each do |dependency|
         
     | 
| 
      
 26 
     | 
    
         
            +
                    dependency.version_requirements.as_list.each do |version|
         
     | 
| 
      
 27 
     | 
    
         
            +
                      gem(dependency.name, version)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    end
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  setup
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 35 
     | 
    
         
            +
                  require 'rubygems'
         
     | 
| 
      
 36 
     | 
    
         
            +
                  require 'rubygems/dependency_installer'
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  @gems.each do |name, options|
         
     | 
| 
      
 39 
     | 
    
         
            +
                    setup_gem(name, options)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def setup_gem(name, options, try_install = true)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  print "activating #{name} ... "
         
     | 
| 
      
 45 
     | 
    
         
            +
                  Gem.activate(name, *[options[:version]].compact)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  require(options[:lib] || name)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  puts "success."
         
     | 
| 
      
 48 
     | 
    
         
            +
                rescue LoadError => error
         
     | 
| 
      
 49 
     | 
    
         
            +
                  puts error
         
     | 
| 
      
 50 
     | 
    
         
            +
                  install_gem(name, options) if try_install
         
     | 
| 
      
 51 
     | 
    
         
            +
                  setup_gem(name, options, try_install = false)
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def install_gem(name, options)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  installer = Gem::DependencyInstaller.new(options)
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  temp_argv(options[:extconf]) do
         
     | 
| 
      
 58 
     | 
    
         
            +
                    print "Installing #{name} ... "
         
     | 
| 
      
 59 
     | 
    
         
            +
                    installer.install(name, options[:version])
         
     | 
| 
      
 60 
     | 
    
         
            +
                    puts "done."
         
     | 
| 
      
 61 
     | 
    
         
            +
                  end
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                def temp_argv(extconf)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  if extconf ||= @options[:extconf]
         
     | 
| 
      
 66 
     | 
    
         
            +
                    old_argv = ARGV.clone
         
     | 
| 
      
 67 
     | 
    
         
            +
                    ARGV.replace(extconf.split(' '))
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 73 
     | 
    
         
            +
                  ARGV.replace(old_argv) if extconf
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
    
        data/tasks/manifest.rake
    ADDED
    
    
    
        data/tasks/rcov.rake
    ADDED
    
    | 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            desc 'code coverage'
         
     | 
| 
      
 2 
     | 
    
         
            +
            task :rcov => :clean do
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs = PROJECT_SPECS
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              ignore = %w[ gem rack bacon ]
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              if RUBY_VERSION >= '1.8.7'
         
     | 
| 
      
 8 
     | 
    
         
            +
                ignore << 'begin_with' << 'end_with'
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              if RUBY_VERSION < '1.9'
         
     | 
| 
      
 11 
     | 
    
         
            +
                ignore << 'fiber'
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              ignored = ignore.join(',')
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              cmd = "rcov --aggregate coverage.data --sort coverage -t --%s -x '#{ignored}' %s"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              while spec = specs.shift
         
     | 
| 
      
 19 
     | 
    
         
            +
                puts '', "Gather coverage for #{spec} ..."
         
     | 
| 
      
 20 
     | 
    
         
            +
                html = specs.empty? ? 'html' : 'no-html'
         
     | 
| 
      
 21 
     | 
    
         
            +
                sh(cmd % [html, spec])
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
    
        data/tasks/release.rake
    ADDED
    
    | 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            namespace :release do
         
     | 
| 
      
 2 
     | 
    
         
            +
              task :all => [:release_github, :release_rubyforge]
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              desc 'Display instructions to release on github'
         
     | 
| 
      
 5 
     | 
    
         
            +
              task :github => [:reversion, :gemspec] do
         
     | 
| 
      
 6 
     | 
    
         
            +
                name, version = GEMSPEC.name, GEMSPEC.version
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                puts <<INSTRUCTIONS
         
     | 
| 
      
 9 
     | 
    
         
            +
            First add the relevant files:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            git add AUTHORS MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            Then commit them, tag the commit, and push:
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            git commit -m 'Version #{version}'
         
     | 
| 
      
 16 
     | 
    
         
            +
            git tag -a -m '#{version}' '#{version}'
         
     | 
| 
      
 17 
     | 
    
         
            +
            git push
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            INSTRUCTIONS
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              # TODO: Not tested
         
     | 
| 
      
 24 
     | 
    
         
            +
              desc 'Display instructions to release on rubyforge'
         
     | 
| 
      
 25 
     | 
    
         
            +
              task :rubyforge => [:reversion, :gemspec, :package] do
         
     | 
| 
      
 26 
     | 
    
         
            +
                name, version = GEMSPEC.name, GEMSPEC.version
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                puts <<INSTRUCTIONS
         
     | 
| 
      
 29 
     | 
    
         
            +
            To publish to rubyforge do following:
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            rubyforge login
         
     | 
| 
      
 32 
     | 
    
         
            +
            rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            After you have done these steps, see:
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            rake release:rubyforge_archives
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            INSTRUCTIONS
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              desc 'Display instructions to add archives after release:rubyforge'
         
     | 
| 
      
 42 
     | 
    
         
            +
              task :rubyforge_archives do
         
     | 
| 
      
 43 
     | 
    
         
            +
                name, version = GEMSPEC.name, GEMSPEC.version
         
     | 
| 
      
 44 
     | 
    
         
            +
                puts "Adding archives for distro packagers is:", ""
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                Dir["pkg/#{name}-#{version}.{tgz,zip}"].each do |file|
         
     | 
| 
      
 47 
     | 
    
         
            +
                  puts "rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                puts
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
    
        data/tasks/setup.rake
    ADDED
    
    
    
        data/tasks/spec.rake
    CHANGED
    
    | 
         @@ -1,59 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #          Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
         
     | 
| 
       2 
     | 
    
         
            -
            # All files in this distribution are subject to the terms of the Ruby license.
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require 'rake'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            desc 'Run all specs'
         
     | 
| 
       7 
     | 
    
         
            -
            task :spec => :setup do
         
     | 
| 
       8 
     | 
    
         
            -
              require 'open3'
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              specs = Dir['spec/fsr/**/*.rb']
         
     | 
| 
       11 
     | 
    
         
            -
              # specs.delete_if{|f| f =~ /cache\/common\.rb/ }
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              some_failed = false
         
     | 
| 
       14 
     | 
    
         
            -
              total = specs.size
         
     | 
| 
       15 
     | 
    
         
            -
              len = specs.sort.last.size
         
     | 
| 
       16 
     | 
    
         
            -
              left_format = "%4d/%d: %-#{len + 12}s"
         
     | 
| 
       17 
     | 
    
         
            -
              red, green = "\e[31m%s\e[0m", "\e[32m%s\e[0m"
         
     | 
| 
       18 
     | 
    
         
            -
              matcher = /(\d+) specifications \((\d+) requirements\), (\d+) failures, (\d+) errors/
         
     | 
| 
       19 
     | 
    
         
            -
              tt = ta = tf = te = 0
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              specs.each_with_index do |spec, idx|
         
     | 
| 
       22 
     | 
    
         
            -
                print(left_format % [idx + 1, total, spec])
         
     | 
| 
       23 
     | 
    
         
            -
                unless RUBY_PLATFORM.include?("mswin32")
         
     | 
| 
       24 
     | 
    
         
            -
                  Open3.popen3("#{RUBY} -rubygems #{spec}") do |sin, sout, serr|
         
     | 
| 
       25 
     | 
    
         
            -
                    out = sout.read
         
     | 
| 
       26 
     | 
    
         
            -
                    err = serr.read
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                    all = out.match(matcher).captures.map{|c| c.to_i }
         
     | 
| 
       29 
     | 
    
         
            -
                    tests, assertions, failures, errors = all
         
     | 
| 
       30 
     | 
    
         
            -
                    tt += tests; ta += assertions; tf += failures; te += errors
         
     | 
| 
       31 
     | 
    
         
            -
              
         
     | 
| 
       32 
     | 
    
         
            -
                    if tests == 0 || failures + errors > 0
         
     | 
| 
       33 
     | 
    
         
            -
                      some_failed = true
         
     | 
| 
       34 
     | 
    
         
            -
                      puts((red % "%5d tests, %d assertions, %d failures, %d errors") % all)
         
     | 
| 
       35 
     | 
    
         
            -
                      puts "", out, err, ""
         
     | 
| 
       36 
     | 
    
         
            -
                    else
         
     | 
| 
       37 
     | 
    
         
            -
                      puts((green % "%5d passed") % tests)
         
     | 
| 
       38 
     | 
    
         
            -
                    end
         
     | 
| 
       39 
     | 
    
         
            -
                  end 
         
     | 
| 
       40 
     | 
    
         
            -
                else
         
     | 
| 
       41 
     | 
    
         
            -
                  out = %x{#{RUBY} -rubygems #{spec}}
         
     | 
| 
       42 
     | 
    
         
            -
                  error = ""
         
     | 
| 
       43 
     | 
    
         
            -
                  all = out.match(matcher).captures.map{|c| c.to_i }
         
     | 
| 
       44 
     | 
    
         
            -
                  tests, assertions, failures, errors = all
         
     | 
| 
       45 
     | 
    
         
            -
                  tt += tests; ta += assertions; tf += failures; te += errors
         
     | 
| 
       46 
     | 
    
         
            -
              
         
     | 
| 
       47 
     | 
    
         
            -
                  if tests == 0 || failures + errors > 0
         
     | 
| 
       48 
     | 
    
         
            -
                    some_failed = true
         
     | 
| 
       49 
     | 
    
         
            -
                    puts((red % "%5d tests, %d assertions, %d failures, %d errors") % all)
         
     | 
| 
       50 
     | 
    
         
            -
                    puts "", out, err, ""
         
     | 
| 
       51 
     | 
    
         
            -
                  else
         
     | 
| 
       52 
     | 
    
         
            -
                    puts((green % "%5d passed") % tests)
         
     | 
| 
       53 
     | 
    
         
            -
                  end
         
     | 
| 
       54 
     | 
    
         
            -
                end
         
     | 
| 
       55 
     | 
    
         
            -
              end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
              puts "#{tt} specifications, (#{ta} requirements), #{tf} failures, #{te} errors"
         
     | 
| 
       58 
     | 
    
         
            -
              exit 1 if some_failed
         
     | 
| 
       59 
     | 
    
         
            -
            end
         
     | 
    
        data/tasks/yard.rake
    ADDED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: bougyman-freeswitcher
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jayson Vaughn
         
     | 
| 
         @@ -12,7 +12,7 @@ autorequire: 
     | 
|
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            date: 2009- 
     | 
| 
      
 15 
     | 
    
         
            +
            date: 2009-05-11 00:00:00 -07:00
         
     | 
| 
       16 
16 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       17 
17 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       18 
18 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -25,7 +25,7 @@ dependencies: 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       27 
27 
     | 
    
         
             
                version: 
         
     | 
| 
       28 
     | 
    
         
            -
            description: "========================================================= FreeSWITCHeR Copyright (c) 2009 The Rubyists (Jayson Vaughn, Tj Vanderpoel, Michael Fellinger, Kevin Berry)  Distributed under the terms of the MIT License. ==========================================================   
     | 
| 
      
 28 
     | 
    
         
            +
            description: "========================================================= FreeSWITCHeR Copyright (c) 2009 The Rubyists (Jayson Vaughn, Tj Vanderpoel, Michael Fellinger, Kevin Berry)  Distributed under the terms of the MIT License. ==========================================================  ABOUT ----- A ruby library for interacting with the \"FreeSWITCH\" (http://www.freeswitch.org) opensource telephony platform  REQUIREMENTS ------------ - ruby (>= 1.8) - eventmachine (If you wish to use Outbound and Inbound listener)  USAGE -----  An Outbound Event Listener Example that reads and returns DTMF input: --------------------------------------------------------------------  Simply just create a subclass of FSR::Listner::Outbound and all new calls/sessions will invoke the \"session_initiated\" callback method.  * NOTE:  FSR uses blocks within the 'session_inititated' method to ensure  that the next \"freeswich command\" is not executed until the previous  \"Freeswitch command\" has finished.  This is kicked off by \"answer do\"  require 'fsr' require 'fsr/listener/outbound'  class OutboundDemo < FSR::Listener::Outbound  def session_initiated exten = @session.headers[:caller_caller_id_number] FSR::Log.info \"*** Answering incoming call from #{exten}\"  answer do FSR::Log.info \"***Reading DTMF from #{exten}\" read(\"/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav\", 4, 10, \"input\", 7000) do FSR::Log.info \"*** Updating session for #{exten}\" update_session do FSR::Log.info \"***Success, grabbed #{@session.headers[:variable_input].strip} from #{exten}\" hangup #Hangup the call end end end  end  end  FSR.start_oes! OutboundDemo, :port => 8084, :host => \"127.0.0.1\"   An Inbound Event Socket Listener example using FreeSWITCHeR's hook system: --------------------------------------------------------------------------  require 'pp' require 'fsr' require \"fsr/listener/inbound\"  # EXAMPLE 1  # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!\" }  # EXAMPLE 2 # Define a method to handle CHANNEL_HANGUP events. def custom_channel_hangup_handler(event) FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel hangup. The event:\" pp event end  # This adds a hook for EXAMPLE 2 FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) }   # Start FSR Inbound Listener FSR.start_ies!(FSL::Inbound, :host => \"localhost\", :port => 8021)   An Inbound Event Socket Listener example using the on_event callback method instead of hooks: ---------------------------------------------------------------------------------------------  require 'pp' require 'fsr' require \"fsr/listener/inbound\"   class IesDemo < FSR::Listener::Inbound  def on_event(event) pp event.headers pp event.content[:event_name] end  end  FSR.start_ies!(IesDemo, :host => \"localhost\", :port => 8021)   An example of using FSR::CommandSocket to originate a new call in irb: ----------------------------------------------------------------------  irb(main):001:0> require 'fsr' => true  irb(main):002:0> FSR.load_all_commands => [:sofia, :originate]  irb(main):003:0> sock = FSR::CommandSocket.new => #<FSR::CommandSocket:0xb7a89104 @server=\"127.0.0.1\", @socket=#<TCPSocket:0xb7a8908c>, @port=\"8021\", @auth=\"ClueCon\">  irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new(\"user/bougyman\")).run => {\"Job-UUID\"=>\"732075a4-7dd5-4258-b124-6284a82a5ae7\", \"body\"=>\"\", \"Content-Type\"=>\"command/reply\", \"Reply-Text\"=>\"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7\"}    SUPPORT ------- Home page at http://code.rubyists.com/projects/fs #rubyists on FreeNode"
         
     | 
| 
       29 
29 
     | 
    
         
             
            email: FreeSWITCHeR@rubyists.com
         
     | 
| 
       30 
30 
     | 
    
         
             
            executables: []
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
         @@ -34,12 +34,14 @@ extensions: [] 
     | 
|
| 
       34 
34 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            files: 
         
     | 
| 
      
 37 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 38 
     | 
    
         
            +
            - AUTHORS
         
     | 
| 
      
 39 
     | 
    
         
            +
            - CHANGELOG
         
     | 
| 
       37 
40 
     | 
    
         
             
            - License.txt
         
     | 
| 
      
 41 
     | 
    
         
            +
            - MANIFEST
         
     | 
| 
       38 
42 
     | 
    
         
             
            - NEWS
         
     | 
| 
       39 
43 
     | 
    
         
             
            - README
         
     | 
| 
       40 
44 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       41 
     | 
    
         
            -
            - examples
         
     | 
| 
       42 
     | 
    
         
            -
            - examples/bin
         
     | 
| 
       43 
45 
     | 
    
         
             
            - examples/bin/cmd_demo.rb
         
     | 
| 
       44 
46 
     | 
    
         
             
            - examples/bin/dtmf_test.rb
         
     | 
| 
       45 
47 
     | 
    
         
             
            - examples/bin/ies_demo.rb
         
     | 
| 
         @@ -48,11 +50,12 @@ files: 
     | 
|
| 
       48 
50 
     | 
    
         
             
            - examples/dtmf_test.rb
         
     | 
| 
       49 
51 
     | 
    
         
             
            - examples/ies_demo.rb
         
     | 
| 
       50 
52 
     | 
    
         
             
            - examples/ies_demo_with_hook.rb
         
     | 
| 
       51 
     | 
    
         
            -
            - examples/ 
     | 
| 
       52 
     | 
    
         
            -
            - examples/ 
     | 
| 
       53 
     | 
    
         
            -
            -  
     | 
| 
       54 
     | 
    
         
            -
            -  
     | 
| 
       55 
     | 
    
         
            -
            - lib/fsr 
     | 
| 
      
 53 
     | 
    
         
            +
            - examples/inbound_event_socket.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - examples/inbound_socket_events.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - examples/outbound_event_socket.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - freeswitcher.gemspec
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/fsr.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/fsr/app.rb
         
     | 
| 
       56 
59 
     | 
    
         
             
            - lib/fsr/app/answer.rb
         
     | 
| 
       57 
60 
     | 
    
         
             
            - lib/fsr/app/bridge.rb
         
     | 
| 
       58 
61 
     | 
    
         
             
            - lib/fsr/app/conference.rb
         
     | 
| 
         @@ -71,42 +74,67 @@ files: 
     | 
|
| 
       71 
74 
     | 
    
         
             
            - lib/fsr/app/uuid_dump.rb
         
     | 
| 
       72 
75 
     | 
    
         
             
            - lib/fsr/app/uuid_getvar.rb
         
     | 
| 
       73 
76 
     | 
    
         
             
            - lib/fsr/app/uuid_setvar.rb
         
     | 
| 
       74 
     | 
    
         
            -
            - lib/fsr/ 
     | 
| 
       75 
     | 
    
         
            -
            - lib/fsr/cmd
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/fsr/cmd.rb
         
     | 
| 
       76 
78 
     | 
    
         
             
            - lib/fsr/cmd/calls.rb
         
     | 
| 
       77 
79 
     | 
    
         
             
            - lib/fsr/cmd/fsctl.rb
         
     | 
| 
       78 
80 
     | 
    
         
             
            - lib/fsr/cmd/originate.rb
         
     | 
| 
       79 
     | 
    
         
            -
            - lib/fsr/cmd/sofia
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/fsr/cmd/sofia.rb
         
     | 
| 
       80 
82 
     | 
    
         
             
            - lib/fsr/cmd/sofia/profile.rb
         
     | 
| 
       81 
83 
     | 
    
         
             
            - lib/fsr/cmd/sofia/status.rb
         
     | 
| 
       82 
     | 
    
         
            -
            - lib/fsr/cmd/sofia.rb
         
     | 
| 
       83 
84 
     | 
    
         
             
            - lib/fsr/cmd/sofia_contact.rb
         
     | 
| 
       84 
85 
     | 
    
         
             
            - lib/fsr/cmd/status.rb
         
     | 
| 
       85 
     | 
    
         
            -
            - lib/fsr/cmd.rb
         
     | 
| 
       86 
86 
     | 
    
         
             
            - lib/fsr/command_socket.rb
         
     | 
| 
       87 
     | 
    
         
            -
            - lib/fsr/database
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/fsr/database.rb
         
     | 
| 
       88 
88 
     | 
    
         
             
            - lib/fsr/database/call_limit.rb
         
     | 
| 
       89 
89 
     | 
    
         
             
            - lib/fsr/database/core.rb
         
     | 
| 
       90 
90 
     | 
    
         
             
            - lib/fsr/database/sofia_reg_external.rb
         
     | 
| 
       91 
91 
     | 
    
         
             
            - lib/fsr/database/sofia_reg_internal.rb
         
     | 
| 
       92 
92 
     | 
    
         
             
            - lib/fsr/database/voicemail_default.rb
         
     | 
| 
       93 
     | 
    
         
            -
            - lib/fsr/database.rb
         
     | 
| 
       94 
93 
     | 
    
         
             
            - lib/fsr/event_socket.rb
         
     | 
| 
       95 
94 
     | 
    
         
             
            - lib/fsr/fake_socket.rb
         
     | 
| 
       96 
     | 
    
         
            -
            - lib/fsr/listener
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/fsr/listener.rb
         
     | 
| 
       97 
96 
     | 
    
         
             
            - lib/fsr/listener/header_and_content_response.rb
         
     | 
| 
       98 
     | 
    
         
            -
            - lib/fsr/listener/inbound
         
     | 
| 
       99 
     | 
    
         
            -
            - lib/fsr/listener/inbound/event.rb
         
     | 
| 
       100 
97 
     | 
    
         
             
            - lib/fsr/listener/inbound.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - lib/fsr/listener/inbound/event.rb
         
     | 
| 
       101 
99 
     | 
    
         
             
            - lib/fsr/listener/outbound.rb
         
     | 
| 
       102 
100 
     | 
    
         
             
            - lib/fsr/listener/outbound.rb.orig
         
     | 
| 
       103 
     | 
    
         
            -
            - lib/fsr/listener.rb
         
     | 
| 
       104 
     | 
    
         
            -
            - lib/fsr/model
         
     | 
| 
       105 
101 
     | 
    
         
             
            - lib/fsr/model/call.rb
         
     | 
| 
       106 
     | 
    
         
            -
            - lib/fsr.rb
         
     | 
| 
       107 
     | 
    
         
            -
            - tasks
         
     | 
| 
       108 
     | 
    
         
            -
            - tasks/ 
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/fsr/version.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - tasks/authors.rake
         
     | 
| 
      
 104 
     | 
    
         
            +
            - tasks/bacon.rake
         
     | 
| 
      
 105 
     | 
    
         
            +
            - tasks/changelog.rake
         
     | 
| 
      
 106 
     | 
    
         
            +
            - tasks/copyright.rake
         
     | 
| 
      
 107 
     | 
    
         
            +
            - tasks/gem.rake
         
     | 
| 
      
 108 
     | 
    
         
            +
            - tasks/gem_installer.rake
         
     | 
| 
      
 109 
     | 
    
         
            +
            - tasks/install_dependencies.rake
         
     | 
| 
      
 110 
     | 
    
         
            +
            - tasks/manifest.rake
         
     | 
| 
      
 111 
     | 
    
         
            +
            - tasks/rcov.rake
         
     | 
| 
      
 112 
     | 
    
         
            +
            - tasks/release.rake
         
     | 
| 
      
 113 
     | 
    
         
            +
            - tasks/reversion.rake
         
     | 
| 
      
 114 
     | 
    
         
            +
            - tasks/setup.rake
         
     | 
| 
       109 
115 
     | 
    
         
             
            - tasks/spec.rake
         
     | 
| 
      
 116 
     | 
    
         
            +
            - tasks/yard.rake
         
     | 
| 
      
 117 
     | 
    
         
            +
            - spec/helper.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/fsr/app.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - spec/fsr/app/bridge.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - spec/fsr/app/conference.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - spec/fsr/app/fifo.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - spec/fsr/app/hangup.rb
         
     | 
| 
      
 123 
     | 
    
         
            +
            - spec/fsr/app/limit.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - spec/fsr/app/log.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - spec/fsr/app/play_and_get_digits.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - spec/fsr/app/playback.rb
         
     | 
| 
      
 127 
     | 
    
         
            +
            - spec/fsr/app/set.rb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - spec/fsr/app/transfer.rb
         
     | 
| 
      
 129 
     | 
    
         
            +
            - spec/fsr/cmd.rb
         
     | 
| 
      
 130 
     | 
    
         
            +
            - spec/fsr/cmd/calls.rb
         
     | 
| 
      
 131 
     | 
    
         
            +
            - spec/fsr/cmd/originate.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - spec/fsr/cmd/sofia.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - spec/fsr/cmd/sofia/profile.rb
         
     | 
| 
      
 134 
     | 
    
         
            +
            - spec/fsr/listener.rb
         
     | 
| 
      
 135 
     | 
    
         
            +
            - spec/fsr/listener/inbound.rb
         
     | 
| 
      
 136 
     | 
    
         
            +
            - spec/fsr/listener/outbound.rb
         
     | 
| 
      
 137 
     | 
    
         
            +
            - spec/fsr/loading.rb
         
     | 
| 
       110 
138 
     | 
    
         
             
            has_rdoc: false
         
     | 
| 
       111 
139 
     | 
    
         
             
            homepage: http://code.rubyists.com/projects/fs
         
     | 
| 
       112 
140 
     | 
    
         
             
            post_install_message: |
         
     | 
| 
         @@ -116,108 +144,88 @@ post_install_message: | 
     | 
|
| 
       116 
144 
     | 
    
         
             
              Distributed under the terms of the MIT License.
         
     | 
| 
       117 
145 
     | 
    
         
             
              ==========================================================
         
     | 
| 
       118 
146 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
               
     | 
| 
      
 147 
     | 
    
         
            +
              ABOUT
         
     | 
| 
       120 
148 
     | 
    
         
             
              -----
         
     | 
| 
       121 
     | 
    
         
            -
              *** STILL UNDER HEAVY DEVELOPMENT ***
         
     | 
| 
       122 
     | 
    
         
            -
              
         
     | 
| 
       123 
149 
     | 
    
         
             
              A ruby library for interacting with the "FreeSWITCH" (http://www.freeswitch.org) opensource telephony platform
         
     | 
| 
       124 
150 
     | 
    
         | 
| 
       125 
     | 
    
         
            -
               
     | 
| 
       126 
     | 
    
         
            -
              
         
     | 
| 
       127 
     | 
    
         
            -
              Requirements
         
     | 
| 
      
 151 
     | 
    
         
            +
              REQUIREMENTS
         
     | 
| 
       128 
152 
     | 
    
         
             
              ------------
         
     | 
| 
       129 
153 
     | 
    
         
             
              - ruby (>= 1.8)
         
     | 
| 
       130 
154 
     | 
    
         
             
              - eventmachine (If you wish to use Outbound and Inbound listener)
         
     | 
| 
       131 
155 
     | 
    
         | 
| 
       132 
     | 
    
         
            -
               
     | 
| 
      
 156 
     | 
    
         
            +
              USAGE
         
     | 
| 
       133 
157 
     | 
    
         
             
              -----
         
     | 
| 
       134 
158 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
               
     | 
| 
       136 
     | 
    
         
            -
              
         
     | 
| 
       137 
     | 
    
         
            -
                irb(main):001:0> require 'fsr'
         
     | 
| 
       138 
     | 
    
         
            -
                => true
         
     | 
| 
       139 
     | 
    
         
            -
              
         
     | 
| 
       140 
     | 
    
         
            -
                irb(main):002:0> FSR.load_all_commands
         
     | 
| 
       141 
     | 
    
         
            -
                => [:sofia, :originate]
         
     | 
| 
       142 
     | 
    
         
            -
              
         
     | 
| 
       143 
     | 
    
         
            -
                irb(main):003:0> sock = FSR::CommandSocket.new
         
     | 
| 
       144 
     | 
    
         
            -
                => #<FSR::CommandSocket:0xb7a89104 @server="127.0.0.1", @socket=#<TCPSocket:0xb7a8908c>, @port="8021", @auth="ClueCon">
         
     | 
| 
      
 159 
     | 
    
         
            +
              An Outbound Event Listener Example that reads and returns DTMF input:
         
     | 
| 
      
 160 
     | 
    
         
            +
              --------------------------------------------------------------------
         
     | 
| 
       145 
161 
     | 
    
         | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
      
 162 
     | 
    
         
            +
              Simply just create a subclass of FSR::Listner::Outbound and all
         
     | 
| 
      
 163 
     | 
    
         
            +
              new calls/sessions will invoke the "session_initiated" callback method.
         
     | 
| 
       148 
164 
     | 
    
         | 
| 
       149 
     | 
    
         
            -
              
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
              
         
     | 
| 
       152 
     | 
    
         
            -
                  #!/usr/bin/env ruby
         
     | 
| 
      
 165 
     | 
    
         
            +
                * NOTE:  FSR uses blocks within the 'session_inititated' method to ensure 
         
     | 
| 
      
 166 
     | 
    
         
            +
                         that the next "freeswich command" is not executed until the previous 
         
     | 
| 
      
 167 
     | 
    
         
            +
                         "Freeswitch command" has finished.  This is kicked off by "answer do"
         
     | 
| 
       153 
168 
     | 
    
         | 
| 
       154 
169 
     | 
    
         
             
                  require 'fsr'
         
     | 
| 
       155 
     | 
    
         
            -
                  require  
     | 
| 
      
 170 
     | 
    
         
            +
                  require 'fsr/listener/outbound'
         
     | 
| 
       156 
171 
     | 
    
         | 
| 
       157 
     | 
    
         
            -
                  class  
     | 
| 
      
 172 
     | 
    
         
            +
                  class OutboundDemo < FSR::Listener::Outbound
         
     | 
| 
       158 
173 
     | 
    
         | 
| 
       159 
174 
     | 
    
         
             
                    def session_initiated
         
     | 
| 
       160 
     | 
    
         
            -
                       
     | 
| 
       161 
     | 
    
         
            -
                      FSR::Log.info "*** Answering incoming call from #{ 
     | 
| 
       162 
     | 
    
         
            -
                      answer # Answer the call
         
     | 
| 
       163 
     | 
    
         
            -
                      set("hangup_after_bridge", "true")# Set a variable
         
     | 
| 
       164 
     | 
    
         
            -
                      speak 'Hello, This is your phone switch.  Have a great day' # use mod_flite to speak
         
     | 
| 
       165 
     | 
    
         
            -
                      hangup # Hangup the call
         
     | 
| 
       166 
     | 
    
         
            -
                    end
         
     | 
| 
      
 175 
     | 
    
         
            +
                      exten = @session.headers[:caller_caller_id_number]
         
     | 
| 
      
 176 
     | 
    
         
            +
                      FSR::Log.info "*** Answering incoming call from #{exten}"
         
     | 
| 
       167 
177 
     | 
    
         | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
      
 178 
     | 
    
         
            +
                      answer do
         
     | 
| 
      
 179 
     | 
    
         
            +
                        FSR::Log.info "***Reading DTMF from #{exten}"
         
     | 
| 
      
 180 
     | 
    
         
            +
                        read("/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav", 4, 10, "input", 7000) do
         
     | 
| 
      
 181 
     | 
    
         
            +
                          FSR::Log.info "*** Updating session for #{exten}"
         
     | 
| 
      
 182 
     | 
    
         
            +
                          update_session do
         
     | 
| 
      
 183 
     | 
    
         
            +
                            FSR::Log.info "***Success, grabbed #{@session.headers[:variable_input].strip} from #{exten}"
         
     | 
| 
      
 184 
     | 
    
         
            +
                            hangup #Hangup the call
         
     | 
| 
      
 185 
     | 
    
         
            +
                          end
         
     | 
| 
      
 186 
     | 
    
         
            +
                        end
         
     | 
| 
      
 187 
     | 
    
         
            +
                      end
         
     | 
| 
       169 
188 
     | 
    
         | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
      
 189 
     | 
    
         
            +
                    end
         
     | 
| 
       171 
190 
     | 
    
         | 
| 
      
 191 
     | 
    
         
            +
                  end
         
     | 
| 
       172 
192 
     | 
    
         | 
| 
      
 193 
     | 
    
         
            +
                  FSR.start_oes! OutboundDemo, :port => 8084, :host => "127.0.0.1"
         
     | 
| 
       173 
194 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
              Example of creating an Outbound Eventsocket listener that can read DTMF input and keep state:
         
     | 
| 
       175 
195 
     | 
    
         | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
      
 196 
     | 
    
         
            +
              An Inbound Event Socket Listener example using FreeSWITCHeR's hook system:
         
     | 
| 
      
 197 
     | 
    
         
            +
              --------------------------------------------------------------------------
         
     | 
| 
       177 
198 
     | 
    
         | 
| 
      
 199 
     | 
    
         
            +
                  require 'pp'
         
     | 
| 
       178 
200 
     | 
    
         
             
                  require 'fsr'
         
     | 
| 
       179 
     | 
    
         
            -
                  require  
     | 
| 
       180 
     | 
    
         
            -
              
         
     | 
| 
       181 
     | 
    
         
            -
                  FSR.load_all_applications
         
     | 
| 
       182 
     | 
    
         
            -
                  FSR.load_all_commands
         
     | 
| 
       183 
     | 
    
         
            -
              
         
     | 
| 
       184 
     | 
    
         
            -
                  class DtmfDemo < FSR::Listener::Outbound
         
     | 
| 
       185 
     | 
    
         
            -
              
         
     | 
| 
       186 
     | 
    
         
            -
                    def session_initiated
         
     | 
| 
       187 
     | 
    
         
            -
                      exten = @session.headers[:caller_caller_id_number]
         
     | 
| 
       188 
     | 
    
         
            -
                      FSR::Log.info "*** Answering incoming call from #{exten}"
         
     | 
| 
       189 
     | 
    
         
            -
                      answer # Answer the call
         
     | 
| 
       190 
     | 
    
         
            -
                    end
         
     | 
| 
      
 201 
     | 
    
         
            +
                  require "fsr/listener/inbound"
         
     | 
| 
       191 
202 
     | 
    
         | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
                      when 1
         
     | 
| 
       196 
     | 
    
         
            -
                        FSR::Log.info "*** Reading dtmf for #{exten}"
         
     | 
| 
       197 
     | 
    
         
            -
                        read "/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav",4,10,"test",15000 # read test
         
     | 
| 
       198 
     | 
    
         
            -
                      when 2
         
     | 
| 
       199 
     | 
    
         
            -
                        FSR::Log.info "*** updating session for #{exten}"
         
     | 
| 
       200 
     | 
    
         
            -
                        update_session
         
     | 
| 
       201 
     | 
    
         
            -
                      when 3
         
     | 
| 
       202 
     | 
    
         
            -
                        FSR::Log.info "** Success, grabbed #{@session.headers[:variable_test].strip} from #{exten}"
         
     | 
| 
       203 
     | 
    
         
            -
                        FSR::Log.info "*** Hanging up call"
         
     | 
| 
       204 
     | 
    
         
            -
                        hangup # Hangup the call
         
     | 
| 
       205 
     | 
    
         
            -
                      end
         
     | 
| 
       206 
     | 
    
         
            -
                    end
         
     | 
| 
      
 203 
     | 
    
         
            +
                  # EXAMPLE 1 
         
     | 
| 
      
 204 
     | 
    
         
            +
                  # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example
         
     | 
| 
      
 205 
     | 
    
         
            +
                  FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info "*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!" }
         
     | 
| 
       207 
206 
     | 
    
         | 
| 
      
 207 
     | 
    
         
            +
                  # EXAMPLE 2
         
     | 
| 
      
 208 
     | 
    
         
            +
                  # Define a method to handle CHANNEL_HANGUP events.
         
     | 
| 
      
 209 
     | 
    
         
            +
                  def custom_channel_hangup_handler(event)
         
     | 
| 
      
 210 
     | 
    
         
            +
                    FSR::Log.info "*** [#{event.content[:unique_id]}] Channel hangup. The event:"
         
     | 
| 
      
 211 
     | 
    
         
            +
                    pp event
         
     | 
| 
       208 
212 
     | 
    
         
             
                  end
         
     | 
| 
       209 
213 
     | 
    
         | 
| 
       210 
     | 
    
         
            -
                   
     | 
| 
      
 214 
     | 
    
         
            +
                  # This adds a hook for EXAMPLE 2
         
     | 
| 
      
 215 
     | 
    
         
            +
                  FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) }
         
     | 
| 
       211 
216 
     | 
    
         | 
| 
       212 
217 
     | 
    
         | 
| 
      
 218 
     | 
    
         
            +
                  # Start FSR Inbound Listener
         
     | 
| 
      
 219 
     | 
    
         
            +
                  FSR.start_ies!(FSL::Inbound, :host => "localhost", :port => 8021)
         
     | 
| 
       213 
220 
     | 
    
         | 
| 
       214 
     | 
    
         
            -
              Example of creating an Inbound Eventsocket listener:
         
     | 
| 
       215 
221 
     | 
    
         | 
| 
       216 
     | 
    
         
            -
             
     | 
| 
      
 222 
     | 
    
         
            +
              An Inbound Event Socket Listener example using the on_event callback method instead of hooks:
         
     | 
| 
      
 223 
     | 
    
         
            +
              ---------------------------------------------------------------------------------------------
         
     | 
| 
       217 
224 
     | 
    
         | 
| 
       218 
     | 
    
         
            -
                  require 'fsr'
         
     | 
| 
       219 
     | 
    
         
            -
                  require 'fsr/listener/inbound'
         
     | 
| 
       220 
225 
     | 
    
         
             
                  require 'pp'
         
     | 
| 
      
 226 
     | 
    
         
            +
                  require 'fsr'
         
     | 
| 
      
 227 
     | 
    
         
            +
                  require "fsr/listener/inbound"
         
     | 
| 
      
 228 
     | 
    
         
            +
              
         
     | 
| 
       221 
229 
     | 
    
         | 
| 
       222 
230 
     | 
    
         
             
                  class IesDemo < FSR::Listener::Inbound
         
     | 
| 
       223 
231 
     | 
    
         | 
| 
         @@ -231,8 +239,24 @@ post_install_message: | 
     | 
|
| 
       231 
239 
     | 
    
         
             
                  FSR.start_ies!(IesDemo, :host => "localhost", :port => 8021)
         
     | 
| 
       232 
240 
     | 
    
         | 
| 
       233 
241 
     | 
    
         | 
| 
      
 242 
     | 
    
         
            +
              An example of using FSR::CommandSocket to originate a new call in irb:
         
     | 
| 
      
 243 
     | 
    
         
            +
              ----------------------------------------------------------------------
         
     | 
| 
      
 244 
     | 
    
         
            +
              
         
     | 
| 
      
 245 
     | 
    
         
            +
                  irb(main):001:0> require 'fsr'
         
     | 
| 
      
 246 
     | 
    
         
            +
                  => true
         
     | 
| 
      
 247 
     | 
    
         
            +
              
         
     | 
| 
      
 248 
     | 
    
         
            +
                  irb(main):002:0> FSR.load_all_commands
         
     | 
| 
      
 249 
     | 
    
         
            +
                  => [:sofia, :originate]
         
     | 
| 
      
 250 
     | 
    
         
            +
              
         
     | 
| 
      
 251 
     | 
    
         
            +
                  irb(main):003:0> sock = FSR::CommandSocket.new
         
     | 
| 
      
 252 
     | 
    
         
            +
                  => #<FSR::CommandSocket:0xb7a89104 @server="127.0.0.1", @socket=#<TCPSocket:0xb7a8908c>, @port="8021", @auth="ClueCon">
         
     | 
| 
      
 253 
     | 
    
         
            +
              
         
     | 
| 
      
 254 
     | 
    
         
            +
                  irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new("user/bougyman")).run
         
     | 
| 
      
 255 
     | 
    
         
            +
                  => {"Job-UUID"=>"732075a4-7dd5-4258-b124-6284a82a5ae7", "body"=>"", "Content-Type"=>"command/reply", "Reply-Text"=>"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7"}
         
     | 
| 
      
 256 
     | 
    
         
            +
              
         
     | 
| 
       234 
257 
     | 
    
         | 
| 
       235 
     | 
    
         
            -
               
     | 
| 
      
 258 
     | 
    
         
            +
              
         
     | 
| 
      
 259 
     | 
    
         
            +
              SUPPORT
         
     | 
| 
       236 
260 
     | 
    
         
             
              -------
         
     | 
| 
       237 
261 
     | 
    
         
             
              Home page at http://code.rubyists.com/projects/fs
         
     | 
| 
       238 
262 
     | 
    
         
             
              #rubyists on FreeNode
         
     | 
| 
         @@ -255,15 +279,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       255 
279 
     | 
    
         
             
              version: 
         
     | 
| 
       256 
280 
     | 
    
         
             
            requirements: []
         
     | 
| 
       257 
281 
     | 
    
         | 
| 
       258 
     | 
    
         
            -
            rubyforge_project: 
         
     | 
| 
      
 282 
     | 
    
         
            +
            rubyforge_project: freeswitcher
         
     | 
| 
       259 
283 
     | 
    
         
             
            rubygems_version: 1.2.0
         
     | 
| 
       260 
284 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       261 
285 
     | 
    
         
             
            specification_version: 2
         
     | 
| 
       262 
286 
     | 
    
         
             
            summary: A library for interacting with the "FreeSWITCH":http://freeswitch.org telephony platform
         
     | 
| 
       263 
287 
     | 
    
         
             
            test_files: 
         
     | 
| 
       264 
     | 
    
         
            -
            - spec
         
     | 
| 
       265 
     | 
    
         
            -
            - spec/fsr
         
     | 
| 
       266 
     | 
    
         
            -
            - spec/fsr/app
         
     | 
| 
      
 288 
     | 
    
         
            +
            - spec/fsr/app.rb
         
     | 
| 
       267 
289 
     | 
    
         
             
            - spec/fsr/app/bridge.rb
         
     | 
| 
       268 
290 
     | 
    
         
             
            - spec/fsr/app/conference.rb
         
     | 
| 
       269 
291 
     | 
    
         
             
            - spec/fsr/app/fifo.rb
         
     | 
| 
         @@ -274,17 +296,12 @@ test_files: 
     | 
|
| 
       274 
296 
     | 
    
         
             
            - spec/fsr/app/playback.rb
         
     | 
| 
       275 
297 
     | 
    
         
             
            - spec/fsr/app/set.rb
         
     | 
| 
       276 
298 
     | 
    
         
             
            - spec/fsr/app/transfer.rb
         
     | 
| 
       277 
     | 
    
         
            -
            - spec/fsr/ 
     | 
| 
       278 
     | 
    
         
            -
            - spec/fsr/cmd
         
     | 
| 
      
 299 
     | 
    
         
            +
            - spec/fsr/cmd.rb
         
     | 
| 
       279 
300 
     | 
    
         
             
            - spec/fsr/cmd/calls.rb
         
     | 
| 
       280 
301 
     | 
    
         
             
            - spec/fsr/cmd/originate.rb
         
     | 
| 
       281 
     | 
    
         
            -
            - spec/fsr/cmd/sofia
         
     | 
| 
       282 
     | 
    
         
            -
            - spec/fsr/cmd/sofia/profile.rb
         
     | 
| 
       283 
302 
     | 
    
         
             
            - spec/fsr/cmd/sofia.rb
         
     | 
| 
       284 
     | 
    
         
            -
            - spec/fsr/cmd.rb
         
     | 
| 
       285 
     | 
    
         
            -
            - spec/fsr/listener
         
     | 
| 
      
 303 
     | 
    
         
            +
            - spec/fsr/cmd/sofia/profile.rb
         
     | 
| 
      
 304 
     | 
    
         
            +
            - spec/fsr/listener.rb
         
     | 
| 
       286 
305 
     | 
    
         
             
            - spec/fsr/listener/inbound.rb
         
     | 
| 
       287 
306 
     | 
    
         
             
            - spec/fsr/listener/outbound.rb
         
     | 
| 
       288 
     | 
    
         
            -
            - spec/fsr/listener.rb
         
     | 
| 
       289 
307 
     | 
    
         
             
            - spec/fsr/loading.rb
         
     | 
| 
       290 
     | 
    
         
            -
            - spec/helper.rb
         
     |