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