class Punchblock::Translator::Asterisk::Component::Asterisk::AGICommand

Public Instance Methods

execute() click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/agi_command.rb, line 13
def execute
  @agi.execute ami_client
  send_ref
rescue RubyAMI::Error
  set_node_response false
rescue ChannelGoneError
  set_node_response ProtocolError.new.setup(:item_not_found, "Could not find a call with ID #{call_id}", call_id)
end
handle_ami_event(event) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/agi_command.rb, line 22
def handle_ami_event(event)
  if (event.name == 'AsyncAGI' && event['SubEvent'] == 'Exec') || event.name == 'AsyncAGIExec'
    send_complete_event success_reason(event)
    if @component_node.name == 'ASYNCAGI BREAK' && @call.channel_var('PUNCHBLOCK_END_ON_ASYNCAGI_BREAK')
      @call.handle_hangup_event nil, event.best_time
    end
  end
end
setup() click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/agi_command.rb, line 9
def setup
  @agi = Punchblock::Translator::Asterisk::AGICommand.new id, @call.channel, @component_node.name, *@component_node.params
end

Private Instance Methods

success_reason(event) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/agi_command.rb, line 33
def success_reason(event)
  result = @agi.parse_result event
  Punchblock::Component::Asterisk::AGI::Command::Complete::Success.new result
end