Sha256: 99450288a851b29d7ca93d0212e8a419aec2ab00d3c4a8bba6fb24be067772ae

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

module Adhearsion
  class OutboundCall < Call
    attr_reader :dial_command

    delegate :to, :from, :to => :dial_command, :allow_nil => true

    class << self
      def originate(to, opts = {})
        new.tap do |call|
          call.run_router_on_answer
          call.dial to, opts
        end
      end
    end

    def id
      dial_command.call_id if dial_command
    end

    def client
      PunchblockPlugin::Initializer.client
    end

    def accept(*args)
    end

    def answer(*args)
    end

    def reject(*args)
    end

    def dial(to, options = {})
      options.merge! :to => to
      if options[:timeout]
        wait_timeout = options[:timeout]
        options[:timeout] = options[:timeout] * 1000
      else
        wait_timeout = 60
      end

      write_and_await_response(Punchblock::Command::Dial.new(options), wait_timeout).tap do |dial_command|
        @dial_command = dial_command
        Adhearsion.active_calls << current_actor
      end
    end

    def run_router
      catching_standard_errors do
        dispatcher = Adhearsion.router.handle current_actor
        dispatcher.call current_actor
      end
    end

    def run_router_on_answer
      register_event_handler :class => Punchblock::Event::Answered do |event|
        run_router
        throw :pass
      end
    end

    def on_answer(&block)
      register_event_handler :class => Punchblock::Event::Answered do |event|
        block.call event
        throw :pass
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
adhearsion-2.0.0.beta1 lib/adhearsion/outbound_call.rb
adhearsion-2.0.0.alpha3 lib/adhearsion/outbound_call.rb