lib/adhearsion/outbound_call.rb in adhearsion-2.1.3 vs lib/adhearsion/outbound_call.rb in adhearsion-2.2.0

- old
+ new

@@ -13,19 +13,20 @@ # By default, the call will enter the router when it is answered, similar to incoming calls. Alternatively, a controller may be specified. # # @param [String] to the URI of the party to dial # @param [Hash] opts modifier options # @option opts [Class] :controller the controller to execute when the call is answered + # @option opts [Hash] :controller_metadata key-value pairs of metadata to set on the controller # @yield Call controller routine in block form # # @return [OutboundCall] the ringing call # # @see #dial for more possible options # def originate(to, opts = {}, &controller_block) new.tap do |call| - call.execute_controller_or_router_on_answer opts.delete(:controller), &controller_block + call.execute_controller_or_router_on_answer opts.delete(:controller), opts.delete(:controller_metadata), &controller_block call.dial to, opts end end end @@ -67,10 +68,11 @@ 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 + Adhearsion::Events.trigger_immediately :call_dialed, current_actor end end def run_router catching_standard_errors do @@ -91,12 +93,13 @@ block.call event throw :pass end end - def execute_controller_or_router_on_answer(controller, &controller_block) + def execute_controller_or_router_on_answer(controller, metadata = {}, &controller_block) if controller || controller_block route = Router::Route.new 'inbound', controller, &controller_block + route.controller_metadata = metadata on_answer { route.dispatch current_actor } else run_router_on_answer end end