class Punchblock::Translator::Asterisk::Component::Asterisk::AMIAction
Attributes
translator[R]
Public Class Methods
new(component_node, translator, ami_client)
click to toggle source
Calls superclass method
Punchblock::Translator::Asterisk::Component::Component::new
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 11 def initialize(component_node, translator, ami_client) super component_node, nil @translator, @ami_client = translator, ami_client end
Public Instance Methods
execute()
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 16 def execute send_ref response = send_action final_event = send_events response send_complete_event success_reason(response, final_event) rescue RubyAMI::Error => e send_complete_event error_reason(e) end
Private Instance Methods
action_headers()
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 56 def action_headers headers = {} @component_node.params.each_pair do |key, value| headers[key.to_s.capitalize] = value end headers end
error_reason(response)
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 31 def error_reason(response) Punchblock::Event::Complete::Error.new details: response.message end
pb_event_from_ami_event(ami_event)
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 50 def pb_event_from_ami_event(ami_event) headers = ami_event.headers headers.delete 'ActionID' Event::Asterisk::AMI::Event.new name: ami_event.name, headers: headers end
send_action()
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 27 def send_action @ami_client.send_action @component_node.name, action_headers end
send_events(response)
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 42 def send_events(response) final_event = response.events.pop response.events.each do |e| send_event pb_event_from_ami_event(e) end final_event end
success_reason(response, final_event = nil)
click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 35 def success_reason(response, final_event = nil) headers = response.headers headers.merge! final_event.headers if final_event headers.delete 'ActionID' Punchblock::Component::Asterisk::AMI::Action::Complete::Success.new message: headers.delete('Message'), text_body: response.text_body, headers: headers end